[Flink] Flink作业报错:Caused by: The connector is trying to read binlog starting at GTIDs ..., but this

Posted 千千寰宇

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了[Flink] Flink作业报错:Caused by: The connector is trying to read binlog starting at GTIDs ..., but this 相关的知识,希望对你有一定的参考价值。

这个问题,属于偶现问题。通常几个月才偶现一次。
因为上周五又出现了一次,且团队内多位小伙伴都遇到过。故此,这次特别记录下,以加强印象。

1 问题描述

Flink作业报错:Caused by: The connector is trying to read binlog starting at GTIDs ..., but this is no longer available on the server. Reconfigure the connector to use a snapshot when needed.

2 问题原因

Flink Job 正在读的 mysql binlog日志被清理了,出现这个报错目前只能全新状态重启。

3 解决方案

导致报错的可能原因以及处理办法:

  • 原因1:RDS做了内部迁移操作,Flink jar作业使用mysql cdc消费mysql数据报错的原因是是作业处理的速度追不上mysql binlog 产生的速度,导致正在读的位点被清理了。

解决办法:需要全新启动作业,以重新读取数据解决。

  • 原因2:RDS有日志保留策略,最长18个小时,最大占用30%存储空间,两个条件谁先满足都会触发删除,如果您写入特别多,超过30%的存储空间了,可能binlog日志1小时就删除了

注:rds页面上还有一个7天的binlog文件保存,这个是rds后台转存到你们的oss上的,flink cdc目前是没有去转存后oss上去读取这些文件的。

解决办法:需要调整RDS MySQL的Binlog过期策略,使得Binlog能正常被读取。

  • 原因3:通过只读实例消费 CDC 数据,RDS的只读实例不保证binlog(本地只保留10s,上传oss),所以 flink cdc 侧不建议连接 RDS 的只读实例。 只读实例一旦作业 Failover 10s 内恢复不过来,就会有这个异常 只读实例判定,rr 开头的就是只读实例 rm 开头的就是正常的实例

解决办法:不建议MySQL CDC源表读取RDS的只读实例数据。

  • 原因4:MySQL CDC作业消费Binlog太慢,例如下游的聚合算子或者Sink算子长时间出现反压,反压传递到source,导致source无法消费数据。

解决办法:需要对作业资源调优,让source恢复正常消费即可。

  • 原因5:作业正在读取的Binlog文件在MySQL服务器已经被清理掉时,会出现该报错。这种情况一般由于MySQL服务器上Binlog的保留时间太短。

解决办法:可以将Binlog的保留时间调大,比如7天。具体命令如下。

mysql> show variables like \'expire_logs_days\';
mysql> set global expire_logs_days=7;

X 参考文献

Flink 新加source后 发布前需要修改checkpoint的namspace/报错:作业拓扑发生改变,无法使用现有Checkpoint

之前是:

source_a union all source_b ;

新加source_c:

source_a union all source_b union all source_c;

会报错:

Flink任务Checkpoint检查

报错:作业拓扑发生改变,无法使用现有Checkpoint
Checkpoint verification error: org.apache.flink.client.program.ProgramInvocationException: The main method caused an error: Failed to execute sql


 

以上是关于[Flink] Flink作业报错:Caused by: The connector is trying to read binlog starting at GTIDs ..., but this 的主要内容,如果未能解决你的问题,请参考以下文章

Flink 新加source后 发布前需要修改checkpoint的namspace/报错:作业拓扑发生改变,无法使用现有Checkpoint

Flink 新加source后 发布前需要修改checkpoint的namspace/报错:作业拓扑发生改变,无法使用现有Checkpoint

Flink 新加source后 发布前需要修改checkpoint的namspace/报错:作业拓扑发生改变,无法使用现有Checkpoint

The main method caused an error: java.util.concurrent.ExecutionException: org.apache.flink.runtime.c

The main method caused an error: java.util.concurrent.ExecutionException: org.apache.flink.runtime.c

是否可以在流式 flink 作业中创建批处理 flink 作业?