MySQL Group Replication(二)监控篇

文若1年前技术文章356


说明

组复制搭建成功后,为保证其正常运行,用户需要对组复制进行监控。MySQL 的 performance_schema 库中提供一些表,用于监控组复制的复制过程。

[performance_schema]>show tables like '%replication_group%';
+----------------------------------------------------+
| Tables_in_performance_schema (%replication_group%) |
+----------------------------------------------------+
| replication_group_communication_information        |
| replication_group_configuration_version            |
| replication_group_member_actions                   |
| replication_group_member_stats                     |
| replication_group_members                          |
+----------------------------------------------------+

1. 监控表介绍

1.1. replication_group_members

该表用于监控组复制成员的状态,当成员状态发生更新时,该表的信息会进行同步更新。

select * from performance_schema.replication_group_members;

root@mysql 10:43:  [performance_schema]>select * from replication_group_members\G
*************************** 1. row ***************************
              CHANNEL_NAME: group_replication_applier
                 MEMBER_ID: 4f4ab2eb-b0fd-11ed-b9e2-fa7581637800
               MEMBER_HOST: 172-16-104-55
               MEMBER_PORT: 3306
              MEMBER_STATE: ONLINE
               MEMBER_ROLE: SECONDARY
            MEMBER_VERSION: 8.0.32
MEMBER_COMMUNICATION_STACK: XCom
*************************** 2. row ***************************
              CHANNEL_NAME: group_replication_applier
                 MEMBER_ID: 9590bf9c-c302-11ed-8d53-faa7cd9c6a00
               MEMBER_HOST: 172-16-104-57
               MEMBER_PORT: 3306
              MEMBER_STATE: ONLINE
               MEMBER_ROLE: PRIMARY
            MEMBER_VERSION: 8.0.32
MEMBER_COMMUNICATION_STACK: XCom
*************************** 3. row ***************************
              CHANNEL_NAME: group_replication_applier
                 MEMBER_ID: eccc6b43-b0fc-11ed-8e74-fa0e3cc40b00
               MEMBER_HOST: 172-16-104-56
               MEMBER_PORT: 3306
              MEMBER_STATE: ONLINE
               MEMBER_ROLE: SECONDARY
            MEMBER_VERSION: 8.0.32
MEMBER_COMMUNICATION_STACK: XCom

用户可通过上方 SQL 查询组复制成员的状态。其中包含成员的元数据信息,例如端口、成员 ID 等。

1.1.1. MEMBER_STATE

表示当前成员的联机状态,有 ONLINE(成员在线)、OFFLINE(成员离线)、RECOVERING(成员恢复中)ERROR(成员发生错误) 和 UNREACHABLE(成员无法通信) 5 种。

1.1.2. MEMBER_ROLE

表示当前成员的角色,在单主模式下,成员的角色显示为 PRIMARY 和 SECONDARY 分别用于标识主要成员和次要成员。

1.1.3. MEMBER_VERSION

表示当前成员使用 MySQL 服务器版本,当进行升级或者多个版本组合使用时需要注意里面显示的信息。

1.2. replication_group_member_stats

该表提供了组复制中每个成员事务的验证和应用的统计信息,用户可以通过该表查询队列中正在增长的事务,已经检测多少冲突,有多少事务提交及正在等待提交,通过该表可以观测 MGR 的延迟情况。该表可以查到远程实例的信息,远程统计信息采集周期由 group_replication_flow_control_period 参数控制,默认为 1 秒。

select * from replication_group_member_stats;

root@mysql 11:18:  [performance_schema]>select * from replication_group_member_stats\G
*************************** 1. row ***************************
                              CHANNEL_NAME: group_replication_applier
                                   VIEW_ID: 16831711045345851:21
                                 MEMBER_ID: 4f4ab2eb-b0fd-11ed-b9e2-fa7581637800
               COUNT_TRANSACTIONS_IN_QUEUE: 0
                COUNT_TRANSACTIONS_CHECKED: 1
                  COUNT_CONFLICTS_DETECTED: 0
        COUNT_TRANSACTIONS_ROWS_VALIDATING: 3
        TRANSACTIONS_COMMITTED_ALL_MEMBERS: 9590bf9c-c302-11ed-8d53-faa7cd9c6a00:1-7,
a640da45-e4d1-11ed-a959-fa0e3cc40b00:1-23:1000020
            LAST_CONFLICT_FREE_TRANSACTION: a640da45-e4d1-11ed-a959-fa0e3cc40b00:23
COUNT_TRANSACTIONS_REMOTE_IN_APPLIER_QUEUE: 0
         COUNT_TRANSACTIONS_REMOTE_APPLIED: 1
         COUNT_TRANSACTIONS_LOCAL_PROPOSED: 0
         COUNT_TRANSACTIONS_LOCAL_ROLLBACK: 0

1.2.1. CHANNEL_NAME

组复制通道名称。

1.2.2. VIEW_ID

当前组成员的视图 ID。

1.2.3. MEMBER_ID

组成员的 UUID。每个成员具有不同的 ID,通过它可以识别组成员。

1.2.4. COUNT_TRANSACTIONS_IN_QUEUE

等待冲突检测队列中存在的事务数量,一旦事务通过冲突检测,它们将等待进行应用。

1.2.5. COUNT_TRANSACTIONS_CHECKED

已检查冲突的事务数量。

1.2.6. COUNT_CONFLICTS_DETECTED

未通过冲突检测检查的事务数量。

1.2.7. COUNT_TRANSACTIONS_ROWS_VALIDATING

暂时没明白干啥的

1.2.8. TRANSACTIONS_COMMITTED_ALL_MEMBERS

在全部成员上成功提交的事务,用 GTID 集合表示。

1.2.9. LAST_CONFLICT_FREE_TRANSACTION

被检测最后一个无冲突事务的 GTID 信息。

1.2.10. COUNT_TRANSACTIONS_REMOTE_IN_APPLIER_QUEUE

该成员从组中接收并且等待应用的事务数量。

1.2.11. COUNT_TRANSACTIONS_REMOTE_APPLIED

成员从组中接收并应用的事务数量。

1.2.12. COUNT_TRANSACTIONS_LOCAL_PROPOSED

成员本地产生,并且已经发送给组的事务数量。

1.2.13. COUNT_TRANSACTIONS_LOCAL_ROLLBACK

成员本地产生,已经回滚的事务数量。

1.3. replication_connection_status

该表里包含组复制的连接状态信息,处理事务的 I/O 线程状态,以及 clone 通道状态信息。该表常用于排查复制线程的异常。

select * from performance_schema.replication_connection_status\G

[performance_schema]>select * from replication_connection_status\G
*************************** 1. row ***************************
                                      CHANNEL_NAME: group_replication_applier
                                        GROUP_NAME: a640da45-e4d1-11ed-a959-fa0e3cc40b00
                                       SOURCE_UUID: a640da45-e4d1-11ed-a959-fa0e3cc40b00
                                         THREAD_ID: NULL
                                     SERVICE_STATE: ON
                         COUNT_RECEIVED_HEARTBEATS: 0
                          LAST_HEARTBEAT_TIMESTAMP: 0000-00-00 00:00:00.000000
                          RECEIVED_TRANSACTION_SET: 9590bf9c-c302-11ed-8d53-faa7cd9c6a00:1-7,
a640da45-e4d1-11ed-a959-fa0e3cc40b00:1-42:1000020
                                 LAST_ERROR_NUMBER: 0
                                LAST_ERROR_MESSAGE: 
                              LAST_ERROR_TIMESTAMP: 0000-00-00 00:00:00.000000
                           LAST_QUEUED_TRANSACTION: a640da45-e4d1-11ed-a959-fa0e3cc40b00:42
 LAST_QUEUED_TRANSACTION_ORIGINAL_COMMIT_TIMESTAMP: 2023-05-05 13:48:29.209358
LAST_QUEUED_TRANSACTION_IMMEDIATE_COMMIT_TIMESTAMP: 2023-05-05 13:48:29.209358
     LAST_QUEUED_TRANSACTION_START_QUEUE_TIMESTAMP: 2023-05-05 13:48:29.206229
       LAST_QUEUED_TRANSACTION_END_QUEUE_TIMESTAMP: 2023-05-05 13:48:29.206283
                              QUEUEING_TRANSACTION: 
    QUEUEING_TRANSACTION_ORIGINAL_COMMIT_TIMESTAMP: 0000-00-00 00:00:00.000000
   QUEUEING_TRANSACTION_IMMEDIATE_COMMIT_TIMESTAMP: 0000-00-00 00:00:00.000000
        QUEUEING_TRANSACTION_START_QUEUE_TIMESTAMP: 0000-00-00 00:00:00.000000

1.3.1. CHANNEL_NAME

复制通道的名称,组复制有两个通道,分别是应用通道 group_replication_applier 及恢复通道 group_replication_recovery。

1.3.2. GROUP_NAME

组复制的组名称。

1.3.3. SOURCE_UUID

复制源的 UUID 也就是组复制的名称。

1.3.4. THREAD_ID

I/0 线程的 ID。

1.3.5. SERVICE_STATE

服务线程的状态,ON 表示线程存在,处于活动或空闲状态。OFF 表示线程不存在,CONNECTING 表示线程存在,正在连接源服务器。

1.3.6. COUNT_RECEIVED_HEARTBEATS

自上次重新启动、重置执行 CHANGE REPLICATION SOURCE TO 语句以来,副本收到的心跳信号总数。

1.3.7. LAST_HEARTBEAT_TIMESTAMP

副本上次接收心跳信号的时间戳。

1.3.8. RECEIVED_TRANSACTION_SET

副本接收到的事务集合。

1.3.9. LAST_ERROR_NUMBER

线程错误的数量,为 0 表示没有错误。

1.3.10. LAST_ERROR_MESSAGE

线程的错误信息,为空表示没有错误。

1.3.11. LAST_ERROR_TIMESTAMP

错误发生的时间戳。

1.3.12. LAST_QUEUED_TRANSACTION

上次进入中继日志队列中的事务。

1.3.13. LAST_QUEUED_TRANSACTION_ORIGINAL_COMMIT_TIMESTAMP

中继日志队列中的最后一个事务在源服务器上提交的时间戳。

完整参考 replication_connection_status 表说明

2. SQL 案例

2.1. 查询延迟事务数量

SELECT 
  MEMBER_ID AS id, 
  COUNT_TRANSACTIONS_IN_QUEUE AS trx_tobe_certified, 
  COUNT_TRANSACTIONS_REMOTE_IN_APPLIER_QUEUE AS relaylog_tobe_applied, 
  COUNT_TRANSACTIONS_CHECKED AS trx_chkd, 
  COUNT_TRANSACTIONS_REMOTE_APPLIED AS trx_done, 
  COUNT_TRANSACTIONS_LOCAL_PROPOSED AS proposed 
FROM 
  performance_schema.replication_group_member_stats;

trx_tobe_certified 为等待冲突检查的事务数量,relaylog_tobe_applied 表示等待被应用的事务数量,任何一个不为 0 表示有延迟。

2.2. 事务之间差距

SELECT 
  RECEIVED_TRANSACTION_SET 
FROM 
  performance_schema.replication_connection_status 
WHERE 
  channel_name = 'group_replication_applier' 
UNION ALL 
SELECT 
  variable_value 
FROM 
  performance_schema.global_variables 
WHERE 
  variable_name = 'gtid_executed' \G

2.3. 查询组复制状态

select * from performance_schema.replication_group_members;


相关文章

HDFS元数据损坏恢复方法

HDFS元数据损坏恢复方法

HDFS JournalNode 编辑目录(dfs.journalnode.edits.dir)下数据损坏(单节点损坏或所有节点数据损坏),如何恢复 HDFS?单节点损坏a)  &...

EasyMR之Yarn资源队列管理

EasyMR之Yarn资源队列管理

设想一下,你现在所在的公司有一套线上的hadoop集群。A部门经常做一些定时的BI报表,B部门则经常使用一些软件做一些临时需求。那么他们肯定会遇到同时提交任务的场景,这个时候到底如何分配资源满足这两个...

Windows自带性能监控工具Perfmon使用介绍

Windows自带性能监控工具Perfmon使用介绍

一、Perfmon简介Perfmon(Performance Monitor)是一款Windows自带的性能监控工具,提供了图表化的系统性能实时监视器、性能日志和警报管理。通过添加性能计数器(Perf...

nginx分发算法

nginx分发算法

一、分发算法介绍如何将用户请求按照一定的规律分发给业务服务器。主要分为Nginx集群默认算法和基于请求头分发算法。二、nginx集群默认算法nginx的upstream 目前支持4种方式的分配轮询(默...

Sentry管理Hive目录acl -setacl不生效

Sentry管理Hive目录acl -setacl不生效

CDH在启动Sentry后/user/hive/warehouse这个目录 hdfs手动setacl会不生效首先确保hdfs参数dfs.namenode.acls.enabled=true;还有另一个...

chronyc时间同步器配置

chronyc时间同步器配置

chronyc & chronydchrony 有两个核心组件:chronyd守护进程,主要用于调整内核中运行的系统时间和时间服务器同步chronyc命令行界面程序,让用户能够对 chrony...

发表评论    

◎欢迎参与讨论,请在这里发表您的看法、交流您的观点。