MySQL組復制MGR(一)-- 技術概述


(一)復制技術的發展

MySQL的復制技術主要經歷了異步主從復制,半同步復制,組復制(Group Replication)3個階段。

(1)傳統的異步主從復制

傳統的MySQL提供了一種簡單的主從復制方法。有1個主服務器(master),有1個或多個從服務器(slave),主服務器執行事務,然后提交,從服務器異步接收日志,並重新應用日志。

該架構存在的問題有:如果主服務器/數據庫crash了,日志沒有完成傳送到備庫,那么當備庫切換為主庫的時候,可能存在數據丟失的風險。

異步復制架構如下:

wps1

                                     圖1.MySQL Asynchronous Replication


(2)半同步復制

半同步復制向同步協議添加一個步驟,這意味着主庫在執行提交的時候,需要等待從庫確認已經接收到事務,才能進行提交。

該架構存在的問題有:主庫必須等待備庫接收到日志並返回響應才算完成事物,造成了主庫的延遲,這個延遲最少是一個TCP/IP往返的時間,因此半同步復制最好在延遲低的網絡中使用

半同步復制架構如下:

wps2

                                    圖2.MySQL semisynchronous Replication


(3)組復制

組復制是一種可用於實施容錯系統的技術。組復制是一組服務器,每個服務器都有自己的完整數據副本,並通過消息傳遞相互交互。一個組復制由多個服務器組成,該組中的每個服務器都可以隨時獨立執行事務。但是,所有讀寫事務僅在獲得組批准后才提交,換句話說,對於任何讀寫事務,該組都需要確定提交,因此提交操作不是來自原始服務器的單方面決定。只讀事務不需要組內協調,可以立即提交。

組復制可以是單主模式和多主模式,多主模式意味所有組成員都可以執行寫操作,這樣就可能存在事務沖突,根據組復制沖突監測機制,如果存在兩個不同的server成員更新同一行的並發事務,排在最前面的可以在所有server成員上提交,第二個事務在源server上回滾,並在組中的其它server上刪除。

wps3

                                      圖3.MySQL Group Replication


關於三種復制技術,個人覺得:異步復制提供了主從方案,降低了單節點運行數據庫的風險;后續的半同步復制是異步主從復制的加強,解決了數據丟失的風險,但是依然存在網絡延遲,切換麻煩的問題(例如10個節點,1主9從,主節點宕機,當把一個從節點提升為主節點后,其它節點需要手動修改master),而組復制則擁有了自動故障轉移failover的能力,當主節點發生故障(單主模式才需考慮)時,組內部會自動選擇主節點。


(二)組復制的容錯能力

組復制建立在Paxos分布式算法之上,以提供服務器之間的分布式協調,因此,他需要大多數服務器處於活動狀態才能正常工作。如果有n台服務器,最多允許故障的服務器數量為f,那么n與f之間的關系為:n=2f+1。或許這么看有些難以理解,可以看下面的關系:

組復制服務器數量 多數 允許故障的服務器數量
1 1 0
2 2 0
3 2 1
4 3 1
5 3 2
6 4 2
7 4 3


對組復制有了一定的了解,接下來,我們一起來搭建組復制。。。


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM