CDC 工具选型是什么
选 CDC 工具先看三件事:源端数据库的类型与版本、团队是否已有 Kafka 或流计算运维栈、需要的是秒级增量还是批量搬运。Canal 适合 MySQL 增量订阅,Debezium 贴合 Kafka 生态并能覆盖多种源端,Flink CDC 适合「捕获后立刻流式加工」的链路,Maxwell 轻量、启动即用,DataX 面向批式全量或限范围抽取——它没有日志解析能力,因此不属于真正意义上的 CDC。
基本信息
| Canal | 独立服务,模拟从库解析 binlog,投递到 MQ 或客户端 |
|---|---|
| Debezium | Kafka Connect 连接器生态,支持多种源端数据库 |
| Flink CDC | Flink 连接器与 YAML 管道,捕获后可直接流式加工 |
| Maxwell | 轻量独立进程,输出 JSON 到标准输出或 MQ |
| DataX | 离线批式同步工具,全量与限范围抽取,非日志型 CDC |
| 评估维度 | 源端兼容性、延迟要求、团队运维栈、去重与全量能力、社区活跃度 |
典型使用场景
- 已有 Kafka 生态:选用 Debezium 之类的连接器方案,复用现有运维能力
- 需要对变更做实时加工:选 Flink CDC,省掉中间一跳
- 单库轻量接入:表少、目标简单时用 Maxwell 这类轻量工具最快
- 批式全量或限范围抽取:用 DataX 做首次加载或按条件抽样
- 多源混合:不同源端数据库并存时,评估同一工具是否都覆盖
常见方案对照
| 工具 | 形态 | 适用 |
|---|---|---|
| Canal | 独立服务,模拟从库解析 binlog | MySQL 增量订阅,投递到消息队列或客户端 |
| Debezium | Kafka Connect 连接器 | 已有 Kafka 生态,需覆盖多种源端 |
| Flink CDC | Flink 连接器与 YAML 管道 | CDC 后直接流式加工、整库同步 |
| Maxwell | 独立进程输出 JSON | 轻量增量 JSON 输出,少组件依赖 |
| DataX | 离线批式同步 | 全量与限范围抽取,无日志解析能力 |
选型自检问题
选型自检问题
# 按顺序回答,把候选缩到一两个
# 源端是什么数据库?版本是否被工具支持
# 延迟要求秒级还是小时级?
# 团队已有的运维栈是什么(Kafka、Flink、还是都没有)
# 需要处理 schema 变更吗?工具支持到什么程度
# 初始全量怎么做?工具是否自带快照能力
# 出现重复或中断时,靠什么恢复没有放之四海而皆准的选型:以现有技术栈、源端兼容性与团队运维成本为主做取舍,选完先用一条真实链路跑通再扩大范围。
把 DataX 当 CDC 用是常见错误:批式抽取看不到删除,也做不到秒级延迟,用它替代增量链路会长期漏数据且延迟以调度周期计。