Mysql複製(Master/Slave實現)

來源:互聯網
上載者:User

標籤:

1、Mysql複製方式:

              * 基於行的複製(5.1中引入)

              * 基於語句的複製

      註:都是通過在主庫上記錄binlog、在備庫上重放日誌的方式來實現非同步資料複製的。這意味著,在同一時間點備庫上的資料可能與主庫存在不一致性,並且無法保證主備之間的延遲。


2、應用情境:

               * 資料分布: Mysql複製通常不會對頻寬造成很大的壓力,但是基於行的複製會比傳統的基於語句複製模式的頻寬壓力更大些。

               * 負載平衡: 通過Mysql複製可以裝讀操作分布到多個伺服器上,實現對讀密集型應用的最佳化,並且實現方便,通過簡單的代碼就可以實現基本的負載平衡。(如:對機器人名做寫入程式碼或將一個機器名指向多個IP地址。等等)

               * 備份資料

               * 高可用性和故障切換

              * Mysql升級測試


3、複製工作流程:

              1)在主庫上把資料更改記錄到二進位日誌中。

                        每次準備提交事務完成資料更新前,主庫將資料更新的事件記錄到二進位日誌中。Mysql會按事務提交的順序而非每條語句的執行順序來記錄二進位日誌。記錄完  成後,主會告訴儲存引擎可以提交事務;

               2)備庫將主庫上的日誌複製到自己的中繼日誌中。

                            由備庫啟動一個背景工作執行緒,稱為I/O線程, 跟主庫建立一個串連,然後在主庫上啟動一個特殊的二進位轉儲(binlog dump)線程(該線程沒有對應的sql命令),這個二進位轉儲線程會讀取主庫上二進位日誌中的事件。它不會對事件進行輪詢。如果該線程追趕上主庫,將進入休眠狀態,直到主庫發送訊號通知其有新的事件產生才會被喚醒,備庫IO線程會將接收到的事件記錄到中繼日誌中。

               3)備庫讀取中繼日誌中的事件,將其重放在備庫資料之上。


4、XXOO:

              Mysql基於語句與行複製,感覺與Redis的RDB與AOF實現都差不多。 估計Master與Slave這樣的架構都這麼實現吧


Mysql複製(Master/Slave實現)

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.