Mysql跨機房同步方案
阿新 • • 發佈:2019-08-27
Mysql跨機房同步方案
原 尚浩宇 釋出於 2016/05/19 17:01 字數 424 閱讀 3298 收藏 20 點贊 2 評論 0擼了今年阿里、網易和美團的面試,我有一個重要發現.......>>>
假設現有兩個機房,需要做到資料同步。
以下是架構圖(實際架構圖根據現有機房架構和實際會比下圖複雜,但整體思路不變):
Mycat、Canal、Otter是關鍵的三項技術:
Mycat:資料庫分庫分表中介軟體,可以管理一個mysql叢集,遮蔽了mysql叢集,對外偽裝成mysql server,使用者無感知mysql叢集。
Canal:阿里巴巴開源產品,可以讀取mysql二進位制日誌檔案,並解析成想要的資料。
Otter:阿里巴巴開源產品,配合Canal可以做到讀取二進位制檔案,解析出增量資料sql,然後執行sql到指定連線。
流程:
1、使用者插入一條資料到mycat
2、mycat解析sql,分配sql到指定mysql資料庫
3、mysql(假設M1接收到資料)資料庫接收資料,根據主從配置,寫出二進位制日誌。
4、mysql(M2)讀取二進位制日誌同步資料,mysql(S)讀取二進位制日誌同步資料,並寫出二進位制日誌
5、Canal讀取二進位制日誌,解析成sql
6、Otter接到sql,獲取連線,在機房B的mycat上執行sql
7、Otter收到sql執行回執,執行完畢。
注:
本文給予思路及具體技術方案,具體技術的應用及使用,請