首页/数据/数据工程与 ETL 速查/CDC 变更数据捕获:概念与实现方式
本包目录(311 条)
管道基础52 条Kafka64 条调度与编排40 条数仓建模52 条数据质量50 条
CDC 与同步53 条

CDC 变更数据捕获:概念与实现方式

CDC(Change Data Capture,变更数据捕获)指持续从数据库日志(binlog/redo/WAL)等来源抽出增量变更,与全量重拉相比只搬运变化的数据,适合数仓实时同步、缓存失效、搜索索引更新与微服务数据复制,通常与初始快照配合完成开荒。

中文名变更数据捕获(Change Data Capture)
输入数据库日志、触发器记录、时间戳轮询或全量比对
输出按主键排序的增删改事件流
与本包关系本组聚焦日志解析型 CDC 及其同步落地

典型实现方式

方式原理优点局限
日志解析读 binlog/redo/WAL 等数据库日志对源库侵入小、延迟低需要日志权限与配套工具
触发器在表上建触发器记录变更实现直接、不依赖日志增加写入开销、触发器等对象维护面大
时间戳轮询按 updated_at 字段增量查询实现简单、无需日志捕获不到删除、精度受字段维护影响
全量对比周期性全量比对差异不依赖日志开销大、延迟高,适合兜底校验

一条典型链路

一条典型链路
MySQL binlog
  → CDC 工具(Canal / Debezium / Flink CDC)解析
  → Kafka Topics
  → 下游:数仓 ODS、检索索引、缓存、审计归档
开荒阶段 = 初始快照 + 增量衔接:先拿位点再导数据,再从该位点继续追变更,中间不能出现窗口缺口。

易错点

  • 以为 CDC 不需要全量:新表接入仍要做初始快照,且必须先确定快照与增量的衔接点
  • 在大批量写入场景用触发器方案,源库写性能被显著拖慢,选型前要压测

数据来源与参考

  • Debezium 官方文档(Change data capture 概念)
  • MySQL 8.0 Reference Manual: The Binary Log
​‌‌​​‌​​​‌‌​‌‌‌‌​‌‌​​​‌‌​‌‌‌​​‌‌​​‌​‌‌‌​​‌‌‌​​​‌​‌‌​‌​​‌​‌‌‌​​​‌​‌‌​‌​​‌​‌‌​​​‌‌​‌‌‌​‌​​​‌‌​‌‌‌‌​​‌​‌‌‌​​‌‌​​​‌‌​‌‌​‌‌‌‌​‌‌​‌‌​‌