預設情況下,群組複製的群組通訊引擎(XCom,Paxos 的變體)會使用複製群組的每個成員作為領導者。當群組處於單主機模式時,群組通訊引擎可以使用單一領導者來驅動共識。以單一共識領導者運作可改善單主機模式的效能和復原能力,尤其是在群組的部分次要成員目前無法連線時。
若要使用單一共識領導者,必須將群組設定如下
群組必須處於單主機模式。
group_replication_paxos_single_leader
系統變數必須設定為ON
。使用預設設定OFF
時,此行為會停用。您必須完整重新開機複製群組(啟動),群組複製才會採用此設定的變更。群組複製通訊協定版本必須設定為 8.0.27 或更新版本。使用
group_replication_get_communication_protocol()
函式來檢視群組的通訊協定版本。如果使用較低的通訊協定版本,群組就無法使用此行為。如果所有群組成員都支援,您可以使用group_replication_set_communication_protocol()
函式將群組的通訊協定設定為較高版本。MySQL InnoDB Cluster 會自動管理通訊協定版本。如需詳細資訊,請參閱第 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
。如果群組在啟動時 group_replication_paxos_single_leader
設定為 ON
,且其通訊協定版本為 MySQL 8.0.27 或以上,則此欄位會設定為 1。此資訊只會針對處於 ONLINE
或 RECOVERING
狀態的群組成員傳回。