首页/数据/数据工程与 ETL 速查/CDC 断链:找不到 binlog 文件
CDC 与同步53 条

CDC 断链:找不到 binlog 文件

CDC/复制断链的典型报错是找不到所需 binlog 文件(如 Could not find first log file name in binary log index file),根因多为保留期太短、消费位点落后于清理点,或有人手工清理了日志。先核对文件是否仍存在,再选择补位点或重建快照。

CDC 报找不到 binlog 文件

CDC 或复制断链最典型的报错是找不到所需的 binlog 文件(例如提示在 binary log index 中找不到首个日志文件)。根因多为三种:保留期太短导致位点落后于清理点、有人手工执行了 PURGE、主库切换后位点对不上。处理顺序是先核对文件是否真的不在,再决定是补位点续采还是重建快照——后者成本高得多。

基本信息

常见根因保留期不足、手工 PURGE、主库切换后位点对不上
第一步核对SHOW BINARY LOGS 确认目标文件是否仍在
恢复选项文件仍在则补位点续采;已清理则重做快照重建链路
善后动作调整保留期,并补上位点滞后监控

典型使用场景

  • 链路突然中断:先看报错里的文件名是否还在清单中
  • 主从切换后:确认位点是否需要重新对齐
  • 误清理复盘:有人手工删日志导致链路断掉
  • 长假期结束:位点落后超过保留窗口的典型场景
  • 新建链路验收:验证断链后的恢复流程是否真的可用

断链后的核对动作

断链后的核对动作
SHOW BINARY LOGS;              -- 当前保留的 binlog 文件清单
SHOW MASTER STATUS\G           -- 当前写入位点(8.4+ 改为 SHOW BINARY LOG STATUS)

核对与决策

现象含义处理
目标文件仍在清单中位点本身没有问题补位点后继续消费
目标文件已不存在已被清理,无法续采重做快照重建链路
最早文件晚于位点时间位点已经过期必须重建
主库切换后位点无效新主库日志序列不同按新主库位点重新定位
重建快照成本很高(全量导出加追平时间),先用成本最低的方式核对文件是否真的不在,再决定恢复路径,避免白白浪费一次全量窗口。
恢复之后只把保留期调长是不够的:位点滞后监控必须一起补上,否则下一次长假期或大故障会以同样的方式复发。

易错点

  • 不核对文件是否存在就直接重做快照,白白浪费一次全量窗口
  • 恢复后只把保留期调长,不做位点滞后监控,同类故障还会复发
  • 多人运维下有人手工 PURGE 日志,链路断开后无人知道原因
  • 把断链当作偶发故障处理,不追查位点落后的原因,下次窗口更长时后果更严重

数据来源与参考

  • MySQL 8.0 Reference Manual: Replication 故障处理
  • Canal 官方文档(常见问题:binlog 被清理)
​‌‌​​‌​​​‌‌​‌‌‌‌​‌‌​​​‌‌​‌‌‌​​‌‌​​‌​‌‌‌​​‌‌‌​​​‌​‌‌​‌​​‌​‌‌‌​​​‌​‌‌​‌​​‌​‌‌​​​‌‌​‌‌‌​‌​​​‌‌​‌‌‌‌​​‌​‌‌‌​​‌‌​​​‌‌​‌‌​‌‌‌‌​‌‌​‌‌​‌