Mysql 主从延时监控

本文涉及的产品
云数据库 RDS MySQL Serverless,0.5-2RCU 50GB
简介:

介绍

主从延时在主从环境中是一个非常值得关注的问题,有时候我们可以通过show slave status命令查看Seconds_Behind_Master值来分析主从的延时情况;但是由于该值是来自binlog文件语句的完成时间,当一条SQL执行时间很长的时候那么该值可能就不准确了,那么有没有什么工具可以很准确的分析主从的延时情况呢? 在PT系列工具里面的pt-heartbeat工具很好的解决了这个问题。

 

原理

pt工具在主库上面创建一张测试表,以一秒的频率去更新这个的记录并把当前时间写入到字段中,通过分析主从同步过来的时间和当前时间做对比得出时间差。

 

方法

 1.在主库上创建后台update进程

pt-heartbeat -uroot -proot  -D chenmh --create-table --update  --daemonize

-u:连接主库的用户

-p:连接主库的用户密码

-D:主库上存在的数据库,这个数据库随便指定,但是必须存在

--create-table:默认会在主库指定的数据库中创建一个“heartbeat”表

 

2.监控从库

pt-heartbeat -uroot -proot -D chenmh --table=heartbeat --master-server-id=10  --monitor -h 192.168.137.20 --interval=1 

这里面的参数除了--master-server-id是主库的serverid,其它的都是指从库,特别注意--master-server-id一定不能写错否则结果就是错误的,记录了日志之后就可以对该值做监控预警了

3.写入监控日志做预警分析

pt-heartbeat -uroot -proot -D chenmh --table=heartbeat --master-server-id=10  --monitor -h 192.168.137.20 --interval=1  --file=/tmp/heart.log
cat /tmp/heart.log |awk -F "s"  '{print $1}'

 4.停止后台更新操作

pt-heartbeat --stop

 当你停止了后台更新进程会在/tmp目录下面产生一个pt-heartbeat-sentinel文件,下次再启动该后台进程之前必须先删除该文件,否则无法启动。

rm -rf /tmp/pt-heartbeat-sentinel

 

参数

复制代码
Usage: pt-heartbeat [OPTIONS] [DSN] --update|--monitor|--check|--stop
其中--update, --moniter,--check,--stop都是单独使用的,并且--update, --monitor, and --check are mutually exclusive
--daemonize and --check are mutually exclusive.他们之间还是存在互斥。
Options:

  --ask-pass                  使用密码进行mysql连接时给予提示
--charset=s -A 默认的字符选项 --check 执行一次从库的监控就结束 --check-read-only 如果是只读的服务器那么使用该选项会保持插入
--config=A 使用逗号分隔,如果指定了,那么该参数作为命令行的第一个选项
--create-table 如果表不存在创建表heartbeat
--daemonize 创建后台的更新shell
--database=s -D 指定连接的数据库
--dbi-driver=s Specify a driver for the connection; mysql and Pg are supported (default mysql) --defaults-file=s -F 通过提供的文件进行mysql连接
--file=s 输出最新的 --monitor监控信息到指定的文件
--frames=s 设置时间周期(default 1m,5m,15m) --help 显示帮助信息 --host=s -h 指定连接的host --[no]insert-heartbeat-row 在使用--tables的时候默认是插入一条记录到表heartbeat前提是表中不存在该记录行 --interval=f 指定更新和监控heartbeat表的频率默认是1S
--log=s 当使用daemonized进行后台更新操作时输出所有的信息到指定的该文件 --master-server-id=s 指定主的server-id
--monitor 监控从服务器的参数选项 --password=s -p 指定密码 --pid=s 创建pid文件 --port=i -P 指定连接时使用的端口
--print-master-server-id 打印输出master-server-id
--recurse=i Check slaves recursively to this depth in --check mode --recursion-method=a Preferred recursion method used to find slaves ( default processlist,hosts) --replace 使用replace替换--UPDATE操作
--run-time=m 指定监控的时长,单位有: s=seconds, m=minutes, h=hours, d=days; 如果比指定默认是以秒为单位一直监控下去
--sentinel=s Exit if this file exists (default /tmp/pt- heartbeat-sentinel) --set-vars=A Set the MySQL variables in this comma-separated list of variable=value pairs --skew=f 指定执行从库检查的延时时长默认是0.5
--socket=s -S 指定连接时使用的socket文件
--stop 停止后台更新进程并生成--sentinel指定的文件 --table=s 指定更新的表(默认是heartbeat) --update 更新主的heartbeat表,这个参数是后台进程必须的参数也可以用--replace替代 --user=s -u 指定用户名
--utc 忽略系统时间仅使用UTC --version 显示版本信息 --[no]version-check Check for the latest version of Percona Toolkit, MySQL, and other programs (default yes)
复制代码

 

总结

 可以通过这个监控的输出文件信息做一个邮件报警,有兴趣可以去写这样的一个shell

 

 

 



本文转自pursuer.chen(陈敏华)博客园博客,原文链接:http://www.cnblogs.com/chenmh/p/5509851.html,如需转载请自行联系原作者

相关实践学习
基于CentOS快速搭建LAMP环境
本教程介绍如何搭建LAMP环境,其中LAMP分别代表Linux、Apache、MySQL和PHP。
全面了解阿里云能为你做什么
阿里云在全球各地部署高效节能的绿色数据中心,利用清洁计算为万物互联的新世界提供源源不断的能源动力,目前开服的区域包括中国(华北、华东、华南、香港)、新加坡、美国(美东、美西)、欧洲、中东、澳大利亚、日本。目前阿里云的产品涵盖弹性计算、数据库、存储与CDN、分析与搜索、云通信、网络、管理与监控、应用服务、互联网中间件、移动服务、视频服务等。通过本课程,来了解阿里云能够为你的业务带来哪些帮助     相关的阿里云产品:云服务器ECS 云服务器 ECS(Elastic Compute Service)是一种弹性可伸缩的计算服务,助您降低 IT 成本,提升运维效率,使您更专注于核心业务创新。产品详情: https://www.aliyun.com/product/ecs
目录
相关文章
|
19天前
|
存储 监控 关系型数据库
轻松入门Mysql:MySQL性能优化与监控,解锁进销存系统的潜力(23)
轻松入门Mysql:MySQL性能优化与监控,解锁进销存系统的潜力(23)
|
1月前
|
SQL 监控 关系型数据库
MySQL性能调优:监控和优化
MySQL性能调优:监控和优化
54 1
|
1月前
|
关系型数据库 MySQL 开发工具
MySQL5.7主从配置(Docker)
MySQL5.7主从配置(Docker)
728 0
|
1月前
|
SQL 关系型数据库 MySQL
解决MySQL主从慢同步问题的常见的解决方案:
解决MySQL主从慢同步问题的方法有很多,以下是一些常见的解决方案: 1. 检查网络连接:确保主从服务器之间的网络连接稳定,避免网络延迟或丢包导致数据同步缓慢。 2. 优化数据库配置:调整MySQL的配置参数,如增大binlog文件大小、调整innodb_flush_log_at_trx_commit等参数,以提高主从同步性能。 3. 检查IO线程和SQL线程状态:通过SHOW SLAVE STATUS命令检查IO线程和SQL线程的状态,确保它们正常运行并没有出现错误。 4. 检查主从日志位置:确认主从服务器的binlog文件和位置是否正确,避免由于错误的日志位置导致同步延迟。 5.
118 1
|
2月前
|
监控 关系型数据库 MySQL
HeartBeat监控Mysql状态
HeartBeat监控Mysql状态
|
3月前
|
SQL 关系型数据库 MySQL
MySQL-主从架构的搭建
MySQL-主从架构的搭建
52 0
|
14天前
|
SQL 关系型数据库 MySQL
mysql主从同步出错解决办法
mysql主从同步出错解决办法
9 0
|
2月前
|
监控 关系型数据库 MySQL
MetricBeat监控MySQL
MetricBeat监控MySQL
|
2月前
|
存储 监控 关系型数据库
ELK架构监控MySQL慢日志
ELK架构监控MySQL慢日志
|
2月前
|
安全 关系型数据库 MySQL
Mysql注入 -- 延时注入
Mysql注入 -- 延时注入
8 0