默认情况下,组复制的组通信引擎(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
。 如果在启动组时将 group_replication_paxos_single_leader
设置为 ON
,并且其通信协议版本为 MySQL 8.0.27 或更高版本,则该字段设置为 1。 仅对处于 ONLINE
或 RECOVERING
状态的组成员返回此信息。