Debezium系列-数据库日志变更的CDC简单对比

背景

1)sqoop 同步的一些不足

  • 实时性低
  • 增量同步,无法同步物理删除的记录
  • 有些表是有修改没有修改时间字段,或者不维护修改时间字段,及时数据量很大也没办法增量同步
  • 数据同步时读取数据库产生大量的IO

2)用户越来越渴望实时性的数据

基于数据日志变更的CDC简单对比

目前了解组件有 maxwell、canal、debezium、flinkx (如果还要别的欢迎留言补充)

组件 Canal Maxwell Debezium Flinx
开源方 阿里 zendesk redhat 袋鼠云
开发语言 Java Java Java Java
支持数据库 MySQL MySQL MongoDB、MySQL、PostgreSQL、SQL Server 、Oracle( 孵化)、DB2( 孵化)、Cassandra( 孵化) MongoDB、MySQL、PostgreSQL
是否支持bootstrap
是否支持解析DDL同步
是否支持HA 需定制 基于kafka-connector
社区活跃(2020.07.20) release:2019.09.02,star:14.8k,last-commit:2020.03.13 release:2020.07.01,star:2.2k,last-commit:2020.07.02 release:2020.07.16,star:3.4k,last-commit:2020.07.16 release:2020.07.14,star:1.4k,last-commit:2020.07.17
文档 中文,百度可以解决 英文,官方文档 英文,官方文档十分详细 中文,github readme 文档
MQ集成 RocketMQ、Kafka kafka kafka Emqx、kafka

分析

选型考虑的点

  1. 必须带bootstrap功能
  2. 可与kafka的集成,集成越简单越好
  3. 数据源必须支持 MySQL、MongoD、PostgreSQL(项目刚需)
  4. 项目活跃程度

从支持的数据源来看Canal、Maxwell 数据源支持不足,Debezium和Flinkx都是不错的选择; 但FlinkX 支不支持bootstrap,只能选择 Debezium
一些有意思的事情:

  1. 在调研时 google 出来的资料,基于kafka connector 的 Debezium 会比基于Flink 的FlinkX 更多;
  2. Debezium是基于kafka connector 集成开发的与kafka 高度耦合
  3. FlinkX的mysql binlog 同步基于canal的客户端开发的
  4. kafka 1.0 以后 connector的发展很快,confluent 有很多开源的connector。

参考资料

  • FlinkX github 文档
  • Debezium 官方文档
  • Maxwell 官方文档
  • Canal 官方文档

你可能感兴趣的:(CDC同步系列)