全量与增量的衔接点
开荒同步的关键是衔接点:全量数据必须在某一个确定的位点上「冻结」,之后的变更再通过增量补齐。常见方案有停写窗口、锁表拿位点、从库做快照,以及工具内置的「快照加位点衔接」(Debezium 的 initial 快照、Flink CDC 的增量快照)。自研方案必须固定位点在前、全量导出在后,再从该位点追平到当前。
基本信息
| 停写窗口 | 实现简单,但对业务有影响,需要审批 |
|---|---|
| 锁表方案 | FTWRL 阻塞写入,仅适合可停写场景 |
| 从库快照 | 主库压力大时优先考虑 |
| 工具内置 | 如 Debezium initial 快照、Flink CDC 增量快照,减少自研风险 |
典型使用场景
- 新链路开荒:为存量数据做一次快照并接上增量
- 链路重建:位点丢失后重新初始化
- 大表迁移:分批快照,记录每批对应的位点
- 流量切换:追平并校验一致后才把下游读流量切过来
- 演练:定期走一遍全量加增量的流程,确认脚本可用
衔接时序(自研方案)
衔接时序(自研方案)
① 固定位点:记录 File/Pos 或 GTID
② 全量导出:生成快照数据
③ 从固定位点开始消费增量,追平到当前
④ 校验一致后切换下游读流量衔接方案对照
| 方案 | 优点 | 代价 |
|---|---|---|
| 停写窗口 | 实现最简单,一致性最好 | 业务需停写,需要审批 |
| 锁表方案 | 无需改造业务逻辑 | 阻塞写入,仅适合可停写场景 |
| 从库快照 | 卸载主库压力 | 需承担复制延迟,位点仍是主库位点 |
| 工具内置 | 衔接由工具保证 | 仍需理解机制与限制 |
顺序颠倒(先导出后取位点)会永久丢失窗口内的变更,而且通常要等到对账时才发现,届时排查要从头核一遍数据。
追平阶段要同时监控消费速率与位点差距,才能判断什么时候可以切流量;没有这两个指标,就只能靠感觉猜「应该差不多了」。切换前还要做一次口径校验,确认全量加增量的结果与源端在同一时间点对得上,再放行下游读取。