依預設,群組複寫的群組通訊引擎 (XCom,一種 Paxos 變體) 會使用複寫群組的每個成員作為領導者。當群組處於單一主要節點模式時,群組通訊引擎可以使用單一領導者來驅動共識。使用單一共識領導者運作可提升單一主要節點模式的效能和復原能力,尤其是在群組的部分次要成員目前無法連線時。
若要使用單一共識領導者,群組必須設定如下:
群組必須處於單一主要節點模式。
group_replication_paxos_single_leader
系統變數必須設定為ON
。使用預設設定OFF
時,會停用此行為。您必須執行複寫群組的完整重新啟動 (引導啟動) 才能讓群組複寫擷取此設定的變更。群組複寫通訊協定版本必須設定為 8.0.27 或更新版本。使用
group_replication_get_communication_protocol()
函式檢視群組的通訊協定版本。如果使用較低版本,群組就無法使用此行為。如果所有群組成員都支援,您可以使用group_replication_set_communication_protocol()
函式將群組的通訊協定設定為較高版本。MySQL InnoDB 叢集會自動管理通訊協定版本。如需更多資訊,請參閱章節 20.5.1.4,「設定群組的通訊協定版本」。
當此設定完成時,群組複寫會指示群組通訊引擎使用群組的主要節點作為單一領導者來驅動共識。當選出新的主要節點時,群組複寫會告知群組通訊引擎改為使用它。如果主要節點目前不健康,群組通訊引擎會使用替代成員作為共識領導者。效能架構表格 replication_group_communication_information
會顯示目前偏好和實際的共識領導者,其中偏好的領導者是群組複寫的選擇,而實際領導者則是群組通訊引擎選取的領導者。
如果群組處於多主節點模式、具有較低的通訊協定版本,或此行為因 group_replication_paxos_single_leader
設定而停用,則所有成員都會作為領導者來驅動共識。在此情況下,效能架構表格 replication_group_communication_information
會將所有成員顯示為偏好和實際領導者。
效能架構表格 replication_group_communication_information
中的欄位 WRITE_CONSENSUS_SINGLE_LEADER_CAPABLE
會顯示群組是否支援使用單一領導者,即使 group_replication_paxos_single_leader
目前在查詢的成員上設定為 OFF
也一樣。如果群組是以設定為 ON
的 group_replication_paxos_single_leader
啟動,且其通訊協定版本為 MySQL 8.0.27 或更新版本,則會將該欄位設定為 1。此資訊僅針對處於 ONLINE
或 RECOVERING
狀態的群組成員傳回。