MySQL Galera Cluster全解析 Part 9 监控Galera Cluster
前期回顾
主机名 |
IP地址 |
操作系统 |
MySQL版本 |
插件版本 |
---|---|---|---|---|
rac1 |
11.12.14.29 |
Redhat 6.10 |
5.7.26 |
25.3.27 |
rac2 |
11.12.14.30 |
Redhat 6.10 |
5.7.26 |
25.3.27 |
rac3 |
11.12.14.39 |
Redhat 6.10 |
5.7.26 |
25.3.27 |
前面我们说了Galera Cluster有三种不同的分支
- MySQL Galera Cluster by Codership
- Percona XtraDB Cluster by Percona
- MariaDB Galera Cluster (5.5 and 10.0) by MariaDB
上面我们说了如何一步步搭建MySQL Galera集群
前面我们介绍了Galera相关的知识包括如何搭建,这节的内容为监控Galera
1. 监控状态变量
在监控Galera之前我们可能已经监控了其他MySQL的变量,Galera也提供了一些状态变量供查看
他们以wsrep_开头,我们可以用如下语句来查看所有Galera的状态
mysql> SHOW GLOBAL STATUS LIKE 'wsrep_%';
该语句查询出来可能有60个,可能大多数都不是我们需要的
但是有些是你需要查看的,我们可以简单分为3个种类
- 集群完整性(Cluster's Integrity)
- 节点状态(node status)
- 复制健康度(replication health)
1.集群完整性
该分类主要有如下状态变量
- wsrep_cluster_state_uuid
- wsrep_cluster_conf_id
- wsrep_cluster_size
- wsrep_cluster_status
1.1 检查UUID
我们知道集群内节点是相互同步的,这意味着他们执行完了所有的相同的事务
每个事务由一个uuid来标识,所以所有节点最后执行的uuid应该是一样的
所以我们在所有节点查询uuid并比较
所有节点
SHOW GLOBAL STATUS LIKE 'wsrep_cluster_state_uuid' G
如果最后个节点和其他的不一致,可能是由于正在执行导致
1.2 节点数量
对于一个健康的集群,所有节点查询出来的集群大小应该是一致的,应该是所有节点的个数
所有节点
SHOW GLOBAL STATUS LIKE 'wsrep_cluster_size';
1.3 集群变化次数
对于一个健康的集群,所有节点的集群变化次数应该是一致的,重启数据库算2次(关闭和启动)
所有节点
SHOW GLOBAL STATUS LIKE 'wsrep_cluster_conf_id';
如果该值非常大,可能会是由于节点不断的被踢出和加入导致,需要查看
2. 各节点状态
我们日常除了查询集群整体状态,对于各个节点我们也应该有所关注
主要有如下状态变量
- wsrep_ready
- wsrep_connected
- wsrep_local_state_comment
2.1 节点连接状态
我们可以查询如下变量来查看该节点是否在集群内
SHOW GLOBAL STATUS LIKE 'wsrep_ready';
SHOW GLOBAL STATUS LIKE 'wsrep_connected';
该值必须为ON
如果为OFF说明有问题,在该节点的事务会失败
可能是由于节点故障,网络问题,也可能是参数配置错误
- wsrep_cluster_address
- wsrep_cluster_name
我们可以在错误日志中查看相关错误
2.2 节点在集群中的状态
我们使用如下语句查询节点在集群中的状态
SHOW GLOBAL STATUS LIKE 'wsrep_local_state_comment';
其结果很容易理解,有:
- Joining
- Waiting on SST
- Joined
- Synced
- Donor
一般应该为Synced,代表已同步
3. 复制性能状态
通过上面的查询我们可以知道集群的是否正常,且不会对服务器造成大的负载
当复制队列中有很多写集,节点会触发Flow Control机制暂停复制用来缓解服务器压力
我们可以监控如下变量来检查该机制的运行情况
- wsrep_local_recv_queue_avg
- wsrep_flow_control_paused
- wsrep_cert_deps_distance
上面三个变量,当执行FLUSH STATUS 命令时会被清零
3.1 大量写状态
下面的变量显示上次状态查询以来本地队列的平均大小
SHOW STATUS LIKE 'wsrep_local_send_queue_avg';
该值大于0代表,节点无法及时应用接收到的写集
这时我们需要查询如下变量来查看最大和最小值
- wsrep_local_recv_queue_min
- wsrep_local_recv_queue_max
3.2 Flow Control Paused
如果你怀疑节点负载较大,你可以执行flush status之后等待一段时间,再查询如下值
SHOW STATUS LIKE 'wsrep_flow_control_paused';
其显示了在这段时间内复制进程暂停了多久(百分比),任何大于0的数值说明复制的性能不佳
如果值为0.18,代表18%的时间
你可以不时的查询该值来检查其是否是0(记得先执行flush status来清零以前的值),如果不能解决,需要增加slave thread的值(wsrep_slave_threads)
3.3 并行恢复
我们可以查询如下变量来评估节点是否可以启用并行恢复
SHOW STATUS LIKE 'wsrep_cert_deps_distance';
我们可以根据该值来参考设置wsrep_slave_threads的值
4. 参考资料
https://galeracluster.com/library/training/tutorials/galera-monitoring.html
- Golang语言社区--go语言编写Web程序
- Golang语言社区--Go语言基础第五节流程控制
- (14)不同基因坐标转换-生信菜鸟团博客2周年精选文章集
- (15)基因组各种版本对应关系-生信菜鸟团博客2周年精选文章集
- go 并发处理脚本
- 生信菜鸟团博客2周年精选文章集(4)NCBI数据库的几个探索
- PHP 的前世今生
- 【直播】我的基因组49:Y染色体的SNV不能用常规流程来找?
- 【直播】我的基因组46:SNV突变(96种)频谱的制作
- 深入剖析-Oracle索引分支块的结构
- 【直播】我的基因组48:我可能测了一个假的全基因组
- 【直播】我的基因组47:测序深度和GC含量的关系
- 【直播】我的基因组47:测序深度和GC含量的关系
- SNV突变(96种)频谱的制作
- MySQL 教程
- MySQL 安装
- MySQL 管理与配置
- MySQL PHP 语法
- MySQL 连接
- MySQL 创建数据库
- MySQL 删除数据库
- MySQL 选择数据库
- MySQL 数据类型
- MySQL 创建数据表
- MySQL 删除数据表
- MySQL 插入数据
- MySQL 查询数据
- MySQL where 子句
- MySQL UPDATE 查询
- MySQL DELETE 语句
- MySQL LIKE 子句
- mysql order by
- Mysql Join的使用
- MySQL NULL 值处理
- MySQL 正则表达式
- MySQL 事务
- MySQL ALTER命令
- MySQL 索引
- MySQL 临时表
- MySQL 复制表
- 查看MySQL 元数据
- MySQL 序列 AUTO_INCREMENT
- MySQL 处理重复数据
- MySQL 及 SQL 注入
- MySQL 导出数据
- MySQL 导入数据
- MYSQL 函数大全
- MySQL Group By 实例讲解
- MySQL Max()函数实例讲解
- mysql count函数实例
- MYSQL UNION和UNION ALL实例
- MySQL IN 用法
- MySQL between and 实例讲解
- PWN - Use After Free
- windows环境的python踩坑记
- uniapp上传图片至服务器,获得在线图片链接预览(实战)
- linux中的字符串切片
- 视频配音篇,如何使用百度翻译将文本转换为mp3语音?
- Objective-C的hook方案/ Method Swizzling
- Python爬虫:无账号无限制获取企查查信息
- Spark Streaming——Spark第一代实时计算引擎
- bamtools分割bam文件
- 在genome browser中添加自己的注释文件
- 原理+代码|Python基于主成分分析的客户信贷评级实战
- Python办公自动化 | 从PPT到Word
- linux命令行参数getopts参数二选一
- 黎巴嫩首都爆炸能量有多大?物理学家看视频计算:300吨TNT!
- OracleDG 环境主备业务数据不同步备库报ORA-600错误的处理过程