CDC

CDC 的全称是:

Change Data Capture

中文译为:变更数据捕获

它是做什么的

CDC 的核心目标是:捕获数据库中数据的变更(增、删、改),并把变更实时同步到下游系统,而不是靠定时全量扫描去对比。

典型用途包括:

  • 实时同步:MySQL → 数据仓库 / 数据湖
  • 缓存更新:数据库变更后自动刷新 Redis
  • 微服务解耦:通过变更事件驱动其他服务
  • 审计与回溯:记录数据历史变化
  • 搜索索引同步:数据库 → Elasticsearch

两种主要实现方式

1. 基于查询(Query-based)
定时用 updated_at 等字段查增量。实现简单,但实时性差、可能漏掉删除、对源库有查询压力。

2. 基于日志(Log-based)
读取数据库的 binlog / WAL / redo log,比如 MySQL 的 binlog、PostgreSQL 的逻辑复制槽。实时性好、对源库影响小、能捕获删除,是目前主流方案。

常见工具

  • Debezium:最流行的开源 CDC 工具,常配合 Kafka 使用
  • Canal:阿里开源,主要针对 MySQL
  • Flink CDC:Flink 生态里的 CDC 连接器,支持全量 + 增量一体化
  • MaxwellDatabus

和前面概念的关系

在典型的数据架构里,OLTP 数据库负责业务交易,CDC 把它的变更实时抽出来,送到 OLAP 系统或消息队列里做分析——CDC 正好是连接 OLTP 和 OLAP 的那条实时管道。

如果你需要,我可以接着讲 CDC 如何保证不丢不重、Exactly-Once 是怎么做到的

posted @ 2026-09-23 00:00  AceFenix  阅读(4)  评论(0)    收藏  举报