SHOW BINARY LOGS; mysqlbinlog --start-datetime='2026-03-01 02:10:00' \ --stop-datetime='2026-03-01 02:30:00' \ mysql-bin.000318 > gap.sql;
CDC 组件升级重启用了 20 分钟,恢复后从最新位点开始消费。这 20 分钟里产生的 1.7 万条变更,目标表一条都没有。先别急着动参数,把报错原文和时间点记下来,顺序反了容易白折腾。
原因不复杂,启动参数配的是 latest,组件不看上次提交的位点。位点又只存在内存里,重启后没有可恢复的起点。中间这段 binlog 还在磁盘上,只是没人去读。
「CDC 重启丢事件」改完先别急着全量,挑一台机器放半天,真有问题这段时间就能看出来。备份不是备了就行,恢复一次才算数,很多备份文件打开才发现是空的。
接口问题先分清是没发出去、发出去了没收到,还是收到了处理失败。
处理上按这个顺序:启动参数改成从已提交位点恢复 不要用 latest;位点定期刷到数据库或 Kafka 里 不只放内存;重启前记录当前位点 恢复后先核对再放流量;补一段按时间范围回放 把缺口填上。
改完只确认一件事:回放后目标表行数和源表一致 缺口时间段内的变更全部出现。
