20.7.3 单一共识领导者
默认情况下,Group Replication(XCom,Paxos变体)的组通信引擎使用复制组中的每个成员作为领导者。组通信引擎可以在单一主模式下使用单个共识领导者来驱动共识。当复制组的一些次要成员当前不可达时,这种操作方式特别有助于提高性能和可靠性。
要使用单个共识领导者,组必须按照以下配置:
-
组必须处于单一主模式下。
-
系统变量
group_ replication_paxos_single_leader
必须设置为ON
。默认设置为OFF
,行为将被禁用。在更改此设置时,您需要对复制组进行完整的重启(bootstrap)以便Group Replication能够捕捉到变化。 -
必须将Group Replication通信协议版本设置为8.0.27或更高。使用
group_ replication_get_communication_protocol()
函数查看组的通信协议版本。如果正在使用较低版本,组不能使用该行为。您可以使用group_ replication_set_communication_protocol()
函数将组的通信协议设置为更高版本,如果所有组成员支持它。MySQL InnoDB集群自动管理通信协议版本。更多信息,请见第20.5.1.4节,“设置组的通信协议版本”。
在这种配置中,组复制指示组通信引擎使用组的primary
作为驱动共识的唯一领导者。当选出一个新的 primary 时,组复制会告诉组通信引擎改用它。如果 primary 当前不健康,组通信引擎会使用另一个成员作为共识领导者。性能模式表 replication_group_communication_information
显示当前的首选和实际共识领导者,首选领导者是组复制的choice
,实际领导者是由组通信引擎选择的。
如果组在多主模式下、通信协议版本较低或由group_replication_paxos_single_leader
设置禁用,则所有成员都将作为领导者来驱动一致性。在这种情况下,性能chema表replication_group_communication_information
将显示所有成员都是首选和实际领导者。
性能chema表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。该信息仅返回在线状态或恢复中状态的组成员。