默认情况下,组复制的组通信引擎(XCom,一种 Paxos 变体)使用复制组的每个成员作为领导者运行。从 MySQL 8.0.27 开始,当组处于单主模式时,组通信引擎可以使用单个领导者来驱动共识。与单个共识领导者一起运行可以提高单主模式下的性能和弹性,尤其是当该组的某些次要成员当前无法访问时。
要使用单个共识领导者,该组必须配置如下:
该组必须处于单主模式。
系统
group_replication_paxos_single_leader
变量必须设置为ON
。使用默认设置OFF
,该行为被禁用。您必须完全重新启动复制组(引导程序),以便组复制获取对此设置的更改。Group Replication通信协议版本必须设置为8.0.27或以上。使用该
group_replication_get_communication_protocol()
功能可以查看群组的通讯协议版本。如果正在使用较低版本,则该组不能使用此行为。如果所有群组成员都支持,您可以使用该group_replication_set_communication_protocol()
功能将群组的通信协议设置为更高版本。MySQL InnoDB Cluster 自动管理通信协议版本。有关详细信息,请参阅 第 18.5.1.4 节,“设置组的通信协议版本”。
当此配置到位时,组复制指示组通信引擎使用组的主要作为单一领导者来推动共识。When a new primary is elected, Group Replication tells the group communication engine to use it instead. 如果主要成员当前不健康,则组通信引擎将使用替代成员作为共识领导者。Performance Schema 表
replication_group_communication_information
显示了当前首选和实际的共识领导者,首选领导者是 Group Replication 的选择,实际领导者是群组通信引擎选择的领导者。
如果该组处于多主模式,具有较低的通信协议版本,或者该行为被
group_replication_paxos_single_leader
设置禁用,则所有成员都被用作领导者以推动共识。在这种情况下,性能模式表
replication_group_communication_information
将所有成员显示为首选领导者和实际领导者。
WRITE_CONSENSUS_SINGLE_LEADER_CAPABLE
Performance Schema 表
中
的字段replication_group_communication_information
显示该组是否支持使用单个领导者,即使
group_replication_paxos_single_leader
当前OFF
在查询的成员上设置为。如果组启动时
group_replication_paxos_single_leader
设置为ON
,并且其通信协议版本为 MySQL 8.0.27 或更高版本,则该字段设置为 1。此信息仅针对ONLINE
或
RECOVERING
州的群组成员返回。