MySQL Group Replication(二)监控篇

文若2年前技术文章919


说明

组复制搭建成功后,为保证其正常运行,用户需要对组复制进行监控。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;


相关文章

大数据集群部署规划(一)关于节点的定义

大数据集群部署规划(一)关于节点的定义

节点定义:CDH集群节点定义CDH 官方文档有一份更详细的节点和角色配置,官网将主机分成以下四种类型: 1) Master hosts run Hadoop master processes such...

prometheus黑盒监控

prometheus黑盒监控

黑盒监控即以用户的身份测试服务的外部可见性,常见的黑盒监控包括 HTTP探针、TCP探针、Dns、Icmp等用于检测站点、服务的可访问性、服务的连通性,以及访问效率等。prometheus提供了bla...

 MySQL运维实战(1.2)安装部署:使用二进制安装部署

MySQL运维实战(1.2)安装部署:使用二进制安装部署

一般在生产环境,我们会使用二进制安装的方式安装MySQL。使用二进制安装,在处理单机多实例、升级MySQL等场景下更加方便。如果有特殊的需求(比如要打一些patch),我们还可以自己编译二进制。1、下...

开源大数据集群部署(四)Freeipa部署(kerberos+ldap)

开源大数据集群部署(四)Freeipa部署(kerberos+ldap)

1、 FreeIPA介绍Kerberos协议只是一种协议标准的框架,而MIT Kerberos则是实现了该协议的认证服务,是Kerberos的物理载体。将它与Hadoop服务进行集成便能够很好地解决安...

MySQL性能优化(五)字符集不一致导致的隐式类型转换

MySQL性能优化(五)字符集不一致导致的隐式类型转换

上一篇文章中,我们介绍了隐式类型转换。这里我们介绍另一种形式的隐式类型转换,由于字符集不一致,导致关联查询无法使用索引。一个例子SELECT *  FROM funds...

CDH实操--集群卸载

CDH实操--集群卸载

1、停止正在运行的服务a、控制台停止集群服务b、控制台停止Cloudera Management Servicec、命令行停止cm服务systemctl stop cloudera-scm-agent...

发表评论    

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