前期回顾

这期的专题我们来介绍MySQL组复制相关的内容

主机名 业务IP 私有IP 复制用户 角色
rac1 11.12.14.29 10.10.10.11 rpl
rac2 11.12.14.30 10.10.10.12 rpl
rac3 11.12.14.39 10.10.10.13 rpl

上节我们说了MGR部署,这节的内容为如何监控MGR的状态

我们可以使用如下数据库表来监控,我们需要Performance Schema是开启的,一般都是开启的

1.组复制通道名称含义

1.1 group_replication_recovery

该通道用于同分布式恢复阶段相关的复制更改(replication changes),一般用于成员新加入时的恢复动作

1.2 group_replication_applier

该通道用于组的传入的变化(incoming changes),该通道用于应用直接从组内传来的事务,即成员间的事务的应用

2.replication_group_member_stats

该表用于展示组内成员的状态信息,它只在组复制运行时才会有结果

注意该表不可以被truncate

1.png
  • channel_name 组复制通道的名称
  • view_id 当前该组的view id,该ID会在成员关系发生变化时改变,如退出或者新增
  • member_id 为运行查询的机器的uuid
  • COUNT_TRANSACTIONS_IN_QUEUE 代表因为做冲突检测而需要等待的事务的数量,一旦冲突检测通过,其会进入应用的队列
  • COUNT_TRANSACTIONS_CHECKED 代表做过冲突检测的事务的数量
  • COUNT_CONFLICTS_DETECTED代表未通过冲突检测的事务的数量
  • COUNT_TRANSACTIONS_ROWS_VALIDATING 代表可以被用来做认证但还没有做垃圾收集的事务的数量
  • TRANSACTIONS_COMMITTED_ALL_MEMBERS 代表已经在组内所有成员中成功提交过的事务,以GTID 集合的形式展现,会以固定时间刷新
  • LAST_CONFLICT_FREE_TRANSACTION 最近的被检测冲突空闲事务(conflict free transaction)的事务标识符

3. replication_group_members

该表显示复制组内成员信息的网络和状态信息

注意该表不可以被truncate

2.png
  • channel_name 组复制通道的名称
  • member_id 代表组内成员的uuid
  • member_host 代表组内成员的网络地址(主机名或者IP地址),通过数据库hostname变量获得,注意这是共有地址,非私有的
  • MEMBER_PORT 代表数据库的监听端口,通过数据库port变量获得
  • MEMBER_STATE 代表成员当前的状态

他可以有如下状态 - OFFLINE 组复制插件已经被安装但没有被开启 - RECOVERING 成员已经被加入组中,正在回复数据库中 - ONLINE 代表成员已经加入组中并且同步完成,需确保成员处在该状态 - ERROR 代表成员遇到了错误,譬如无法加入组或者同步异常,请查看error日志排错 - UNREACHABLE 代表组无法和该成员通信,因为组信息超时

4. replication_connection_status

该表显示当前I/O线程的状态,I/O线程负责处理从库同主库间的连接

注意该表不可以被truncate

3.png

下表列出了其和show slave status\G命令的一些比较

MGR中 show slave status\G 无结果

4.png

5. replication_applier_status

该表显示当前SQL线程的状态,

5.png

下表列出了其和show slave status\G命令的一些比较

MGR中 show slave status\G 无结果

6.png

6. 查询哪个是主库

在单主模式下,如果发生切换我们会不知道哪一台是现有的主库,我们可以使用如下命令查看

SHOW STATUS LIKE 'group_replication_primary_member'
7.png

7. 参考资料

https://dev.mysql.com/doc/refman/5.7/en/group-replication-monitoring.html