MySQL組複製MGR(四)– 單主模式與多主模式

(一)概述
組複製可以運行在單主模式下,也可以運行在多主模式下,默認為單主模式。組的不同成員不能部署在不同模式下,要切換模式,需要使用不同配置重新啟動組而不是單個server。

相關參數如下:

# 該參數決定啟用單主模式(on)還是多主模式(off),默認單主模式
loose-group_replication_single_primary_mode=off             

# 在多主模式下部署時,將檢查語句以確保它們與該模式兼容。在多主模式下部署組複製時,將進行以下檢查:
#    --如果事務是在SERIALIZABLE隔離級別下執行的,則在與組同步時,其提交將失敗。
#    --如果事務是針對具有具有級聯約束的外鍵的表執行的,則該事務在與組同步時將無法提交。
#  這些檢查可以通過設置選項來禁用 group_replication_enforce_update_everywhere_checks 到FALSE。在單主要模式下部署時,此選項必須設置為FALSE。
loose-group_replication_enforce_update_everywhere_checks=on

(二)單主模式
在單主模式下,組中只有一個節點可執行寫操作,其它節點被自動設置為只讀模式,主伺服器通常是用於引導的第一個Server,後續所有其它的server設為只讀。

在單主模式下,當主節點失敗時,自動的選舉機制將選擇新的主節點,選舉方法如下:

  • 如果所有節點資料庫版本均相同,則選擇參數「group_replication_member_weight」值最大的節點作為主節點,如果多個伺服器具有相同的「group_replication_member_weight」,則根據資料庫實例的server_uuid排序,並選擇第一個伺服器。
  • 如果節點資料庫版本不一樣,則選舉過程會受影響。不過版本不一樣的情況較少,這裡不做討論。

Snipaste_2020-07-25_13-34-37

                                          圖.單主模式下的主節點選舉

對於單主模式,如果要找出哪個是主資料庫,可以使用下面的方法:

mysql> SHOW STATUS LIKE 'group_replication_primary_member'

(二)多主模式

多主模式每個節點都可以寫數據,因此不存在節點選舉,如果組成員發生故障,業務切換節點即可。

Snipaste_2020-07-25_13-48-10

                                     圖.多主模式下的業務切換