数据同步组件:Canal、Maxwell、Databus、DBSyncer、MongoShake、DTS

CDC:change data capture,变更数据捕获

Canal

阿里开源(GitHub,29.7K Star,7.6K Fork)、Java语言开发、MySQL binlog增量订阅和消费组件。

基于数据库增量日志解析,提供增量数据订阅&消费。

原理:

  • Canal模拟MySQL slave的交互协议,伪装为MySQL slave,向MySQL master发送dump协议
  • MySQL master收到dump请求,推送Binary Log给slave,即Canal
  • Canal解析Binary Log对象,原始为Byte流

流程

EventParser过程:

  • Connection获取上一次解析成功的位置(第一次启动,则获取初始位置或当前数据库的binlog位点)
  • Connection建立连接,发送BINLOG_DUMP命令
  • MySQL开始推送Binary Log
  • 接收到的Binary Log通过Binlog parser进行协议解析,补充一些特定信息
  • 传递给EventSink模块进行数据存储,是一个阻塞操作,直到存储成功
  • 存储成功后,定时记录Binary Log位置
  • 数据过滤:支持通配符的过滤模式,表名,字段内容等
  • 数据路由/分发:解决1:n,1个parser对应多个store的模式
  • 数据归并:解决n:1,多个parser对应1个store
  • 数据加工:在进入store之前进行额外的处理,如join

Maxwell

官网即官方文档,开源(GitHub,4.3K Star,1K Fork)MySQL的CDC(变更数据捕获)工具,更轻量更简单的Canal、debezium等项目替代品,可读取MySQL二进制日志,并将数据变更以JSON格式发布到Kafka等MQ平台,适用于多种场景,如ETL处理、审计日志记录、缓存管理、搜索索引构建和服务间通信等;支持在命令行中使用,也提供Docker容器方式启动。

工作原理

Databus

领英开源(GitHub,3.7K Star,738 Fork)、Java编写、源无关、分布式低延迟CDC系统,已成为LinkedIn数据处理管道不可或缺的一部分。Databus解决可靠捕获,流动和处理主要数据更改的基本要求。代码库已无人维护,最后一次提交停留在20年5月7日。

功能:

  • 源与消费者之间的隔离
  • 保证按顺序和至少一次交付具有高可用性
  • 从更改流中的任意时间点开始消耗,包括整个数据的完全引导功能。
  • 分区消费
  • 源一致性保存

DTS

数据传输服务,Data Transmission Service,阿里云提供的一种支持 RDBMS、NoSQL、OLAP 等多种数据源之间数据交互的数据流服务。DTS提供数据迁移、实时数据订阅及数据实时同步等多种数据传输能力,可实现不停服数据迁移、数据异地灾备、异地多活(单元化)、跨境数据同步、实时数据仓库、查询报表分流、缓存更新、异步消息通知等多种业务应用场景,助您构建高安全、可扩展、高可用的数据架构。

优势:DTS 支持 RDBMS、NoSQL、OLAP 等多种数据源间的数据传输。提供数据迁移、实时数据订阅及数据实时同步等多种数据传输方式。相对于第三方数据流工具,数据传输服务 DTS 提供更丰富多样、高性能、高安全可靠的传输链路,同时它提供了诸多便利功能,极大地方便传输链路的创建及管理。

免去部署维护的昂贵使用成本。DTS针对阿里云RDS、DRDS等产品进行适配,解决Binlog日志回收,主备切换、VPC网络切换等场景下的订阅高可用问题。出于稳定性、性能及成本的考虑,推荐使用。

DBSyncer

简称dbs,一款开源(GitHub,934 Star,150 Fork;代码同步托管于Gitee)的数据同步中间件,提供MySQL、Oracle、SQL Server、PG、ES、Kafka、File、SQL等同步场景。支持上传插件自定义同步转换业务,提供监控全量和增量数据统计图、应用性能预警等。

缺点

  1. 单机版的数据同步中间件
  2. 数据持久化也是单机文件存储
  3. CDC方式试下是定时任务短时间扫描拉取Binlog解析同步实现
  4. 不具备分布式大型数据集成同步处理的能力

实战

基于Docker快速体验部署:

bash 复制代码
docker run -d \
 --name dbsyncer \
 -p 18686:18686 \
 -e TZ=Asia/Shanghai \
 -v /data/dbsyncer/app:/app \
 crazylife/dbsyncer-web:latest

浏览器打开http://localhost:18686,用户名密码,都是admin/admin

MongoShake

阿里Nosql团队开源(GitHub,1.1K Star,277 Fork)Go编写、通用型数据同步平台,主要用于MongoDB的数据同步到Kafka或其他MongoDB数据库,通过读取MongoDB集群的Oplog操作日志,对MongoDB的数据进行复制,后续通过操作日志实现特定需求。通过操作日志,提供日志数据订阅消费PUB/SUB功能,可通过SDK、Kafka、MetaQ等方式灵活对接以适应不同场景(如日志订阅、数据中心同步、Cache异步淘汰等)。集群数据同步是其中核心应用场景,通过抓取oplog后进行回放达到同步目的,实现灾备和多活的业务场景。

https://mp.weixin.qq.com/s/OUbC3wOek6zUITHxXuVvdw

相关推荐
RestCloud13 天前
ETL、ELT、CDC区别详解,2026数据集成模式选型指南与落地实战
数据仓库·etl·cdc·数据同步·数据集成平台·实时数据同步·elt
大大大大晴天️1 个月前
主流CDC 组件对比选型指南
大数据·flink·cdc
@SmartSi1 个月前
新一代实时数据集成框架 Flink CDC 3.0 架构解析
flink·cdc
董可伦1 个月前
Flink CDC2Kafka 总结
大数据·flink·cdc
RestCloud2 个月前
从架构师视角看ETL工具选型:如何构建可演进的数据集成平台
数据仓库·etl·cdc·数据处理·数据传输·elt
RestCloud4 个月前
TiDB 混合负载场景下的 ETL 与 CDC 实践
数据仓库·tidb·etl·cdc·数据同步·数据库传输
RestCloud4 个月前
2026年数据集成三大趋势:从批处理到实时事件驱动
ai·etl·cdc·数据传输·数据同步·数据集成平台·集成平台
RestCloud4 个月前
流式优先数据架构:从批量ETL到事件驱动架构的演进之路
数据仓库·etl·cdc·数据处理·数据集成·数据传输·数据同步
RestCloud4 个月前
从被动到实时:企业数据集成架构的范式转移
etl·cdc·数据处理·数据集成·数据传输