在组复制中,有一张表用来监视组中各成员的不同实例的状态。表信息会随着视图的更改而变更,当组中成员动态变化时,实例之间会交互一些元数据信息并继续合作。该表信息在所有实例之间共享的。
组成员表信息
mysql> select * from performance_schema.replication_group_members ;
+---------------------------+--------------------------------------+--------------+-------------+--------------+-------------+----------------+
| CHANNEL_NAME | MEMBER_ID | MEMBER_HOST | MEMBER_PORT | MEMBER_STATE | MEMBER_ROLE | MEMBER_VERSION |
+---------------------------+--------------------------------------+--------------+-------------+--------------+-------------+----------------+
| group_replication_applier | 7704c3a4-8927-11ea-b68b-08688d61c0df | 10.168.16.17 | 3010 | ONLINE | PRIMARY | 8.0.19 |
| group_replication_applier | acf9368d-8923-11ea-825b-08688d61c1b7 | 10.168.16.16 | 3009 | ONLINE | SECONDARY | 8.0.19 |
| group_replication_applier | bc0d147b-891f-11ea-ae49-08688d61c0e5 | 10.168.16.15 | 3008 | ONLINE | SECONDARY | 8.0.19 |
+---------------------------+--------------------------------------+--------------+-------------+--------------+-------------+----------------+
详解 MEMBER_STATE
成员的状态有以下几种:
ONLINE:
1 | 成员随时可以作为一个功能齐全的组成员,也就是说客户端可以连接并执行事务 |
RECOVERING:
1 | 成员已加入组,正在接受donor的数据传输,处于恢复过程 |
OFFLINE:
1 | 游离在组外,未加入组(组中正常的成员执行:stop group_replication命令后,该成员状态变化:ONLINE-->OFFLINE 并从中剔除) |
ERROR:
1 | 成员处于错误状态,不能作为组成员正常运行,处于退出状态,根据退出操作设置的状态, |
UNREACHABLE:
1 | 故障检测过程怀疑此成员无法联系,组消息已超时。 |