Seven's blog

你不会找到路,除非你敢于迷路

0%

MySQL 数据库数据同步方案调研

名词

  • CDC(Change Data Capture): 数据变化捕获
  • ETL(Extract Transform Load):数据提取、转换、载入

工具

特色 Canal mysql_streamer go-mysql-transfer Maxwell Databus DataX
开源方 阿里巴巴 Yelp - zendesk LinkedIn 阿里巴巴
开发语言 Java Python Golang Java Java Java
活跃
高可用 支持 支持 支持 - 支持 -
文档 详细 还行 详细 详细 详细 还行
数据源 Mysql Mysql Mysql Mysql Mysql
Oracle
MySQL
Oracle
OceanBase
SQLServer
PostgreSQL
DRDS
ALL_RDBMS
ODPS
OSS
OTS
Hbase0.94
Hbase1.1
Phoenix4.x
Phoenix5.x
MongoDB
Hive
Cassandra
TxtFile
FTP
HDFS
TSDB
TDengine
OpenTSDB
接收端 编码定制 Kafka等(MQ) Redis
MongoDB
Elasticsearch
RabbitMQ
Kafka
RocketMQ
HTTP API
后续支持更多
stdout
Kafka
Kinesis
Nats
Google Cloud Pub/Sub
Google Cloud Bigquery
RabbitMQ
Redis
SNS
编码定制? MySQL
Oracle
OceanBase
SQLServer
PostgreSQL
DRDS
ALL_RDBMS
ODPS
OSS
OTS
Hbase0.94
Hbase1.1
Phoenix4.x
Phoenix5.x
MongoDB
Hive
Cassandra
TxtFile
FTP
HDFS
TSDB
TDengine
ADS
OCS
Elasticsearch
全量数据初始化 不支持 支持 支持 支持(maxwell-bootstrap) - 支持
数据格式 编码定制 Json(固定格式) Json(规则配置)
模板语法
Lua脚本
Json (固定) 编码定制? -
备注 需要写代码定制接受端 可扩展性更强,但是上手难度更高 数据同步非实时
实际使用配合 datax-web 体验更佳

alibaba/canal | 文档 | Docker

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

canal-work-flow

由Java开发,分为服务端和客户端,拥有众多的衍生应用,性能稳定,功能强大;canal 需要自己编写客户端来消费canal解析到的数据。

Yelp/mysql_streamer | 文档

wj596/go-mysql-transfer | 文档

zendesk/maxwell | 官网 | 文档

linkedin/databus | 文档

Databus是一种低延迟变化捕获系统,已成为LinkedIn数据处理管道不可或缺的一部分。Databus解决了可靠捕获,流动和处理主要数据更改的基本要求。Databus提供以下功能:

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

上手难度较高。

alibaba/DataX | 简介 | WeiYe-Jing/datax-web | qlangtech/tis

DataX 是阿里云 DataWorks数据集成 的开源版本,在阿里巴巴集团内被广泛使用的离线数据同步工具/平台。DataX 实现了包括 MySQL、Oracle、OceanBase、SqlServer、Postgre、HDFS、Hive、ADS、HBase、TableStore(OTS)、MaxCompute(ODPS)、Hologres、DRDS 等各种异构数据源之间高效的数据同步功能。

配合 DataX-Web 可视化配置任务。

osheroff/mysql-binlog-connector-java | Maven

在 Java 中消费 Mysql Binlog。

参考文档

  • MySQL数据 实时同步到Kafka –Binlog canal、Maxwell、Kafka Connect 实现MySQL增量同步
  • 实时数仓 | mysql的binlog实时同步工具对比
微信公众号
扫码关注, 一起进步!