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