日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 运维知识 > 数据库 >内容正文

数据库

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

發布時間:2024/3/13 数据库 50 豆豆
生活随笔 收集整理的這篇文章主要介紹了 实时数仓实践(一)之数据库实时增量同步工具-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數據的資料并不多,通常的做法有以下幾種:

  • 需要購買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

    總結

    以上是生活随笔為你收集整理的实时数仓实践(一)之数据库实时增量同步工具-CDC(Change Data Capture)的全部內容,希望文章能夠幫你解決所遇到的問題。

    如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。