我们通过Flink CDC时间戳偏移量读取mysql binlog,设置了checkpoint,一个taskmanager挂掉,这个任务转移到另一个taskmanager上,报如下错误: Caused by: com.github.shyiko.mysql.binlog.network.ServerException: event read from binlog did not pass crc check; the first event '' at 9451498, the last event read from '/mysql/mysql8636/log/binlog/mysql_bin.000018' at 123, the last byte read from '/mysql/mysql8636/log/binlog/mysql_bin.000018' at 19937258. at com.github.shyiko.mysql.binlog.BinaryLogClient.listenForEventPackets(BinaryLogClient.java:944)但是通过initial的初始化读的话,一个taskmanager挂掉,任务转移到另一个taskmanager上就不会报错。
版权声明:本文内容由阿里云实名注册用户自发贡献,版权归原作者所有,阿里云开发者社区不拥有其著作权,亦不承担相应法律责任。具体规则请查看《阿里云开发者社区用户服务协议》和《阿里云开发者社区知识产权保护指引》。如果您发现本社区中有涉嫌抄袭的内容,填写侵权投诉表单进行举报,一经查实,本社区将立刻删除涉嫌侵权内容。
根据您提供的错误信息和知识库中的相关资料,以下是针对问题的详细解答:
报错信息如下:
Caused by: com.github.shyiko.mysql.binlog.network.ServerException: event read from binlog did not pass crc check; the first event '' at 9451498, the last event read from '/mysql/mysql8636/log/binlog/mysql_bin.000018' at 123, the last byte read from '/mysql/mysql8636/log/binlog/mysql_bin.000018' at 19937258.
该错误表明在Flink CDC任务从Checkpoint恢复时,尝试读取MySQL Binlog文件时发生了CRC校验失败。这通常是因为以下原因之一: 1. Binlog文件损坏:MySQL Binlog文件可能由于磁盘故障或其他原因导致数据不完整或损坏。 2. Binlog文件被清理:MySQL服务器上的Binlog文件可能已经被清理,导致无法从指定的位点恢复。 3. 位点不一致:Checkpoint记录的Binlog位点与实际MySQL服务器上的Binlog位点不匹配。
此外,您提到使用initial
模式初始化时不会报错,而通过时间戳偏移量(timestamp
)读取时会出现问题。这表明问题可能与时间戳偏移量的配置或Checkpoint机制有关。
SHOW BINARY LOGS;
如果mysql_bin.000018
不在列表中,说明该文件已被清理或丢失。
FLUSH LOGS;
SET GLOBAL expire_logs_days = 7;
同时,建议检查当前的Binlog保留时间:
SHOW VARIABLES LIKE 'expire_logs_days';
Binlog offset on checkpoint {checkpoint-id}
。请检查TaskManager日志,确认Checkpoint记录的位点是否与MySQL服务器上的实际位点一致。timestamp
)模式读取Binlog时出现问题,可以尝试切换到其他启动模式,例如specific-offset
或earliest-offset
,以避免因时间戳解析问题导致的错误。'scan.startup.mode' = 'specific-offset',
'scan.startup.specific-offset.file' = 'mysql_bin.000018',
'scan.startup.specific-offset.pos' = '19937258'
SHOW VARIABLES LIKE 'binlog_checksum';
如果返回值为CRC32
,说明启用了CRC校验。如果怀疑Binlog文件损坏,可以尝试禁用CRC校验(仅用于测试):
SET GLOBAL binlog_checksum = NONE;
SHOW BINARY LOGS
确认文件是否存在,并通过FLUSH LOGS
尝试修复。expire_logs_days
为7天或更长时间,避免文件被清理。specific-offset
或earliest-offset
模式。通过以上步骤,您可以有效解决因Binlog文件损坏或位点不一致导致的CRC校验失败问题。如果问题仍然存在,请提供更多上下文信息以便进一步分析。
希望以上解答对您有所帮助!您可以复制页面截图提供更多信息,我可以进一步帮您分析问题原因。