开发者社区 > 大数据与机器学习 > 实时计算 Flink > 正文

flink cdc报错

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.

请问咋解决?

展开
收起
1731446667249005 2023-11-01 10:14:27 180 0
2 条回答
写回答
取消 提交回答
  • 面对过去,不要迷离;面对未来,不必彷徨;活在今天,你只要把自己完全展示给别人看。

    根据错误信息提示,第一个错误是因为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集群可以正常工作。

    2023-11-01 13:08:12
    赞同 展开评论 打赏
  • 这个错误信息表明,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的配置来延长二进制日志文件的保留时间。

    2023-11-01 11:23:27
    赞同 1 展开评论 打赏

实时计算Flink版是阿里云提供的全托管Serverless Flink云服务,基于 Apache Flink 构建的企业级、高性能实时大数据处理系统。提供全托管版 Flink 集群和引擎,提高作业开发运维效率。

相关产品

  • 实时计算 Flink版
  • 相关电子书

    更多
    Flink CDC Meetup PPT - 龚中强 立即下载
    Flink CDC Meetup PPT - 王赫 立即下载
    Flink CDC Meetup PPT - 覃立辉 立即下载