4 款 MySQL Binlog 日誌處理工具對比

Canal

定位:基於數據庫增量日誌解析,提供增量數據訂閱&消費,目前主要支持了mysql。mysql

原理:

  • canal模擬mysql slave的交互協議,假裝本身爲mysql slave,向mysql master發送dump協議sql

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

  • canal解析binary log對象(原始爲byte流)json

圖片

圖片

整個parser過程大體可分爲幾步:緩存

  • Connection獲取上一次解析成功的位置(若是第一次啓動,則獲取初始制定的位置或者是當前數據庫的binlog位點)安全

  • Connection創建鏈接,發生BINLOG\_DUMP命令性能優化

  • Mysql開始推送Binary Log網絡

  • 接收到的Binary Log經過Binlog parser進行協議解析,補充一些特定信息架構

  • 傳遞給EventSink模塊進行數據存儲,是一個阻塞操做,直到存儲成功異步

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

圖片

  • 數據過濾:支持通配符的過濾模式,表名,字段內容等

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

  • 數據歸併:解決n:1 (多個parser對應1個store)

  • 數據加工:在進入store以前進行額外的處理,好比join

Maxwell

圖片

canal 由Java開發,分爲服務端和客戶端,擁有衆多的衍生應用,性能穩定,功能強大;canal 須要本身編寫客戶端來消費canal解析到的數據。

maxwell相對於canal的優點是使用簡單,它直接將數據變動輸出爲json字符串,不須要再編寫客戶端。

Databus

Databus是一種低延遲變化捕獲系統,已成爲LinkedIn數據處理管道不可或缺的一部分。Databus解決了可靠捕獲,流動和處理主要數據更改的基本要求。Databus提供如下功能:

  • 源與消費者之間的隔離

  • 保證按順序和至少一次交付具備高可用性

  • 從更改流中的任意時間點開始消耗,包括整個數據的徹底引導功能。

  • 分區消費

  • 源一致性保存

圖片

阿里雲的數據傳輸服務DTS

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

優點

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

我的理解:就是一個消息隊列,會給你推送它包裝過的sql對象,能夠本身作個服務去解析這些sql對象。

免去部署維護的昂貴使用成本。DTS針對阿里雲RDS(在線關係型數據庫)、DRDS等產品進行了適配,解決了Binlog日誌回收,主備切換、VPC網絡切換等場景下的訂閱高可用問題。同時,針對RDS進行了針對性的性能優化。出於穩定性、性能及成本的考慮,推薦使用。

原文: https://blog.csdn.net/weixin_...

相關文章
相關標籤/搜索