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 连接器,支持全量 + 增量一体化
- Maxwell、Databus 等
和前面概念的关系
在典型的数据架构里,OLTP 数据库负责业务交易,CDC 把它的变更实时抽出来,送到 OLAP 系统或消息队列里做分析——CDC 正好是连接 OLTP 和 OLAP 的那条实时管道。
如果你需要,我可以接着讲 CDC 如何保证不丢不重、Exactly-Once 是怎么做到的。
本文来自博客园,作者:AceFenix,转载请注明原文链接:https://www.cnblogs.com/ukzq/p/23085999

浙公网安备 33010602011771号