MySQL MGR 有哪些優點
MGR(Mysql Group Replication)是5.7版本新加的特性,是一個MySQL插件。
MGR 是一個新的高可用與高擴展的方案,集群中的任何節點數據都是一樣的,可以實現任何節點都可以寫入,實現了真正意義上的多主。
主要包含以下幾部分:
API層:負責完成和MySQL Server的交互,得到Server狀態,完成事務的管理。
組件層:主要包括3個特定組件,Capture負責收集事務執行的相關信息,Applier負責應用集群事務到本地,Recovery負責節點的數據恢復。
復制層:負責沖突驗證,接收和應用集群事務。
集群通信層:基于Paxos協議的集群通信引擎,以及和上層組件的交互接口。
MGR組復制:
基于傳統異步復制和半同步復制的缺陷——數據的一致性問題無法保證,MySQL官方在5.7.17版本正式推出組復制(MySQL Group Replication,簡稱MGR)。
由若干個節點共同組成一個復制組,一個事務的提交,必須經過組內大多數節點(N / 2 + 1)決議并通過,才能得以提交。如上圖所示,由3個節點組成一個復制組,Consensus層為一致性協議層,在事務提交過程中,發生組間通訊,由2個節點決議(certify)通過這個事務,事務才能夠最終得以提交并響應。
引入組復制,主要是為了解決傳統異步復制和半同步復制可能產生數據不一致的問題。組復制依靠分布式一致性協議(Paxos協議的變體),實現了分布式下數據的最終一致性,提供了真正的數據高可用方案(是否真正高可用還有待商榷)。其提供的多寫方案,給我們實現多活方案帶來了希望。
MGR是實現分布式數據庫架構,底層的分布式基礎是Paxos協議。通過Paxos來保證分布式數據庫系統中事務的提交順序。雖然MGR會使用Slave的通道,但只是使用這個通道的執行線程(Applier Thread)來執行遠程發送過來的Binlog Event,并沒有使用這個通道來傳輸Binlog Event。MGR沒有使用異步復制的Binlog Event傳輸機制,也不使用MySQL的服務端口來進行通信。MGR創建了一個獨立的TCP端口來進行通信,各個MySQL服務器上的Group Replication插件通過這個端口連接在一起,兩兩之間可以直接通信。
Binlog Event的傳輸并不像異步復制那樣是簡單的點到點之間的傳輸。MGR在傳輸數據時,使用了Paxos協議。Paxos協議保證了數據傳輸的一致性和原子性。MGR基于Paxos協議構建了一個分布式的狀態機復制機制,這是實現多主復制的核心技術。
三個主要優點:
1. 避免腦裂:MGR中不會出現腦裂的現象(但要注意可能出現網絡分區的情況,MGR根據參數group_replication_unreachable_majority_timeout=0/N設置的不同,行為稍有不同)。
2. 數據一致性保障:MGR的冗余能力很好,能夠保證Binlog Event至少被復制到超過一半的成員上,只要同時宕機的成員不超過半數便不會導致數據丟失。MGR還保證只要Binlog Event沒有被傳輸到半數以上的成員,本地成員不會將事務的Binlog Event寫入Binlog文件和提交事務,從而保證宕機的服務器上不會有組內在線成員上不存在的數據。因此,宕機的服務器重啟后,不再需要特殊的處理就可以加入組。
3. 多節點寫入支持:多寫模式下支持集群中的所有節點都可以寫入。
以上就是MySQL MGR 有哪些優點的詳細內容,更多關于MySQL MGR 的資料請關注好吧啦網其它相關文章!
相關文章: