目录
17.4 Monitoring Group Replication
17.4.1 Group Replication Server States
17.4.2 The replication_group_members Table
17.4.3 The replication_group_member_stats Table
17.4 Monitoring Group Replication
17.4.1 Group Replication Server States
服务器实例可以处于各种状态。如果服务器正常通信,则所有服务器报告的所有服务器状态都相同。但是,如果存在网络分区或服务器离开组,则根据查询的服务器,可能会报告不同的信息。如果服务器离开了组,那么它就无法报告其他服务器状态的更新信息。如果存在分区,以至于丧失了法定人数,服务器将无法在彼此之间协调。因此,它们无法猜测不同服务器的状态。因此,它们报告一些服务器无法访问,而不是猜测它们的状态。
Table 17.1 Server State
Field | Description | Group Synchronized |
---|---|---|
| The member is ready to serve as a fully functional group member, meaning that the client can connect and start executing transactions. | Yes |
| The member is in the process of becoming an active member of the group and is currently going through the recovery process, receiving state information from a donor. | No |
| The plugin is loaded but the member does not belong to any group. | No |
| The state of the member. Whenever there is an error on the recovery phase or while applying changes, the server enters this state. | No |
| Whenever the local failure detector suspects that a given server is not reachable, because for example it was disconnected involuntarily, it shows that server's state as | No |
重要提示
一旦实例进入错误状态,super_read_only选项将设置为ON。要退出错误状态,必须手动配置实例super_read_only=OFF。
请注意,Group Replication不是同步的,但最终是同步的。更准确地说,事务以相同的顺序传递给所有组成员,但它们的执行不是同步的,这意味着在事务被接受提交后,每个成员以自己的速度提交。
17.4.2 The replication_group_members Table
performance_schema.replication_group_members表用于监视作为组成员的不同服务器实例的状态。每当视图发生变化时,例如当配置组时动态更改时新成员加入时,表中的信息就会更新。在这时,服务器会交换一些元数据以使自己同步,并继续共同合作。这些信息在作为复制组成员的所有服务器实例之间共享,因此可以从任何成员查询所有组成员的信息。该表可用于获取复制组状态的高级视图,例如通过执行以下查询:
SELECT * FROM performance_schema.replication_group_members;
+---------------------------+--------------------------------------+--------------+-------------+--------------+
| CHANNEL_NAME | MEMBER_ID | MEMBER_HOST | MEMBER_PORT | MEMBER_STATE |
+---------------------------+--------------------------------------+--------------+-------------+--------------+
| group_replication_applier | 041f26d8-f3f3-11e8-adff-080027337932 | example1 | 3306 | ONLINE |
| group_replication_applier | f60a3e10-f3f2-11e8-8258-080027337932 | example2 | 3306 | ONLINE |
| group_replication_applier | fc890014-f3f2-11e8-a9fd-080027337932 | example3 | 3306 | ONLINE |
+---------------------------+--------------------------------------+--------------+-------------+--------------+
根据此结果,我们可以看到该组由三个成员组成,每个成员的主机和端口号,客户端用于连接到成员的端口号,以及成员的服务器UUID。MEMBER_STATE列显示了17.4.1节“Group Replication Server States”中的一个状态,在这种情况下,它显示该组中的所有三个成员都是ONLINE状态,MEMBER_ROLE列显示有两个从属成员和一个主要成员。因此,该组必须以单主模式运行。当您升级一个组并合并运行不同MySQL版本的成员时,MEMBER_VERSION列可能很有用。有关更多信息,请参阅17.4.1节“Group Replication Server States”。
有关Member_host值及其对分布式恢复过程的影响的更多信息,请参阅17.2.1.3节“用户凭据”。
17.4.3 The replication_group_member_stats Table
在复制组中,每个成员都对组接收的事务进行认证和应用。关于认证器和应用程序过程的统计信息对于了解应用程序队列的增长情况、找到了多少冲突、检查了多少事务、哪些事务在所有地方都提交了等等非常有用。
performance_schema.replication_group_member_stats表提供了与认证过程相关的组级信息,以及每个复制组成员接收和生成的事务的统计信息。这些信息在作为复制组成员的所有服务器实例之间共享,因此可以从任何成员查询所有组成员的信息。请注意,远程成员的统计信息的刷新受group_replication_flow_control_period选项中指定的消息周期的控制,因此这些统计信息可能与在查询时收集的成员的本地统计信息略有不同。要使用此表监视Group Replication成员,请发出以下语句:
mysql> SELECT * FROM performance_schema.replication_group_member_stats\G
这些列对于监视连接到组中的成员的性能非常重要。假设组中的一个成员始终报告其队列中的事务数比其他成员多。这意味着该成员延迟,并且无法与组的其他成员保持最新状态。根据这些信息,您可以决定要么从组中删除该成员,要么延迟其他组成员上的事务处理,以减少排队的事务数。这些信息还可以帮助您决定如何调整Group Replication插件的流控制,请参阅17.9.7.3节“流控制”。