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