假設現有兩個機房,須要作到數據同步。mysql
如下是架構圖(實際架構圖根據現有機房架構和實際會比下圖複雜,但總體思路不變):sql
Mycat、Canal、Otter是關鍵的三項技術:數據庫
Mycat:數據庫分庫分表中間件,能夠管理一個mysql集羣,屏蔽了mysql集羣,對外假裝成mysql server,用戶無感知mysql集羣。架構
Canal:阿里巴巴開源產品,能夠讀取mysql二進制日誌文件,並解析成想要的數據。google
Otter:阿里巴巴開源產品,配合Canal能夠作到讀取二進制文件,解析出增量數據sql,而後執行sql到指定鏈接。日誌
流程:server
一、用戶插入一條數據到mycat中間件
二、mycat解析sql,分配sql到指定mysql數據庫同步
三、mysql(假設M1接收到數據)數據庫接收數據,根據主從配置,寫出二進制日誌。產品
四、mysql(M2)讀取二進制日誌同步數據,mysql(S)讀取二進制日誌同步數據,並寫出二進制日誌
五、Canal讀取二進制日誌,解析成sql
六、Otter接到sql,獲取鏈接,在機房B的mycat上執行sql
七、Otter收到sql執行回執,執行完畢。
注:
本文給予思路及具體技術方案,具體技術的應用及使用,請自行google。