mysql跨機房異地區的主從資料庫同步備份業務實現解決方案
阿新 • • 發佈:2019-08-26
mysql跨機房異地區的主從資料庫同步備份業務實現解決方案
2018年11月14日 17:16:02 南通SEO 閱讀數 1857mysql跨機房異地區的主從資料庫同步備份業務實現解決方案
背景
早期,阿里巴巴B2B公司因為存在杭州和美國雙機房部署,存在跨機房同步的業務需求。不過早期的資料庫同步業務,主要是基於trigger的方式獲取增量變更,不過從2010年開始,阿里系公司開始逐步的嘗試基於資料庫的日誌解析,獲取增量變更進行同步,由此衍生出了增量訂閱&消費的業務,從此開啟了一段新紀元。
ps. 目前內部版本已經支援mysql和oracle部分版本的日誌解析,當前的canal開源版本支援5.7及以下的版本(阿里內部mysql 5.7.13, 5.6.10, mysql 5.5.18和5.1.40/48)
基於日誌增量訂閱&消費支援的業務:
- 資料庫映象
- 資料庫實時備份
- 多級索引 (賣家和買家各自分庫索引)
- 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流)
重要版本更新說明
canal 1.1.x系列,參考release文件:版本釋出資訊
- 整體效能測試&優化,提升了150%. #726 參考: 【Performance】
- 原生支援prometheus監控 #765 【Prometheus QuickStart】
- 原生支援kafka訊息投遞 #695 【Canal Kafka/RocketMQ QuickStart】
- 原生支援aliyun rds的binlog訂閱 (解決自動主備切換/oss binlog離線解析) 參考: 【Aliyun RDS QuickStart】
- 原生支援docker映象 #801 參考: 【Docker QuickStart】
相關文件
See the wiki page for : wiki文件
wiki文件列表
- Home
- Introduction
- QuickStart
- AdminGuide
- ClientExample
- ClientAPI
- Performance
- DevGuide
- BinlogChange(Mysql5.6)
- BinlogChange(MariaDB)
- TableMetaTSDB
- ReleaseNotes
- Download
- FAQ
多語言業務
- 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的多語言能力
相關資料
- ADC阿里技術嘉年華分享ppt (放在google docs上,可能需要翻牆): ppt下載
- 與阿里巴巴的RocketMQ配合使用
相關開源
- 阿里巴巴分散式資料庫同步系統(解決中美異地機房):http://github.com/alibaba/otter
- 阿里巴巴去Oracle資料遷移同步工具(目標支援MySQL/DRDS):http://github.com/alibaba/yugong