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

Flink CDC mysql cdc 抽取经常出现这个问题?

Flink CDC mysql cdc 抽取经常出现这个问题?Caused by: com.github.shyiko.mysql.binlog.event.deserialization.EventDataDeserializationException: Failed to deserialize data of EventHeaderV4{timestamp=1697803208000, eventType=UPDATE_ROWS, serverId=47613306, headerLength=19, dataLength=9128319, nextPosition=204856408, flags=0}
392bf9666ba6c2f667b41d8029b10b4b.png
这些都设置了都没用

展开
收起
cuicuicuic 2023-10-23 16:37:41 41 0
1 条回答
写回答
取消 提交回答
  • 这个问题可能是由于MySQL binlog的格式与Flink CDC不兼容导致的。你可以尝试以下方法解决这个问题:

    1. 确保你的MySQL版本支持binlog格式。Flink CDC目前支持MySQL 5.7及以上版本。

    2. 检查MySQL的配置文件(my.cnf或my.ini),确保以下设置正确:

    [mysqld]
    server-id=47613306
    log-bin=mysql-bin
    binlog-format=ROW
    
    1. 重启MySQL服务以使更改生效。

    2. 如果问题仍然存在,尝试使用--start-from-latest参数启动Flink CDC,这将从最新的binlog位置开始同步数据。例如:

    ./bin/flink run -c com.ververica.cdc.connectors.mysql.MySqlSource \n    --start-from-latest \n    --hostname <your-mysql-host> \n    --port <your-mysql-port> \n    --username <your-mysql-username> \n    --password <your-mysql-password> \n    --database-name <your-database-name> \n    --table-names <your-table-name> \n    --sink.parallelism 1 \n    --sink.max-out-of-orderness 10000 \n    --sink.checkpointing-mode interval \n    --sink.checkpointing-interval 1min \n    --sink.checkpointing-timeout 1min \n    --sink.trigger.interval 1min \n    --sink.trigger.allow-non-transactional-updates true \n    --sink.jdbc.url jdbc:mysql://<your-mysql-host>:<your-mysql-port>/<your-database-name>?useSSL=false&serverTimezone=UTC \n    --sink.jdbc.username <your-mysql-username> \n    --sink.jdbc.password <your-mysql-password> \n    --sink.jdbc.driver-class-name com.mysql.cj.jdbc.Driver
    
    2023-10-24 10:28:31
    赞同 展开评论 打赏

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

相关产品

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

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

    相关镜像