flink cdc报错[阿里云实时计算 Flink版]

flink sql join操作,source 是mysql,sink也是mysql,主表数据量600万以上,其他left join表在20万,任务启动不久报:Caused by: com.github.shyiko.mysql.binlog.network.ServerException: The slave is connecting using CHANGE MASTER TO MASTER_AUTO_POSITION = 1, but the master has purged binary logs containing GTIDs that the slave requires.

运行一段时间报;Caused by: java.lang.IllegalStateException: The connector is trying to read binlog starting at Struct{version=1.9.7.Final,connector=mysql,name=mysql_binlog_source,ts_ms=1698804372399,db=,server_id=0,file=mysql-bin.000534,pos=1043420736,row=0}, but this is no longer available on the server. Reconfigure the connector to use a snapshot when needed.

请问咋解决?

「点点赞赏,手留余香」

    还没有人赞赏,快来当第一个赞赏的人吧!
=====这是一个广告位,招租中,联系qq 78315851====
1 条回复 A 作者 M 管理员
  1. 根据错误信息提示,第一个错误是因为slave试图使用CHANGE MASTER TO MASTER_AUTO_POSITION = 1连接master,但是master已经删除了包含slave需要的GTID的二进制日志。

    第二个错误是因为connector尝试从binlog读取数据时发现这个位置的数据不再服务器上,可能是因为服务器清理了旧的日志文件。这种情况下,你可以重新配置connector使用快照进行同步。

    解决方法如下:

    1. 首先确认master和slave之间的GTID是否一致,如果不一致,需要手动同步。
    2. 调整MySQL的binlog retention policy,确保connector能够访问到需要的binlog文件。
    3. 修改connector配置,增加snapshot.mode属性,设置为when_needed,当connector无法从binlog获取数据时,会自动创建快照并使用快照进行同步。

    示例配置:

    connector:  name: mysql-source  connection-url: jdbc:mysql://localhost:3306/mydatabase?useSSL=false&serverTimezone=UTC  username: root  password: my-secret-pw  table.whitelist: db_1.public.my_table  mode: incremental  snapshot-mode: when_needed  database.history.kafka.bootstrap.servers: localhost:9092  database.history.kafka.topic: debezium.history.mysql

    注意:请将上述配置中的数据库URL、用户名、密码等替换为你实际的配置。同时,你也需要确保你的Kafka集群可以正常工作。

  2. 这个错误信息表明,Flink CDC连接器正在尝试从MySQL服务器读取二进制日志,但是服务器上的某些GTID已经被清除,因此连接器无法找到这些GTID。这可能是由于以下原因导致的:

    1. MySQL服务器上的二进制日志被意外地删除了。
    2. MySQL服务器上的二进制日志文件过期了。
    3. MySQL服务器上的二进制日志文件被移动到了其他地方。

    为了解决这个问题,你可以尝试以下步骤:

    1. 在Flink CDC连接器的配置中,将master_auto_position设置为false。这样,连接器将不会自动定位到MySQL服务器上的最新GTID,而是需要手动指定。

    2. 使用SHOW BINARY LOGS;命令查看MySQL服务器上的二进制日志列表。找到包含所需GTID的二进制日志文件,并将其路径添加到Flink CDC连接器的配置中。

    3. 如果可能的话,确保MySQL服务器上的二进制日志文件不会被意外地删除或过期。你可以通过修改MySQL的配置来延长二进制日志文件的保留时间。