MySQL MGR 有哪些優(yōu)點
MGR(Mysql Group Replication)是5.7版本新加的特性,是一個MySQL插件。
MGR 是一個新的高可用與高擴展的方案,集群中的任何節(jié)點數(shù)據(jù)都是一樣的,可以實現(xiàn)任何節(jié)點都可以寫入,實現(xiàn)了真正意義上的多主。
主要包含以下幾部分:
API層:負責完成和MySQL Server的交互,得到Server狀態(tài),完成事務(wù)的管理。
組件層:主要包括3個特定組件,Capture負責收集事務(wù)執(zhí)行的相關(guān)信息,Applier負責應用集群事務(wù)到本地,Recovery負責節(jié)點的數(shù)據(jù)恢復。
復制層:負責沖突驗證,接收和應用集群事務(wù)。
集群通信層:基于Paxos協(xié)議的集群通信引擎,以及和上層組件的交互接口。
MGR組復制:
基于傳統(tǒng)異步復制和半同步復制的缺陷——數(shù)據(jù)的一致性問題無法保證,MySQL官方在5.7.17版本正式推出組復制(MySQL Group Replication,簡稱MGR)。
由若干個節(jié)點共同組成一個復制組,一個事務(wù)的提交,必須經(jīng)過組內(nèi)大多數(shù)節(jié)點(N / 2 + 1)決議并通過,才能得以提交。如上圖所示,由3個節(jié)點組成一個復制組,Consensus層為一致性協(xié)議層,在事務(wù)提交過程中,發(fā)生組間通訊,由2個節(jié)點決議(certify)通過這個事務(wù),事務(wù)才能夠最終得以提交并響應。
引入組復制,主要是為了解決傳統(tǒng)異步復制和半同步復制可能產(chǎn)生數(shù)據(jù)不一致的問題。組復制依靠分布式一致性協(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í)行遠程發(fā)送過來的Binlog Event,并沒有使用這個通道來傳輸Binlog Event。MGR沒有使用異步復制的Binlog Event傳輸機制,也不使用MySQL的服務(wù)端口來進行通信。MGR創(chuàng)建了一個獨立的TCP端口來進行通信,各個MySQL服務(wù)器上的Group Replication插件通過這個端口連接在一起,兩兩之間可以直接通信。
Binlog Event的傳輸并不像異步復制那樣是簡單的點到點之間的傳輸。MGR在傳輸數(shù)據(jù)時,使用了Paxos協(xié)議。Paxos協(xié)議保證了數(shù)據(jù)傳輸?shù)囊恢滦院驮有浴GR基于Paxos協(xié)議構(gòu)建了一個分布式的狀態(tài)機復制機制,這是實現(xiàn)多主復制的核心技術(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至少被復制到超過一半的成員上,只要同時宕機的成員不超過半數(shù)便不會導致數(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)點的詳細內(nèi)容,更多關(guān)于MySQL MGR 的資料請關(guān)注腳本之家其它相關(guān)文章!
相關(guān)文章
將圖片保存到mysql數(shù)據(jù)庫并展示在前端頁面的實現(xiàn)代碼
這篇文章主要介紹了將圖片保存到mysql數(shù)據(jù)庫并展示在前端頁面,本文給的大家介紹的非常詳細,對大家的學習或工作具有一定的參考借鑒價值,需要的朋友可以參考下2021-05-05SQLServer 2005 自動備份數(shù)據(jù)庫的方法分享(附圖解教程)
SQLServer 2005 自動備份數(shù)據(jù)庫的方法分享(附圖解教程),使用sqlserver2005的朋友可以參考下。2011-09-09利用Mysql定時+存儲過程創(chuàng)建臨時表統(tǒng)計數(shù)據(jù)的過程
這篇文章主要介紹了利用Mysql定時+存儲過程創(chuàng)建臨時表統(tǒng)計數(shù)據(jù),本文通過實例代碼給大家介紹的非常詳細,對大家的學習或工作具有一定的參考借鑒價值,需要的朋友可以參考下2023-03-03Mysql 5.7.18安裝方法及啟動MySQL服務(wù)的過程詳解
這篇文章主要介紹了Mysql 5.7.18安裝方法及啟動MySQL服務(wù)的過程,非常不錯,具有參考借鑒價值,需要的朋友可以參考下2017-05-05淺談innodb_autoinc_lock_mode的表現(xiàn)形式和選值參考方法
下面小編就為大家?guī)硪黄獪\談innodb_autoinc_lock_mode的表現(xiàn)形式和選值參考方法。小編覺得挺不錯的,現(xiàn)在就分享給大家,也給大家做個參考。一起跟隨小編過來看看吧2017-03-03MySQL數(shù)據(jù)庫索引order?by排序精講
我們今天說的并不是大數(shù)據(jù)下該如何優(yōu)雅的排序,如何提升排序性能的問題,我們來仔細分析說一說MySQL中的排序問題,希望可以對正在閱讀的同學們有所啟迪幫助2021-11-11