实时数仓实践(一)之数据库实时增量同步工具-CDC(Change Data Capture)

数据库实时增量同步工具-CDC(Change Data Capture)

Canal

阿里巴巴B2B公司,因为业务的特性,卖家主要集中在国内,买家主要集中在国外,所以衍生出了杭州和美国异地机 房的需求,从2010年开始,阿里系公司开始逐步的尝试基于数据库的日志解析,获取增量变更进行同步,由此衍生 出了增量订阅&消费的业务。

Canal是用java开发的基于数据库增量日志解析,提供增量数据订阅&消费的中间件。目前,Canal主要支持了MySQL 的binlog解析,解析完成后才利用Canal client 用来处理获得的相关数据。(数据库同步需要阿里的otter中间件,基 于Canal)。

使用场景

1.原始场景: 阿里otter中间件的一部分 otter是阿里用于进行异地数据库之间的同步框架,Canal是其中一部分。

Databus

LinkedIn开源
1)Databus 分布式数据同步系统
2)Cubert 高性能计算引擎
3)ParSeq Java一部处理框架
4)kafka 流处理平台

Databus&canal对比

截止2018-10-09

Databus和canal都能够提供实时从数据库获取变更,并提供给下游的实时消费流的功能。

本文针对两个系统实现和应用上的不同点,做了一个简单的对比:

对比项Databuscanal结论
支持的数据库mysql, oraclemysql(据说内部版本支持oracle)Databus目前支持的数据源更多
业务开发业务只需要实现事件处理接口事件处理外,需要处理ack/rollback,反序列化异常等Databus开发接口用户友好度更高
服务模型relayrelay可以同时服务多个client一个server instance只能服务一个client(受限于server端保存拉取位点)Databus服务模式更灵活
clientclient可以拉取多个relay的变更,访问的relay可以指定拉取某些表某些分片的变更client只能从一个server拉取变更,而且只能是拉取全量的变更
可扩展性client可以线性扩展,处理能力也能线性扩展(Databus可识别pk,自动做数据分片)client无法扩展Databus扩展性更好
可用性client haclient支持cluster模式,每个client处理一部分数据,某个client挂掉,其他client自动接管对应分片数据主备client模式,主client消费,如果主client挂掉,备client可自动接管Databus实时热备方案更成熟
relay/server ha多个relay可连接到同一个数据库,client可以配置多个relay,relay故障启动切换主备relay模式,relay通过zk进行failovercanal主备模式对数据库影响更小
故障对上游数据库的影响client故障,bootstrap会继续拉取变更,client恢复后直接从bootstrap拉取历史变更client故障会阻塞server拉取变更,client恢复会导致server瞬时从数据库拉取大量变更Databus本身的故障对数据库影响几乎为0
系统状态监控程序通过http接口将运行状态暴露给外部暂无Databus程序可监控性更好
开发语言java,核心代码16w,测试代码6wjava,4.2w核心代码,6k测试代码Databus项目更成熟,当然学习成本也更大

Debezium

截止2019.11.17

RedHat开源的Debezium是一个将多种数据源实时变更数据捕获,形成数据流输出的开源工具。
它是一种CDC(Change Data Capture)工具,工作原理类似大家所熟知的Canal, DataBus, Maxwell等,是通过抽取数据库日志来获取变更的。
官方介绍为:

Debezium is an open source distributed platform for change data capture. Start it up, point it at your databases, and your apps can start responding to all of the inserts, updates, and deletes that other apps commit to your databases. Debezium is durable and fast, so your apps can respond quickly and never miss an event, even when things go wrong

为什么选择Debezium

网上关于实时采集Oracle数据的资料并不多,通常的做法有以下几种:

  1. 需要购买Oracel原生提供的OGG ,debizum的本质也是基于OGG,这种方式虽然省事但是价格昂贵;

对比4种CDC工具,其中GoldenGate简称ogg,Debezium简称dbz,DataPipeline简称dp。对比如下:


支持的数据源、目标类型

对比项GoldenGateDebeziumDataPipelinePglogical
Mysql源/目标源/目标/
Oracle源/目标源(不成熟)源/目标/
PostgreSQL目标源/目标源/目标
Kafka目标目标目标/
SQLServer目标目标/
MongoDB目标/
Hive/HBase/Hdfs目标/目标/

主要功能对比

对比项GoldenGateDebeziumDataPipelinePglogical
license商业收费,oracle原厂支持开源免费,非常活跃,迭代速度极快商业收费,原厂支持开源免费,迭代速度较快
DDL同步MySQL,OracleMySQL,SQLServer有限支持PostgreSQL
双向同步YN有限支持N
主键/唯一约束冲突处理Y需消费端自行实现YY
要求与源库装在同一台机器,目标库版本不低于源库必须
初始化批量同步initial loadsnapshot支持copy
web界面NNYN
数据幂等性Y需消费端自行实现YY
监控策略命令行/monitorhttp接口web界面命令行
调优策略修改配置较复杂修改配置修改配置
结构迁移NNYN

通过对比综合考虑,我们最终决定
PostgreSQL->PostgreSQL的同步,目标库版本不低于源库版本,使用开源工具Pglogical
PostgreSQL->非PostgreSQL的同步,或高版本PostgreSQL->低版本PostgreSQL,使用Debezium + Kafka + 自行开发消费端

Maxwell

https://github.com/zendesk/maxwell

引用

Flink+Clickhouse实时数仓在广投集团的最佳实践

https://www.jianshu.com/p/6aaa2f61f56b

深度对比delta、iceberg和hudi三大开源数据湖方案

https://mp.weixin.qq.com/s/m8-iFg-ekykWGrG3gXlLew

增量数据同步工具Debezium介绍

https://www.jianshu.com/p/61e604299b5e

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值