数据库实时增量同步工具-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都能够提供实时从数据库获取变更,并提供给下游的实时消费流的功能。

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

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


支持的数据源、目标类型

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

主要功能对比

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

通过对比综合考虑,我们最终决定
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

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

  1. 数据查询和业务流分开_滴滴实时数仓逐层剖解:实时与离线数据误差0.5%

    原标题:滴滴实时数仓逐层剖解:实时与离线数据误差< 作者介绍 潘澄,资深软件开发工程师.负责实时数据仓库建设,多年数据相关工作经验,专注数据建模.数据仓库.实时数据技术等领域. 朱峰,高级软件开 ...

  2. 「万字长文」实时数仓实践以及架构的演进

    前言 "数据智能" (Data Intelligence) 有一个必须且基础的环节,就是数据仓库的建设,同时,数据仓库也是公司数据发展到一定规模后必然会提供的一种基础服务. 从智能 ...

  3. 实时数仓实践以及架构

    前言 "数据智能" (Data Intelligence) 有一个必须且基础的环节,就是数据仓库的建设,同时,数据仓库也是公司数据发展到一定规模后必然会提供的一种基础服务. 从智能 ...

  4. 数据实时增量同步之CDC工具—Canal、mysql_stream、go-mysql-transfer、Maxwell

    数据实时增量同步之CDC工具-Canal.mysql_stream.go-mysql-transfer.Maxwell 什么是CDC? CDC工具对比 实现原理: Mysql binlog 讲解: m ...

  5. 网易实时数仓实践与展望

    分享嘉宾:马进 网易杭研 技术专家 编辑整理:张满意 出品平台:DataFunTalk 导读:随着大数据技术的进步,各种计算框架的涌现,数据仓库相关技术难题已经从离线数仓逐渐过渡到实时数仓,越来越多的 ...

  6. 数仓 调度_网易实时数仓实践

    分享嘉宾:马进 网易杭研 技术专家 编辑整理:张满意 出品平台:DataFunTalk 导读:随着大数据技术的进步,各种计算框架的涌现,数据仓库相关技术难题已经从离线数仓逐渐过渡到实时数仓,越来越多的 ...

  7. Flink + Iceberg 在去哪儿的实时数仓实践

    简介:本文介绍去哪儿数据平台在使用 Flink + Iceberg 0.11 的一些实践. 作者:余东 摘要: 本文介绍去哪儿数据平台在使用 Flink + Iceberg 0.11 的一些实践.内容 ...

  8. 滴滴打车 -- 实时数仓实践

    桔妹导读:随着滴滴业务的高速发展,业务对于数据时效性的需求越来越高,而伴随着实时技术的不断发展和成熟,滴滴也对实时建设做了大量的尝试和实践.本文主要以顺风车这个业务为引子,从引擎侧.平台侧和业务侧各个 ...

  9. 【统一数据开发平台】-OLAP分析平台和实时数仓实践和优化

    一.业务背景 BIGO 是一家面向海外的以短视频直播业务为主的公司, 目前公司的主要业务包括 BigoLive (全球直播服务),Likee (短视频创作分享平台),IMO (免费通信工具) 三部分, ...

最新文章

  1. Caused by: java.lang.NoClassDefFoundError: org/objectweb/asm/Type
  2. matlab中用colfilt实现非线性滤波(图片版)
  3. react native 开发笔记(一)
  4. Heinz College of Information Systems and Public Policy Carnegie Mellon University
  5. mysql数据库管理维护_(转)Mysql数据库管理 表的维护
  6. 存储过程系列之存储过程返回值总结
  7. 英语单词辨异 —— 容易理解错的单词
  8. android 取色方法,安卓取色器 - 「一年好景君须记」,带你玩转安卓的色彩世界 - Android 应用 - 工具 - 【最美应用】...
  9. 通讯录制作(.csv文件转.vcf文件即vcard格式)
  10. ARCore从零到一 (2) 运行HelloAR 案例
  11. 查看本地IP和服务器端口
  12. 领英封号怎么办,如何避免封号?
  13. Android实现蓝牙(BlueTooth)设备检测连接
  14. 如何“拼”出一个页面-游戏中心模块化实践
  15. Vue项目使用富文本之tinymce-vue
  16. APP 专项测试之兼容性测试
  17. android mvvm官方文档,MVVM: 这是一个android MVVM 框架,基于谷歌dataBinding技术实现
  18. 5G工业相机,让机器变身“超级工人”
  19. Ireport多个报表整合成一张pdf
  20. 50个最受网友欢迎的HTML5资源下载列表

热门文章

  1. win10同时安装wps和office时,如何设置默认应用为office!!!
  2. 知乎App加密流量分析初探
  3. 【因缘际会】知乎APP的简单的产品体验报告
  4. 怎么安装Nginx的监控模块
  5. python中mod是什么意思_【python中,mod_python到底做了些什么呢?】mod python 教程
  6. 【uniapp】 判断浏览器环境
  7. 【python】电商批量打标logo,超快速超简单!!!
  8. Android设置iptable实现外网访问
  9. 【qingcloud】k8s iptable -F/L
  10. cocos2d-x创建新项目模板