本文主要內容如下:1.分組複製產生的背景2.幾種複製技術的比較3.失效檢測4.組成員5.故障容忍度6.成員的節點狀態7.分組複製的兩種模式8.供體節點 1.分組複製產生的背景 多個MySQL服務組成的普通的複製體系存在必須的維護管理工作。MySQL分組複製技術使用MySQL組內通信協議提供瞭如下的好 ...
本文主要內容如下:
1.分組複製產生的背景
2.幾種複製技術的比較
3.失效檢測
4.組成員
5.故障容忍度
6.成員的節點狀態
7.分組複製的兩種模式
8.供體節點
1.分組複製產生的背景
多個MySQL服務組成的普通的複製體系存在必須的維護管理工作。MySQL分組複製技術使用MySQL組內通信協議提供瞭如下的好處:
(1)提供組內的MySQL服務之間的自動化協調。
(2)支持單個Primary體系或者多個Primary體系的分組。
(3)單個Primary體系的分組支持自動化的Primary選舉。
(4)多個Primary體系的分組支持自動化的所有Primary接收到更新。
(5)內置的分組服務提供了組內數據的一致性和可用性。
MySQL分組複製技術的應用場景:
(1)彈性複製。
滿足MySQL服務主機數量的動態增減的需求。
(2)高可用分片。分片技術(Sharding)作為一種流行的橫向擴展(scale-out)方法,一個MySQL分組可以為每一個分片提供高可用的解決方案。
(3)代替主從複製。在特定場景下普通的主從複製存在單點壓力問題,MySQL分組提供了伸縮性更好的解決方案。
(4)自治系統。 內置的複製協議支持自動化的MySQL分組。
2. 幾種複製技術的比較
MySQL提供的幾種複製技術的差別對比如下:
(1)非同步複製技術。
(2)半同步複製技術。
(3)分組複製技術。
3.失效檢測
MySQL分組複製提供了一種失效檢測機制,可以用於發現和報告哪些MySQL服務處於無響應狀態,這些無響應的MySQL服務被假定為掛掉了。這種掛掉暫時只是作為一種可疑情況。隨後,如果分組一致同意這種可疑情況屬實,則分組決定該MySQL服務已經實際上失效了。最後分組中的其它成員通過協調決策,將該MySQL服務從分組中排除掉。無響應指一個MySQL服務在規定的時間內沒有收到另一個MySQL服務的響應消息。
當一個MySQL服務被從分組中排除掉時,該MySQL服務同樣會探測到其它所有MySQL服務都沒響應,因此該MySQL服務會懷疑其它所有MySQL服務都掛掉了,但是由於無法得到證實,只能是懷疑,而且最後也沒有結果;在這種情況下,該MySQL服務不能執行任何本地的事務。
4. 組成員
MySQL分組複製依賴於稱為MySQL分組成員服務的分散式服務,該服務是以MySQL內置的插件的形式提供的。成員服務定義了哪些MySQL服務處於線上狀態並且正在參與分組事務。線上狀態列表以視圖的形式提供,每個分組成員將能夠取得一致的視圖。
當一個MySQL服務加入MySQL分組時,或者主動或被動的離開分組時,分組服務將更新這個視圖。
5. 故障容忍度
MySQL分組成員服務採用PAXOS分散式演算法來保證分散式一致性。PAXOS分散式演算法的介紹請參考這個網頁:https://baike.baidu.com/item/Paxos%20%E7%AE%97%E6%B3%95
MySQL分組中的成員數量與故障容忍度之間的關係由以下公式決定:
n = 2 x f + 1
其中,f是故障容忍度,n是分組成員的數量。此處故障容忍度是在不影響服務正常運行的情況下可以出現故障的服務的數量的最大值。
6. 成員的節點狀態
成員的節點狀態有以下幾種:
狀態 |
同步 |
描述 |
ONLINE |
是 |
節點線上。支持所有分組功能。隨時可執行事務。 |
RECOVERING |
否 |
節點線上。處於恢復狀態。正在從供體(donor)接收數據。 |
OFFLINE |
否 |
節點不線上。不屬於任何分組。 |
ERROR |
否 |
錯誤。自動將super_read_only設置為ON,需人工修改該變數。 |
UNREACHABLE |
否 |
不可達狀態。該節點被認為無響應,或者已經掛掉了。 |
7. 分組複製的兩種模式
MySQL分組複製技術提供了兩種模式:
(1)單主模式。
在一個分組中,只有一個成員處於Primary模式,而其它成員都處於Secondary模式。處於Primary模式的節點提供讀寫服務,而處於Secondary模式的節點只提供只讀服務。
(2)多主模式。
在一個分組中,有多個成員處於Primary模式,其餘成員處於Secondary模式。處於Primary模式的節點提供讀寫服務,而處於Secondary模式的節點只提供只讀服務。
單主模式和多主模式由系統變數來決定。
group_replication_single_primary_mode:
ON:單主模式。
OFF:多主模式。
預設情況下分組複製為單主模式。
8. 供體節點
在MySQL分組複製體系中,需要一個節點提供數據供其它節點進行複製,這個提供數據的節點稱為供體節點(donor)。供體節點隨機產生,在一個複製體系中,各個節點輪流擔任供體節點。如果當前供體節點無法連接,則使用後備供體節點。MySQL儘量確保每次產生的供體節點不相同。