天天看點

mysql binlog 處理_MySQL 的 Binlog 日志處理工具對比

Canal

Maxwell

Databus

阿裡雲的資料傳輸服務DTS

Canal

定位:基于資料庫增量日志解析,提供增量資料訂閱&消費,目前主要支援了mysql。

原理:canal模拟mysql slave的互動協定,僞裝自己為mysql slave,向mysql master發送dump協定

mysql master收到dump請求,開始推送binary log給slave(也就是canal)

canal解析binary log對象(原始為byte流)

mysql binlog 處理_MySQL 的 Binlog 日志處理工具對比
mysql binlog 處理_MySQL 的 Binlog 日志處理工具對比

整個parser過程大緻可分為幾步:Connection擷取上一次解析成功的位置(如果第一次啟動,則擷取初始制定的位置或者是目前資料庫的binlog位點)

Connection建立連接配接,發生BINLOG_DUMP指令

Mysql開始推送Binary Log

接收到的Binary Log通過Binlog parser進行協定解析,補充一些特定資訊

傳遞給EventSink子產品進行資料存儲,是一個阻塞操作,直到存儲成功

存儲成功後,定時記錄Binary Log位置

mysql binlog 處理_MySQL 的 Binlog 日志處理工具對比

資料過濾:支援通配符的過濾模式,表名,字段内容等

資料路由/分發:解決1:n (1個parser對應多個store的模式)

資料歸并:解決n:1 (多個parser對應1個store)

資料加工:在進入store之前進行額外的處理,比如join“

推薦一個艿艿寫的 6000+ Star 的 SpringBoot + SpringCloud + Dubbo 教程的倉庫:https://github.com/YunaiV/SpringBoot-Labs

Maxwell

mysql binlog 處理_MySQL 的 Binlog 日志處理工具對比

canal 由Java開發,分為服務端和用戶端,擁有衆多的衍生應用,性能穩定,功能強大;canal 需要自己編寫用戶端來消費canal解析到的資料。

maxwell相對于canal的優勢是使用簡單,它直接将資料變更輸出為json字元串,不需要再編寫用戶端。

Databus

Databus是一種低延遲變化捕獲系統,已成為LinkedIn資料處理管道不可或缺的一部分。Databus解決了可靠捕獲,流動和處理主要資料更改的基本要求。Databus提供以下功能:源與消費者之間的隔離

保證按順序和至少一次傳遞具有高可用性

從更改流中的任意時間點開始消耗,包括整個資料的完全引導功能。

分區消費

源一緻性儲存

mysql binlog 處理_MySQL 的 Binlog 日志處理工具對比

阿裡雲的資料傳輸服務DTS

資料傳輸服務(Data Transmission Service,簡稱DTS)是阿裡雲提供的一種支援 RDBMS(關系型資料庫)、NoSQL、OLAP 等多種資料源之間資料互動的資料流服務。DTS提供了資料遷移、實時資料訂閱及資料實時同步等多種資料傳輸能力,可實作不停服資料遷移、資料異地災備、異地多活(單元化)、跨境資料同步、實時資料倉庫、查詢報表分流、緩存更新、異步消息通知等多種業務應用場景,助您建構高安全、可擴充、高可用的資料架構。

優勢:資料傳輸(Data Transmission)服務 DTS 支援 RDBMS、NoSQL、OLAP 等多種資料源間的資料傳輸。它提供了資料遷移、實時資料訂閱及資料實時同步等多種資料傳輸方式。相對于第三方資料流工具,資料傳輸服務 DTS 提供更豐富多樣、高性能、高安全可靠的傳輸鍊路,同時它提供了諸多便利功能,極大得友善了傳輸鍊路的建立及管理。

個人了解:就是一個消息隊列,會給你推送它包裝過的sql對象,可以自己做個服務去解析這些sql對象。

免去部署維護的昂貴使用成本。DTS針對阿裡雲RDS(線上關系型資料庫)、DRDS等産品進行了适配,解決了Binlog日志回收,主備切換、VPC網絡切換等場景下的訂閱高可用問題。同時,針對RDS進行了針對性的性能優化。出于穩定性、性能及成本的考慮,推薦使用。