說MGR - 單獨的通信機制

雖然MGR會使用Slave的通道,但只是使用這個通道的執行線程(Applier Thread)來執行Binlog Event,並沒有使用這個通道來傳輸Binlog Event。MGR沒有使用異步複製的Binlog Event傳輸機制,也不使用MySQL的服務端口來進行通信。MGR創建了一個獨立的TCP端口來進行通信,各個MySQL服務器上的Group Replication插件通過這個端口連接在一起,兩兩之間可以直接通信。


Binlog Event的傳輸並不像異步複製那樣是簡單的點到點之間的傳輸。MGR在傳輸數據時,使用了Paxos協議。Paxos協議保證了數據傳輸的一致性和原子性。MGR基於Paxos協議構建了一個分佈式的狀態機複製機制,這是實現多主複製的核心技術。這個技術爲MGR帶來了3個主要優點,分別如下。


1.MGR中不會出現腦裂的現象(但要注意可能出現網絡分區的情況,MGR根據參數group_replication_unreachable_majority_timeout=0/N設置的不同,行爲稍有不同)。


2.MGR的冗餘能力很好,能夠保證Binlog Event至少被複制到超過一半的成員上,只要同時宕機的成員不超過半數便不會導致數據丟失。


3.MGR還保證只要Binlog Event沒有被傳輸到半數以上的成員,本地成員不會將事務的Binlog Event寫入Binlog文件和提交事務,從而保證宕機的服務器上不會有組內在線成員上不存在的數據。因此,宕機的服務器重啓後,不再需要特殊的處理就可以加入組。

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章