1. 程式人生 > >alibaba/canal 阿裏巴巴 mysql 數據庫 binlog 增量訂閱&消費組件

alibaba/canal 阿裏巴巴 mysql 數據庫 binlog 增量訂閱&消費組件

原生 docs 進行 git 目前 cache ring mysql5 業務

基於日誌增量訂閱&消費支持的業務:

  1. 數據庫鏡像
  2. 數據庫實時備份
  3. 多級索引 (賣家和買家各自分庫索引)
  4. search build
  5. 業務cache刷新
  6. 價格變化等重要業務消息

項目介紹

名稱:canal [k?‘næl]

譯意: 水道/管道/溝渠

語言: 純java開發

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

關鍵詞: mysql binlog parser / real-time / queue&topic

工作原理

mysql主備復制實現

技術分享圖片
從上層來看,復制分成三步:

  1. master將改變記錄到二進制日誌(binary log)中(這些記錄叫做二進制日誌事件,binary log events,可以通過show binlog events進行查看);
  2. slave將master的binary log events拷貝到它的中繼日誌(relay log);
  3. slave重做中繼日誌中的事件,將改變反映它自己的數據。

canal的工作原理:

技術分享圖片

原理相對比較簡單:

  1. canal模擬mysql slave的交互協議,偽裝自己為mysql slave,向mysql master發送dump協議
  2. mysql master收到dump請求,開始推送binary log給slave(也就是canal)
  3. canal解析binary log對象(原始為byte流)

相關文檔

See the wiki page for : wiki文檔

wiki文檔列表

  • Home
  • Introduction
  • QuickStart
    • Docker QuickStart
    • Canal Kafka/RocketMQ QuickStart
    • Aliyun RDS QuickStart
    • Prometheus QuickStart
  • AdminGuide
  • ClientExample
  • ClientAPI
  • Performance
  • DevGuide
  • BinlogChange(Mysql5.6)
  • BinlogChange(MariaDB)
  • TableMetaTSDB
  • ReleaseNotes
  • Download
  • FAQ

QuickStart

See the page for quick start: QuickStart.

ClientExample

See the page for quick start: ClientExample.

AdminGuide

See the page for admin deploy guide : AdminGuide

時序表結構

New Feature: TableMetaTSDB

重要版本更新說明

canal 1.1.x系列,參考release文檔:版本發布信息

  1. 整體性能測試&優化,提升了150%. #726 參考: 【Performance】
  2. 原生支持prometheus監控 #765 【Prometheus QuickStart】
  3. 原生支持kafka消息投遞 #695 【Canal Kafka QuickStart】
  4. 原生支持aliyun rds的binlog訂閱 (解決自動主備切換/oss binlog離線解析) 參考: 【Aliyun RDS QuickStart】
  5. 原生支持docker鏡像 #801 參考: 【Docker QuickStart】

多語言業務

  1. canal整體交互協議設計上使用了protobuf3.0,理論上可以支持絕大部分的多語言場景,歡迎大家提交多客戶端的PR
    • canal java客戶端: https://github.com/alibaba/canal/wiki/ClientExample
    • canal c#客戶端開源項目地址: https://github.com/CanalSharp/CanalSharp
    • canal go客戶端開源項目地址: https://github.com/CanalClient/canal-go
  2. canal作為MySQL binlog的增量獲取工具,可以將數據投遞到MQ系統中,比如Kafka/RocketMQ,可以借助於MQ的多語言能力
    • 參考文檔: Canal Kafka/RocketMQ QuickStart

版本相關

1. 建議版本:1.1.0

  1. 下載發布包:download

  2. maven依賴

<dependency>
    <groupId>com.alibaba.otter</groupId>
    <artifactId>canal.client</artifactId>
    <version>1.1.0</version>
</dependency>
  1. 詳細的issues列表可查看:ReleaseNotes

相關資料

  • ADC阿裏技術嘉年華分享ppt (放在google docs上,可能需要FQ): ppt下載
  • 與阿裏巴巴的RocketMQ配合使用

。。。

alibaba/canal 阿裏巴巴 mysql 數據庫 binlog 增量訂閱&消費組件