监控MySQL组复制
使用 Perfomance Schema 中的表来监控组复制,假定你的MySQL编译时已经启动了 Performance Schema 表。组复制将添加如下两张 P_S 表:
- performance_schema.replication_group_member_stats
- performance_schema.replication_group_members
下面这些已存在的 P_S 复制表同样也显示一些组复制的信息。
- performance_schema.replication_connection_status
- performance_schema.replication_applier_status
组复制插件创建的通道名称为:
- group_replication_recovery - 该通道在分布式恢复阶段进行复制。
- group_replication_applier - 该通道在组中有新写入操作时进行复制。该通道是组中有新事务流入时使用的通道。
下面一些小节中将描述这些表中可以获取到的信息。
1.成员状态
复制组中的每个成员都要验证并应用组提交的事务。关于验证者(certifier)和应用者(applier)相关的统计数据,有助于理解应用者队列(applier queue)是如何增长的、检测了多少次冲突、检测到多少个事务、哪些事务是到处提交的等等问题。
performance_schema.replication_group_member_stats表提供了以下认证相关信息:
| 字段 | 描述 |
|---|---|
| Channel_name | 组复制通道的名称。 |
| Member_id | 当前连接到的节点的UUID。组中每个节点的UUID值都必须唯一,也正因为如此,它也提供了一种key。 |
| Count_Transactions_in_queue | 冲突检测队列中事务的数量。一旦探测到冲突,且通过了检查,则它们也会排队后被应用和提交。 |
| Count_transactions_checked | 已检测到的冲突事务数量。 |
| Count_conflicts_detected | 未通过冲突检查的事务数量。 |
| Count_transactions_validating | 冲突检测数据库的大小(根据该数据库对每个事务进行确认) |
| Transactions_committed_all_members | 显示在当前视图中所有成员都成功提交的事务。该字段会在固定的时间间隔内更新。 |
| Last_conflict_free_transaction | 显示最后检测到的无冲突事务的事务ID。 |
这些字段对于监控连接组中成员的性能很重要。例如,假设组中某成员有些延迟,它没有赶上组中其他成员的数据。这种情况下,你可能会看到队列中有大量事务。根据这些信息,你可以决定是将该成员踢出组还是延迟组中其他成员处理事务,以便减少队列中的事务数量。这些信息同样可以帮助你决定如何调整组复制插件的流程控制。
2.组成员
该表用于监控当前视图所跟踪的节点状态。或者换句话说,作为复制组的一部分,这些节点会被组成员服务跟踪。
| 字段 | 描述 |
|---|---|
| Channel_name | 组复制的通道名称。 |
| Member_id | 成员节点的 UUID。 |
| Member_host | 成员的地址。 |
| Member_port | 用于成员间通信的监听端口。 |
| Member_state | 成员的状态(可能的状态值ONLINE, ERROR, RECOVERING,OFFLINE 或 UNREACHABLE) |
3.连接状态
当连接到组时,该表中的一些字段显示组复制相关的信息。例如,已从组中接收到并在应用者(applier)队列(relay log)中排队的事务。
| 字段 | 描述 |
|---|---|
| Channel_name | 组复制通道的名称。 |
| Group_name | 复制组的名称。通常它是一个有效的UUID值。 |
| Source_UUID | 组的标识符。它类似于组的名称,它用做组复制期间产生的所有事务的UUID。 |
| Service_state | 显示该成员是否是组的一部分。可能的值有 {ON,OFF和CONNECTING}。 |
| Received_transaction_set | 该成员已经接收到的GTID集。 |
4.applier状态
也可以通过普通的表 replication_applier_status 来获取组复制相关通道的状态和线程信息。如果有很多不同工作线程正在应用(执行)事务,该worker表同样可以用来监控每个工作线程正在做什么。
| 字段 | 描述 |
|---|---|
| Channel_name | 组复制通道的名称。 |
| Service_state | 显示应用(applier)服务的状态是ON 还是 OFF。 |
| Remaining_delay | 显示是否有applier被延迟。 |
| Count_transactions_retries | 应用事务的重试次数。 |
| Received_transaction_set | 该成员已经接收到的GTID集。 |
5.节点状态
在每次视图发生改变时,replication_group_members 表会随之更新。例如,组配置被动态更改。此时,节点之间会交换它们的元数据信息并自我同步,然后协调达成一致。
组中节点可能有多种状态。如果节点之间能正常通信,则所有节点的报告信息都是相同的。但如果发生了网络分裂,或节点离开了组,则可能会报告不同的信息,这依赖于被查询的是哪一个节点。注意,如果节点已经离开了组,那么显然它不能报告其他节点相关的最新信息。如果发生了网络分裂,以至于丢失了法定票数,则各节点将无法进行协调。因此,它们无法猜测其他节点的状态是什么。因此,它们不会报告它们猜测出来的状态,而是会报告节点无法到达。
| 字段 | 描述 | 组同步状态 |
|---|---|---|
| ONLINE | 该节点已经准备好一切,可供客户端连接,并可以执行事务。 | Yes |
| RECOVERING | 该节点正在加入组,它当前正处于分布式恢复阶段,接收来自组的状态信息。 | No |
| OFFLINE | 插件已加载,但还不是任何组中的成员。 | No |
| ERROR | 无论是恢复阶段还是应用阶段发生错误,都会出现该状态。 | No |
| UNREACHABLE | 当本地故障探测器怀疑该节点不可到达时,将显示该状态。可能的原因是目标宕机、非自愿离开组。 | No |
注意,组复制是非同步的,但会达到最终的同步(译注:即最终一致性,强一致性)。更准确地说,事务按照相同的顺序投递到所有的成员上,但是它们每个节点对事务的执行非同步的,意味着在允许事务的提交后,每个成员按照它们自己的步调来执行事务。
监控MySQL组复制的更多相关文章
- MySQL中间件之ProxySQL(15):ProxySQL代理MySQL组复制
返回ProxySQL系列文章:http://www.cnblogs.com/f-ck-need-u/p/7586194.html 1.ProxySQL+组复制前言 在以前的ProxySQL版本中,要支 ...
- 使用MySQL组复制的限制和局限性
本节列出和解释了组复制相关的要求和限制. 1.组复制的要求 要使用组复制,每个MySQL节点必须满足以下条件: 1.1 基本要求 InnoDB存储引擎:数据必须存储在事务型的InnoDB存储引擎中.事 ...
- Mysql组复制之单主模式(一)
环境 系统:CentOS release 6.9 (Final) Mysql:5.7 机器: S1 10.0.0.7 lemon S2 10.0.0.8 lemon2 S3 10.0.0.9 lemo ...
- mysql组复制集群简介
mysql组复制集群拓扑: 环境: centos6.5 mysql5.7.19 一.组复制搭建: 配置hosts文件 再三台服务器上分别启动一个mysql实例,共三个. 参考配置文件如下: serve ...
- 【MySQL 组复制】1.组复制技术简介
组复制有两种模式 单主模式(single-primary/single-master)下自动选举出一个主节点,从而只允许在同一时刻只有该主节点可以更新数据. 对于MySQL的高级使用人员,可以通过复制 ...
- mysql组复制安装
参考文档 https://blog.csdn.net/li123128/article/details/80744568 https://www.cnblogs.com/ctulzq/p/863109 ...
- MySQL组复制MGR(一)-- 技术概述
(一)复制技术的发展 MySQL的复制技术主要经历了异步主从复制,半同步复制,组复制(Group Replication)3个阶段. (1)传统的异步主从复制 传统的MySQL提供了一种简单的主从复制 ...
- MySQL组复制MGR(二)-- 组复制搭建
(一)主机操作 (1)路由信息vmnet5 192.168.10.0 (2)主机信息 主机名称 IP地址 操作系统版本 数据库版本 mgr-node1 192.168.10.11 centos 7.4 ...
- MySQL组复制MGR(四)-- 单主模式与多主模式
(一)概述 组复制可以运行在单主模式下,也可以运行在多主模式下,默认为单主模式.组的不同成员不能部署在不同模式下,要切换模式,需要使用不同配置重新启动组而不是单个server. 相关参数如下: # 该 ...
随机推荐
- PHP引用(&)练习
<?php class talker { private $data = 'Hi'; public function & get(){ //返回值指向一个内容,这里是指向$data的内容 ...
- 基于面向方面和UML的实时系统建模研究
一.基本信息 标题:基于面向方面和UML的实时系统建模研究 时间:2010 出版源:计算机技术与发展 领域分类:面向方向:实时系统:横切关注点:统一建模语言: 二.研究背景 问题定义:实时系统建模研究 ...
- OC重写init方法
在创建一个对象的时候我们经常会用到init方法,单单是init只能是初始化,当我们在初始化的时候想要给这个对象加上默认的东西的时候, 系统提供的init方法就不能满足我们的需要,这时,就需要我们自己去 ...
- uc/osⅡ/Ⅲ
1.关于任务堆栈时#if在main()中的用法: #if ... #else#endif//与#if对应作为一个编译“开关”,比如#if(条件满足) 执行代码1 #else 执行代码2 #endif ...
- 转:Override vs Overload
重写(Override) 重写是子类对父类的允许访问的方法的实现过程进行重新编写, 返回值和形参都不能改变.即外壳不变,核心重写! 重写的好处在于子类可以根据需要,定义特定于自己的行为. 也就是说子类 ...
- QEMU Networking
QEMU Networking QEMU has a number of really nice ways to set up networking for its guests. It can be ...
- EmpireCMS_V7.5的一次审计
i春秋作家:Qclover 原文来自:EmpireCMS_V7.5的一次审计 EmpireCMS_V7.5的一次审计 1概述 最近在做审计和WAF规则的编写,在CNVD和CNNVD等漏洞平台寻找 ...
- 从 Spring Cloud 看一个微服务框架的「五脏六腑」
原文:https://webfe.kujiale.com/spring-could-heart/ Spring Cloud 是一个基于 Spring Boot 实现的微服务框架,它包含了实现微服务架构 ...
- Android WebView 打印 Console Log
通常状况下,添加如下代码即可: mWebView.setWebViewClient(new WebChromeClient { /*android 低版本 Desperate*/ @ ...
- 在Apache上http强制跳转到https
https已经配置完成,也可以正常使用,但输入域名或http加域名时也一样可以打开网站,于是想强制使用https 大概百度了一下方法,感觉与之前设置二级域名绑定二级目录时差不多 首先,修改httpd. ...