默认情况下,Group Replication 的组通信引擎(XCom,Paxos 变体)使用复制组的每个成员作为领导者。在单主模式下,组通信引擎可以使用单一领导者来驱动共识,这可以提高性能和弹性,特别是在某些组成员当前不可达时。
要使用单一共识领导者,组必须按照以下方式配置:
-
组必须处于单主模式。
-
系统变量
group_replication_paxos_single_leader
必须设置为ON
。默认设置为OFF
,行为将被禁用。您必须对复制组执行完整的重新启动(引导)以便 Group Replication 承担该设置的更改。 -
Group Replication 通信协议版本必须设置为 8.0.27 或更高版本。使用
group_replication_get_communication_protocol()
函数查看组的通信协议版本。如果使用的是较低版本,组将无法使用该行为。您可以使用group_replication_set_communication_protocol()
函数将组的通信协议版本设置为较高版本,如果所有组成员都支持该版本。MySQL InnoDB Cluster 会自动管理通信协议版本。有关更多信息,请参阅 第 20.5.1.4 节,“设置组的通信协议版本”。
当该配置生效时,Group Replication 会指示组通信引擎使用组的主服务器作为单一领导者来驱动共识。当选出新的主服务器时,Group Replication 会指示组通信引擎使用它来代替。如果主服务器当前不健康,组通信引擎将使用备用成员作为共识领导者。性能模式表 replication_group_communication_information
显示当前的首选和实际共识领导者,其中首选领导者是 Group Replication 的选择,而实际领导者是组通信引擎所选择的。
如果组处于多主模式、通信协议版本较低或该行为被 group_replication_paxos_single_leader
设置禁用,那么所有成员将用作领导者来驱动共识。在这种情况下,性能模式表 replication_group_communication_information
将显示所有成员作为首选和实际领导者。
性能模式表 replication_group_communication_information
中的字段 WRITE_CONSENSUS_SINGLE_LEADER_CAPABLE
显示组是否支持使用单一领导者,即使 group_replication_paxos_single_leader
当前设置为 OFF
。该字段设置为 1,如果组是在 group_replication_paxos_single_leader
设置为 ON
的情况下启动的,并且其通信协议版本为 MySQL 8.0.27 或更高版本。该信息仅返回在线或恢复状态的组成员。