默认情况下,组复制的组通信引擎 (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
状态时,才会返回此信息。