Flink CDC运行一段时间时间会出现这个异常 有大佬遇见过吗?Caused by: com.github.shyiko.mysql.binlog.event.deserialization.MissingTableMapEventException: No TableMapEventData has been found for table id:74521. Usually that means that you have started reading binary log 'within the logical event group' (e.g. from WRITE_ROWS and not proceeding TABLE_MAP
at com.github.shyiko.mysql.binlog.event.deserialization.AbstractRowsEventDataDeserializer.deserializeRow(AbstractRowsEventDataDeserializer.java:109)
at com.github.shyiko.mysql.binlog.event.deserialization.WriteRowsEventDataDeserializer.deserializeRows(WriteRowsEventDataDeserializer.java:64)
at com.github.shyiko.mysql.binlog.event.deserialization.WriteRowsEventDataDeserializer.deserialize(WriteRowsEventDataDeserializer.java:56)
at com.github.shyiko.mysql.binlog.event.deserialization.WriteRowsEventDataDeserializer.deserialize(WriteRowsEventDataDeserializer.java:32)
at com.github.shyiko.mysql.binlog.event.deserialization.EventDeserializer.deserializeEventData(EventDeserializer.java:335)
... 6 more
版权声明:本文内容由阿里云实名注册用户自发贡献,版权归原作者所有,阿里云开发者社区不拥有其著作权,亦不承担相应法律责任。具体规则请查看《阿里云开发者社区用户服务协议》和《阿里云开发者社区知识产权保护指引》。如果您发现本社区中有涉嫌抄袭的内容,填写侵权投诉表单进行举报,一经查实,本社区将立刻删除涉嫌侵权内容。
根据您提供的异常信息,MissingTableMapEventException
表示在读取 MySQL Binlog 时,Flink CDC 无法找到与指定表 ID 对应的 TableMapEventData
。这通常是由于 Binlog 的读取位置不正确或 Binlog 数据不完整导致的。以下是可能的原因及解决方案:
Binlog 文件过期:
expire_logs_days
参数值较小的情况下。Binlog 格式问题:
Mixed
或 Statement
,可能会导致某些事件无法被正确解析。ROW
格式的 Binlog。作业重启后消费位置错误:
并发读取问题:
确保 MySQL 的 Binlog 格式为 ROW
:
SHOW VARIABLES LIKE 'binlog_format';
SET GLOBAL binlog_format=ROW;
如果当前格式为 Mixed
或 Statement
,请将其更改为 ROW
。
增加 Binlog 的保留时间,避免文件过期:
SHOW VARIABLES LIKE 'expire_logs_days';
SET GLOBAL expire_logs_days=7;
建议将 expire_logs_days
设置为至少 7 天,以确保 Binlog 文件不会被过早清理。
scan.startup.mode
来指定消费模式:scan.startup.mode=earliest-offset
或
scan.startup.mode=latest-offset
'debezium.snapshot.mode'='never'
,建议移除该配置,或者设置以下参数以避免 Schema 不一致的问题:
debezium.inconsistent.schema.handling.mode=warn
io.debezium.connector.mysql.MySqlSchema WARN
日志中会打印出具体的变更详情,帮助定位问题。
Server ID
,实现数据源复用。ROW
格式的 Binlog 来捕获数据变更,其他格式可能导致解析失败。scan.startup.mode
和其他相关参数配置正确,避免因消费位置错误导致的问题。通过以上步骤,您可以有效解决 MissingTableMapEventException
异常问题。如果问题仍然存在,请进一步分析日志并提供更多上下文信息以便深入排查。
实时计算Flink版是阿里云提供的全托管Serverless Flink云服务,基于 Apache Flink 构建的企业级、高性能实时大数据处理系统。提供全托管版 Flink 集群和引擎,提高作业开发运维效率。