基於日志增量訂閱&消費支持的業務:
- 數據庫鏡像
- 數據庫實時備份
- 多級索引 (賣家和買家各自分庫索引)
- search build
- 業務cache刷新
- 價格變化等重要業務消息
項目介紹
名稱:canal [kə'næl]
譯意: 水道/管道/溝渠
語言: 純java開發
定位: 基於數據庫增量日志解析,提供增量數據訂閱&消費,目前主要支持了mysql
關鍵詞: mysql binlog parser / real-time / queue&topic
工作原理
mysql主備復制實現
- master將改變記錄到二進制日志(binary log)中(這些記錄叫做二進制日志事件,binary log events,可以通過show binlog events進行查看);
- slave將master的binary log events拷貝到它的中繼日志(relay log);
- slave重做中繼日志中的事件,將改變反映它自己的數據。
canal的工作原理:
原理相對比較簡單:
- canal模擬mysql slave的交互協議,偽裝自己為mysql slave,向mysql master發送dump協議
- mysql master收到dump請求,開始推送binary log給slave(也就是canal)
- canal解析binary log對象(原始為byte流)
相關文檔
See the wiki page for : wiki文檔
wiki文檔列表
- Home
- Introduction
- 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文檔:版本發布信息
- 整體性能測試&優化,提升了150%. #726 參考: 【Performance】
- 原生支持prometheus監控 #765 【Prometheus QuickStart】
- 原生支持kafka消息投遞 #695 【Canal Kafka QuickStart】
- 原生支持aliyun rds的binlog訂閱 (解決自動主備切換/oss binlog離線解析) 參考: 【Aliyun RDS QuickStart】
- 原生支持docker鏡像 #801 參考: 【Docker QuickStart】
多語言業務
- 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
- canal作為MySQL binlog的增量獲取工具,可以將數據投遞到MQ系統中,比如Kafka/RocketMQ,可以借助於MQ的多語言能力
版本相關
1. 建議版本:1.1.0
-
下載發布包:download
-
maven依賴
<dependency> <groupId>com.alibaba.otter</groupId> <artifactId>canal.client</artifactId> <version>1.1.0</version> </dependency>
- 詳細的issues列表可查看:ReleaseNotes
相關資料
- ADC阿里技術嘉年華分享ppt (放在google docs上,可能需要翻牆): ppt下載
- 與阿里巴巴的RocketMQ配合使用
。。。