1. 程式人生 > 資料庫 >MySQL MGR 有哪些優點

MySQL MGR 有哪些優點

MGR(Mysql Group Replication)是5.7版本新加的特性,是一個MySQL外掛。

MGR 是一個新的高可用與高擴充套件的方案,叢集中的任何節點資料都是一樣的,可以實現任何節點都可以寫入,實現了真正意義上的多主。

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協議的變體),實現了分散式下資料的最終一致性,提供了真正的資料高可用方案(是否真正高可用還有待商榷)。其提供的多寫方案,給我們實現多活方案帶來了希望。

MySQL MGR 有哪些優點

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 的資料請關注我們其它相關文章!