前期回顾
这期的专题我们来介绍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
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
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
下表列出了其和show slave status\G命令的一些比较
MGR中 show slave status\G 无结果
5. replication_applier_status
该表显示当前SQL线程的状态,
下表列出了其和show slave status\G命令的一些比较
MGR中 show slave status\G 无结果
6. 查询哪个是主库
在单主模式下,如果发生切换我们会不知道哪一台是现有的主库,我们可以使用如下命令查看
SHOW STATUS LIKE 'group_replication_primary_member'
7. 参考资料