暂无图片
暂无图片
8
暂无图片
暂无图片
暂无图片

MySQL高可用--MGR入门(2)组复制监控常用相关表

原创 陈家睿 2021-11-17
9592


MGR单个节点状态

MGR整个组的状态

主要用到4张表

performance_schema.replication_group_member_stats

performance_schema.replication_group_members

performance_schema.replication_connection_status

performance_schema.replication_applier_status


1. replication_group_member_stats

是用来展示组复制所有成员信息的表,有关验证和应用程序的统计信息对于了解申请队列增长情况、触发了多少冲突、检查了多少事务、哪些事务已被所有成员提交等等非常有用。

这张表主要是监控各个节点的性能,如果出现某个节点的事务号和其他节点差很多,那这个节点肯定出现了延迟,如果长时间的延迟,极有可能被群员投票给踢出去。

这张表只有在配置组复制后才会有数据。其中字段包括。

其中最重要的列,也是经常被观察的指数如下
COUNT_TRANSACTTIONS_IN_QUEUE:组复制队列中等待冲突检测的事务数,只有当冲突检测通过才会排队应用到各个节点上(远程等待被确认的事务数)
COUNT_TRANSACTIONS_REMOTE_IN_APPLIER_QUEUE:当前节点收到的等待的事务数(远程的事务还有多少没有被应用)
COUNT_TRANSANCTIONS_CHECKED:已经通过冲突检测的事务数
COUNT_TRANSACTIONS_REMOTE_APPLIED:当前节点收到的应用的事务数(本地已经应用的事务数)
COUNT_TRANSACTIONS_LOCAL_PROPOSED:源自此成员并发送给复制组的事务数。(本地已经提交的事务数)
----------------------------------------------------------------------------------------------------------------------------

CANNEL_NAME:这个组复制通道的名称
VIEW_ID:组复制对应的视图号
MEMBER_ID:复制中组成员的 ID,这个 ID 和本身 mysql 实例的 UUID 没关系
COUNT_CONFLICTS_DETECTED:未通过冲突检测的事务数
COUNT_TRANSACTIONS_ROWS_VALIDATING:冲突检查数据库的大小
TRANSACTIONS_COMMITTED_ALL_MEMBERS:已在复制组的所有成员上成功提交的事务,显示为 GTID 集。
LAST_CONFLICT_FREE_TRANSACTION:最后一次冲突事务的 GITD 号
COUNT_TRANSACTIONS_REMOTE_APPLIED:当前节点收到的应用的事务数
COUNT_TRANSACTIONS_LOCAL_PROPOSED:源自此成员并发送给复制组的事务数。
COUNT_TRANSACTIONS_LOCAL_ROLLBACK:源自此成员并被复制组回滚的事务数。


2.replication_group_members

用于监控组内成员复制状态的表

CHANNEL_NAME:组复制的通道名

MEMBER_ID:组成员 ID

MEMBER_HOST:组成员的主机名

MEMBER_PORT:组成员数据库实例端口,注意这里是实例端口

MEMBER_STATE:组成员当前的状态,这个栏位总共有 4 个状态Online 表示正常工作状态,表示该节点目前一切 OK。

Recovering 表示节点正在加入组中,这个状态有可能是正在同步数据,也有可能是正在和主节点发生通信,如果长期处于这个状态,往往是 host 没配,需要检查下 host 配置
Offline 表示这个节点的组复制插件已经加载
Unreachable 表示经过仲裁,某个节点已经崩溃或者不可访问。 

MEMBER_ROLE:成员在组内的角色,如果是单主模式,主的节点就会显示 PRIMARY,其他节点显示 SECONDARY,如果是多主模式,所有节点均为 PRIMARY

MEMBER_VERSION:mysql 的版本


3. replication_connection_status

用于记录当前节点连接状态的表

CHANNEL_NAME:组复制通道名。

GROUP_NAME:组复制名,就是组的 UUID 号。

SOURCE_UUID:组复制源的 UUID 号。

THREAD_ID:组复制 I/O 功能的 threadid

SERVICE_STATE:显示成员当前的活跃状态,

COUNT_RECEIVED_HEARTBEATS:从上一次重置主从后获得的心跳数

LAST_HEARTBEAT_TIMESTAMP:节点的最后一次心跳时间

RECEIVED_TRANSACTION_SET:与该从站接收的所有事务相对应的一组全局事务 ID(GTID)。如果未使用 GTID,则为空。

LAST_ERROR_NUMBER:最后一次 I/O 同步线程错误编号,0 为无错误

LAST_ERROR_MESSAGE:最后一次 I/O 同步线程错误日志,记录在 mysql 错误日志中

LAST_ERROR_TIMESTAMP:最后一次 I/O 线程错误的时间。

LAST_QUEUED_TRANSACTION:该节点同步的 relay log 中最后一个事务的 GTID 号

LAST_QUEUED_TRANSACTION_ORIGINAL_COMMIT_TIMESTAMP:最后一次,在各个节点中写入的事务准备好提交,产生写集并且发送到各个节点做冲突校验时候的时间。

LAST_QUEUED_TRANSACTION_IMMEDIATE_COMMIT_TIMESTAMP:最后一次事务最终提交的时间。LAST_QUEUED_TRANSACTION_START_QUEUE_TIMESTAMP:I / O 线程将最后一个事务放置在 relaylog 中的时间

LAST_QUEUED_TRANSACTION_END_QUEUE_TIMESTAMP:进入 relaylog 排队的时间

QUEUEING_TRANSACTION:当前 relaylog 中全局事务的 ID

QUEUEING_TRANSACTION_ORIGINAL_COMMIT_TIMESTAMP:当前事务进入写集的时间

QUEUEING_TRANSACTION_IMMEDIATE_COMMIT_TIMESTAMP:当前事务最后提交的时间

QUEUEING_TRANSACTION_START_QUEUE_TIMESTAMP:当前日志进入 relaylog 的时间


可用此表来判断延迟

select RECEIVED_TRANSACTION_SET from replication_connection_status where CHANNEL_NAME='group_replication_applier'
union all
select VARIABLE_VALUE from global_variables where VARIABLE_NAME ='gtid_executed';

本地已经执行的GTID和接收到远程的GTID的差异


4. replication_applier_status

用于显示当前组复制线程干了啥的表

CHANNEL_NAME:复制通道的名字

SERVICE_STATE:当复制通道的应用程序线程处于活动或空闲状态时显示为 ON,表示关闭时,应用程序线程未处于活动状态

REMAINING_DELAY:同步复制线程的延迟时间。

COUNT_TRANSACTIONS_RETRIES:SQL 线程无法应用日志重试的次数


最后修改时间:2021-11-19 11:09:12
「喜欢这篇文章,您的关注和赞赏是给作者最好的鼓励」
关注作者
1人已赞赏
【版权声明】本文为墨天轮用户原创内容,转载时必须标注文章的来源(墨天轮),文章链接,文章作者等基本信息,否则作者和墨天轮有权追究责任。如果您发现墨天轮中有涉嫌抄袭或者侵权的内容,欢迎发送邮件至:contact@modb.pro进行举报,并提供相关证据,一经查实,墨天轮将立刻删除相关内容。

文章被以下合辑收录

评论