使用pt工具检测MySQL主从延迟(r12笔记第7天)

本文涉及的产品
RDS MySQL DuckDB 分析主实例,基础系列 4核8GB
RDS MySQL DuckDB 分析主实例,集群系列 4核8GB
RDS AI 助手,专业版
简介:  今天翻看了下《高性能MySQL》,真是让人拍手称绝,里面的很多实战思路非常不错,各种问题分析如数家珍,如果是有一定基础的同学,看起来会非常不错。    当然里面提到的一个地方,感觉很有意思,那就是主从延迟的一个测算思路。

 今天翻看了下《高性能MySQL》,真是让人拍手称绝,里面的很多实战思路非常不错,各种问题分析如数家珍,如果是有一定基础的同学,看起来会非常不错。

   当然里面提到的一个地方,感觉很有意思,那就是主从延迟的一个测算思路。书中他们是通过建立一张表,插入时间相关的数据,值得一提的是这个表的存储引擎是Federated,主要就是为了完成类似Oracle DB link一样的特殊需求,在备库端来对比这个时间差来得到一个相对精准的延迟值。

   当然有的同学可能会说,我们有show slave status里面的Seconds_behind_master的选项嘛,那个可不能当做严格意义上的主从延迟标准,尽管看上去这个值都很小,接近于0.

   书中也提到了一个工具,那就是pt-heartbeat。这个工具算是一个比较主流的测试工具,使用起来也非常便捷,安装好pt工具集之后,这只是其中的一个。

   工具的安装部署可以参考

      Percona-toolkit的安装和配置(r8笔记第86天)
      MySQL主从不一致的修复过程

   我们创建一个用户pt_checksum,方便以后做数据修复等,权限都一并给到。

GRANT SELECT, PROCESS, SUPER, REPLICATION SLAVE ON *.* TO 'pt_checksum'@'10.127.%.%' IDENTIFIED BY 'pt_checksum';   然后我们给予这个用户访问test数据库的权限。

grant all privileges on test.* to pt_checksum@'10.127.%.%';   工具具体的参数可以参考pt-heartbeat --help来看到,我给出要点即可。

   我们来创建测试表,在后台启动这个心跳守护进程,其中的create-table就是创建测试表,interval是间隔1秒钟,最小可以到0.01秒,update是更新test库上的这个测试表,而replace则是更新替换表里的时间,无须考虑表里是否有数据,daemonize是后台运行的标注。

pt-heartbeat h='10.127.128.99',u='pt_checksum',p='pt_checksum',P=3306 -D test --create-table --interval=1 --update --replace --daemonize   使用ps命令可以看到如下的heartbeat进程,或者换个口味,用pgrep -fl pt-heartbeat也可以查看。

# ps -ef|grep heartbeat
root     19920     1  0 22:35 ?        00:00:00 perl /usr/local/bin/pt-heartbeat h=10.127.128.99,u=pt_checksum,p=pt_checksum,P=3306 -D test --create-table --interval=1 --update --replace --daemonize   接下来的就是重点工作了,我们可以开启monitor选项来监控主从延迟的情况,有一点需要提一下,就是需要设置server-id

# pt-heartbeat h='10.127.xx.xx',u='pt_checksum',p='pt_checksum',P=3306 -D test --table=heartbeat --monitor
The --master-server-id option must be specified because the heartbeat table `test`.`heartbeat` uses the server_id column for --update or --check but the server's master could not be automatically determined.
Please read the DESCRIPTION section of the pt-heartbeat POD.主库上快速查看。

> show slave hosts;
+-----------+------+------+-----------+--------------------------------------+
| Server_id | Host | Port | Master_id | Slave_UUID                           |
+-----------+------+------+-----------+--------------------------------------+
|     13058 |      | 3306 |        20 | c6d66211-a645-11e6-a2b6-782bcb472f63 |
+-----------+------+------+-----------+--------------------------------------+
1 row in set (0.01 sec)结果和show variables like 'server%'结果是一致的,更快速高效。
  我们查看延迟的情况。

# pt-heartbeat h='10.127.xx.xx',u='pt_checksum',p='pt_checksum',P=3306 -D test --table=heartbeat --monitor --master-server-id=20
0.00s [  0.00s,  0.00s,  0.00s ]
0.00s [  0.00s,  0.00s,  0.00s ]
0.00s [  0.00s,  0.00s,  0.00s ]
0.00s [  0.00s,  0.00s,  0.00s ]
0.00s [  0.00s,  0.00s,  0.00s ]
0.00s [  0.00s,  0.00s,  0.00s ]   可以看到目前的环境中是诶呦任何延迟的,方括号里面的指标是什么意思,可以使用frames来定制,比如默认是1m,5m,15m,我们可以定制,比如显示为1m,2m,3m,4m这样。

# pt-heartbeat h='10.127.xx.xx',u='pt_checksum',p='pt_checksum',P=3306 -D test --table=heartbeat --monitor --master-server-id=20 --frames=1m,2m,3m,4m
0.00s [  0.00s,  0.00s,  0.00s,  0.00s ]
0.00s [  0.00s,  0.00s,  0.00s,  0.00s ]
0.00s [  0.00s,  0.00s,  0.00s,  0.00s ]   有的同学可能说,怎么都显示为0,如果用sysbench压一下,立马或有延迟的明显差异。我们在后面整体对比测试一下。

  如果想即查即看,就看一次,可以使用check选项,当然这个值就没有frame的时间范围了。

# pt-heartbeat h='10.127.128.99',u='pt_checksum',p='pt_checksum',P=3306 -D test --table=heartbeat  --master-server-id=20  --check
0.00   当然有进有出,我们开启了后台守护进程,本质上是个perl脚本,如果要停止,也规范一些,使用stop选项来做,会生辰改一个临时文件,下次需要重新启动的话,需要清理掉这个文件。

# pt-heartbeat h='10.127.xx.xx',u='pt_checksum',p='pt_checksum',P=3306 -D test --stop
Successfully created file /tmp/pt-heartbeat-sentinel

相关实践学习
如何快速连接云数据库RDS MySQL
本场景介绍如何通过阿里云数据管理服务DMS快速连接云数据库RDS MySQL,然后进行数据表的CRUD操作。
MySQL数据库入门学习
本课程通过最流行的开源数据库MySQL带你了解数据库的世界。   相关的阿里云产品:云数据库RDS MySQL 版 阿里云关系型数据库RDS(Relational Database Service)是一种稳定可靠、可弹性伸缩的在线数据库服务,提供容灾、备份、恢复、迁移等方面的全套解决方案,彻底解决数据库运维的烦恼。 了解产品详情: https://www.aliyun.com/product/rds/mysql 
目录
相关文章
|
4月前
|
存储 消息中间件 监控
MySQL 到 ClickHouse 明细分析链路改造:数据校验、补偿与延迟治理
蒋星熠Jaxonic,数据领域技术深耕者。擅长MySQL到ClickHouse链路改造,精通实时同步、数据校验与延迟治理,致力于构建高性能、高一致性的数据架构体系。
MySQL 到 ClickHouse 明细分析链路改造:数据校验、补偿与延迟治理
|
6月前
|
存储 关系型数据库 MySQL
在CentOS 8.x上安装Percona Xtrabackup工具备份MySQL数据步骤。
以上就是在CentOS8.x上通过Perconaxtabbackup工具对Mysql进行高效率、高可靠性、无锁定影响地实现在线快速全量及增加式数据库资料保存与恢复流程。通过以上流程可以有效地将Mysql相关资料按需求完成定期或不定期地保存与灾难恢复需求。
541 10
|
5月前
|
关系型数据库 MySQL 索引
MySQL多表练习笔记
链接可行,多表查询语法
159 0
|
9月前
|
canal 关系型数据库 MySQL
MySQL 自动同步开源工具
本文介绍了几种开源工具用于实现 MySQL 数据库的自动同步。
|
关系型数据库 MySQL 数据库连接
数据库连接工具连接mysql提示:“Host ‘172.23.0.1‘ is not allowed to connect to this MySQL server“
docker-compose部署mysql8服务后,连接时提示不允许连接问题解决
517 69
|
10月前
|
监控 Java 关系型数据库
Spring Boot整合MySQL主从集群同步延迟解决方案
本文针对电商系统在Spring Boot+MyBatis架构下的典型问题(如大促时订单状态延迟、库存超卖误判及用户信息更新延迟)提出解决方案。核心内容包括动态数据源路由(强制读主库)、大事务拆分优化以及延迟感知补偿机制,配合MySQL参数调优和监控集成,有效将主从延迟控制在1秒内。实际测试表明,在10万QPS场景下,订单查询延迟显著降低,超卖误判率下降98%。
461 5
|
SQL 关系型数据库 MySQL
MySQL 窗口函数详解:分析性查询的强大工具
MySQL 窗口函数从 8.0 版本开始支持,提供了一种灵活的方式处理 SQL 查询中的数据。无需分组即可对行集进行分析,常用于计算排名、累计和、移动平均值等。基本语法包括 `function_name([arguments]) OVER ([PARTITION BY columns] [ORDER BY columns] [frame_clause])`,常见函数有 `ROW_NUMBER()`, `RANK()`, `DENSE_RANK()`, `SUM()`, `AVG()` 等。窗口框架定义了计算聚合值时应包含的行。适用于复杂数据操作和分析报告。
618 11
|
Java 关系型数据库 MySQL
自动化测试项目实战笔记(一):JDK、Tomcat、MySQL、Jpress环境安装和搭建
这篇文章是关于自动化测试项目实战笔记,涵盖了JDK、Tomcat、MySQL、Jpress环境的安装和搭建过程,以及测试用例和常见问题总结。
367 1
自动化测试项目实战笔记(一):JDK、Tomcat、MySQL、Jpress环境安装和搭建
|
SQL 分布式计算 关系型数据库
Hadoop-21 Sqoop 数据迁移工具 简介与环境配置 云服务器 ETL工具 MySQL与Hive数据互相迁移 导入导出
Hadoop-21 Sqoop 数据迁移工具 简介与环境配置 云服务器 ETL工具 MySQL与Hive数据互相迁移 导入导出
399 3
|
安全 关系型数据库 MySQL
Navicat工具设置MySQL权限的操作指南
通过上述步骤,您可以使用Navicat有效地为MySQL数据库设置和管理用户权限,确保数据库的安全性和高效管理。这个过程简化了数据库权限管理,使其既直观又易于操作。
1449 4

推荐镜像

更多