Active-active replication II

监控Active-active replication

我们可以使用MySQL performance shcema 来监控active-active replication。这些performance schema表格 显示了与group replication相关的特定信息。

连接到任何一个 RDS for MySQL实例:

mysql -u $DBUSER -p$DBPASS -h [endpoint]

通过运行以下查询确认group replication在所有DB实例上都在运行。:

select * from performance_schema.replication_group_members;

image-20240706071253689

观察到所有DB实例的MEMBER_STATE都是ONLINE,并且它们的MEMBER_ROLE列显示它们都是PRIMARY。因此,这组RDS for MySQL实例正在多主模式下运行。

要监控复制状态,请运行以下查询。performance_schema.replication_group_member_stats表提供了与认证过程相关的组级信息,以及每replication group成员接收和发起的事务的统计信息。

select * from performance_schema.replication_group_member_stats\G

image-20240706071400338

观察到所有三个RDS for MySQL实例都属于同一个recovery channel CHANNEL_NAME: group_replication_applier。这表明所有DB实例都在同一个active-active replication group中。

这些列对于监控连接在组中的成员的性能很重要:

假设组中的一个成员总是报告其队列中有大量的事务,而其他成员则没有。这意味着该成员延迟了,无法与组中的其他成员保持同步。基于这些信息,我们可以决定是将该成员从组中移除,还是延迟其他成员的事务处理,以减少排队的事务数量。这些信息还可以帮助我们决定如何调整replication group流量控制

可用性

  • 三台实例中的一台发生了重启,在重启结束后,它也能再加入到active-active replication group

  • 假如某台实例下线,后面又重新加入了replication group, 那么中间缺失的数据也会被同步过来