1. 程式人生 > >Mysql跨機房同步方案

Mysql跨機房同步方案

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執行回執,執行完畢。

        注:

            本文給予思路及具體技術方案,具體技術的應用及使用,請