一、摘要
《MySQL同步工具otter的使用介紹》將分為五篇文章詳細介紹如何使用otter來進行MySQL的數據同步。
本文將簡單介紹otter的背景和原理。
otter項目github地址:GitHub - alibaba/otter: 阿里巴巴分布式數據庫同步系統(解決中美異地機房)
二、otter項目背景
阿里巴巴B2B公司,因為業務的特性,賣家主要集中在國內,買家主要集中在國外,所以衍生出了杭州和美國異地機房的需求,同時為了提升用戶體驗,整個機房的架構為雙A,兩邊均可寫,由此誕生了otter這樣一個產品。
otter第一版本可追溯到04~05年,此次外部開源的版本為第4版,開發時間從2011年7月份一直持續到現在,目前阿里巴巴B2B內部的本地/異地機房的同步需求基本全上了otte4。
目前同步規模:
- 同步數據量6億
- 文件同步1.5TB(2000w張圖片)
- 涉及200+個數據庫實例之間的同步
- 80+台機器的集群規模
三、otter同步簡介
(1)工作原理架構圖
描述:
1. 基於Canal開源產品,獲取數據庫增量日志數據。
2. 典型管理系統架構,manager(web管理)+node(工作節點)
a. manager運行時推送同步配置到node節點
b. node節點將同步狀態反饋到manager上
3. 基於zookeeper,解決分布式狀態調度的,允許多node節點之間協同工作.
(2)基於otter可以實現的功能
1.基於binlog位點信息實現源端MySQL-目標端MySQL的准實時同步(測試下來,在沒有大事務的或者慢SQL的情況下,同步延遲在秒級)
2.可以配置正則表達式,實現庫到庫的同步,表到表的同步,同步顆粒度可以精確到某一列
3.可以通過正則表達式或者配置canal過濾掉不需要同步的表
4.可以正常同步DDL語句,並且跳過DDL異常
5.可以進行表的批量配置,后續會介紹到如何批量配置表的同步
6.可以在配置中嵌入代碼,實現簡單的etl
7.otter社區版支持源端MySQL-目標端Oracle的同步
8.MySQL雙向同步(此功能仍待驗證,生產環境不建議使用雙向同步)
(3)otter相較於傳統的MySQL主備模式的優點
1.靈活程度更高,可以選擇同步哪些庫,哪些表,過濾哪些表,甚至可以選擇同步哪些列
2.圖形化界面配置,可以清楚看到同步延時,同步狀態,數據變化情況,便於運維和分析問題
3.分布式同步工具,可以配置多個node,提高同步效率
4.支持代碼內嵌,可以通過代碼的方式,實現etl過程
5.支持Oracle與MySQL之間的同步