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}
这些都设置了都没用
这个问题可能是由于MySQL binlog的格式与Flink CDC不兼容导致的。你可以尝试以下方法解决这个问题:
确保你的MySQL版本支持binlog格式。Flink CDC目前支持MySQL 5.7及以上版本。
检查MySQL的配置文件(my.cnf或my.ini),确保以下设置正确:
[mysqld]
server-id=47613306
log-bin=mysql-bin
binlog-format=ROW
重启MySQL服务以使更改生效。
如果问题仍然存在,尝试使用--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
版权声明:本文内容由阿里云实名注册用户自发贡献,版权归原作者所有,阿里云开发者社区不拥有其著作权,亦不承担相应法律责任。具体规则请查看《阿里云开发者社区用户服务协议》和《阿里云开发者社区知识产权保护指引》。如果您发现本社区中有涉嫌抄袭的内容,填写侵权投诉表单进行举报,一经查实,本社区将立刻删除涉嫌侵权内容。
实时计算Flink版是阿里云提供的全托管Serverless Flink云服务,基于 Apache Flink 构建的企业级、高性能实时大数据处理系统。提供全托管版 Flink 集群和引擎,提高作业开发运维效率。