使用pt-stalk诊断MySQL问题

本文涉及的产品
云数据库 RDS MySQL,集群系列 2核4GB
推荐场景:
搭建个人博客
RDS MySQL Serverless 基础系列,0.5-2RCU 50GB
云数据库 RDS MySQL,高可用系列 2核4GB
简介:

在MySQL服务器出现短暂(5~30秒)的性能波动的时候,一般的性能监控工具都很难抓住故障现场,也就很难收集对应较细粒度的诊断信息。另外,如果这种波动出现的频率很低,例如几天才一次,我们也很难人为的抓住现场,收集数据。这正是pt-stalk所解决的问题。

pt-stalk是Percona-Toolkit的一部分(其前身是Aspersa的一部分)。安装Percona-Toolkit后,可以通过man pt-stalk了解如何使用该工具,本文的介绍是man pt-stalk的一个子集,强烈建议直接阅读man pt-stalk。额外的,本文将提供pt-stalk示例命令可供参考。

1. 使用pt-stalk
pt-stalk --collect-tcpdump --function status \
--variable Threads_connected --threshold 2500 \
--daemonize -- --user=root --password=YOURPASSWORD

上面的命令表示,让pt-stalk后台运行(--daemonize),并监视SHOW GLOBAL STATUS中的Threads_connected状态值,如果该值超过2500,则触发收集主机和MySQL的性能、状态信息。pt-stalk会每隔一秒检查一次状态值,如果连续5次满足触发条件,则开始收集。

--collect-tcpdump表示除了收集基本信息外,还将额外使用tcpdump收集当时的网络包,类似的还可以使用--collect-gdb等。

2. pt-stalk如何连接MySQL

在上面的命令中参数,"-- --user=root --password=YOURPASSWORD"表示,将使用"--"后面的所有参数用于mysql和mysqladmin命令,所以这里确保你给出正确的用户名和密码。下面是man pt-stalk中给出的语法:

SYNOPSIS
Usage: pt-stalk [OPTIONS] [-- MYSQL OPTIONS]

看到前面的[OPTIONS]是pt-stalk使用的参数,[-- MYSQL OPTIONS]是mysql和mysqladmin使用的参数。

3. pt-stalk的工作状态

pt-stalk是一个后台程序,默认我们可以通过文件/var/log/pt-stalk.log,查看pt-stalk的运行状态:

tail -f /var/log/pt-stalk.log
2012_06_05_00_00_35 Check results: Threads_connected=1641, matched=no
2012_06_05_00_00_36 Check results: Threads_connected=1641, matched=no
2012_06_05_00_00_37 Check results: Threads_connected=1641, matched=no
2012_06_05_00_00_38 Check results: Threads_connected=1641, matched=no
2012_06_05_00_00_39 Check results: Threads_connected=1641, matched=no
2012_06_05_00_00_40 Check results: Threads_connected=1641, matched=no
2012_06_05_00_00_41 Check results: Threads_connected=1641, matched=no

你还可以通过参数--log指定一个你希望的log目录和文件。

4. pt-stalk收集的性能和状态数据

默认pt-stalk将收集的数据放在目录/var/lib/pt-stalk下,你可以使用参数--dest指定你希望的目录。下面是一个pt-stalk触发收集后的数据文件:

pt-stalk数据

这些数据都是原始数据,我们可以根据这些来分析当时MySQL或者主机是否有异常。

5. pt-stalk的触发条件

在上面的示例中触发参数是:"--function status --variable Threads_connected --threshold 2500",表示MySQL状态值Threads_connected超过2500时触发数据收集。常用的触发条件还可以使用Threads_running等。

另外还可以使用SHOW PROCESSLIST的中的结果触发,例如"--function processlist --variable State --match statistics --threshold 10"表示,show processlist中State列的值为statistics的线程数超过10则触发收集。

6. 一些其他有用的参数

--iterations:该参数指定pt-stalk在收集几次故障现场后就退出。默认pt-stalk会一直运行

--run-time:触发收集后,该参数指定收集多长时间的数据。默认是30秒

--sleep:为防止一直触发收集数据,该参数指定在某次触发后,必须sleep一段时候才继续观察并触发收集。默认是300秒

--interval:默认情况pt-stalk会每隔一秒检查一次状态数据,判断是否需要触发收集。该参数指定间隔时间,默认是1秒。

--cycles:默认情况pt-stalk只有连续观察到五次状态值满足触发条件时,才触发收集。该参数控制,需要连续几次满足条件,收集被触发,默认是5次。

相关实践学习
如何在云端创建MySQL数据库
开始实验后,系统会自动创建一台自建MySQL的 源数据库 ECS 实例和一台 目标数据库 RDS。
全面了解阿里云能为你做什么
阿里云在全球各地部署高效节能的绿色数据中心,利用清洁计算为万物互联的新世界提供源源不断的能源动力,目前开服的区域包括中国(华北、华东、华南、香港)、新加坡、美国(美东、美西)、欧洲、中东、澳大利亚、日本。目前阿里云的产品涵盖弹性计算、数据库、存储与CDN、分析与搜索、云通信、网络、管理与监控、应用服务、互联网中间件、移动服务、视频服务等。通过本课程,来了解阿里云能够为你的业务带来哪些帮助     相关的阿里云产品:云服务器ECS 云服务器 ECS(Elastic Compute Service)是一种弹性可伸缩的计算服务,助您降低 IT 成本,提升运维效率,使您更专注于核心业务创新。产品详情: https://www.aliyun.com/product/ecs
目录
相关文章
|
2月前
|
DataWorks 监控 关系型数据库
利用 DataWorks 数据推送定期推播 MySQL 或 StarRocks Query 诊断信息
DataWorks 近期上线了数据推送功能,能够将数据库查询的数据组织后推送到各渠道 (如钉钉、飞书、企业微信及 Teams),除了能将业务数据组织后推送,也能将数据库自身提供的监控数据组织后推送,这边我们就以 MySQL (也适用于StarRocks) 为例,定期推播 MySQL 的数据量变化等信息,帮助用户掌握 MySQL 状态。
87 1
|
4月前
|
消息中间件 关系型数据库 Kafka
实时计算 Flink版产品使用合集之使用DTS从RDSMySQL数据库同步数据到云Kafka,增量同步数据延迟时间超过1秒。如何诊断问题并降低延迟
实时计算Flink版作为一种强大的流处理和批处理统一的计算框架,广泛应用于各种需要实时数据处理和分析的场景。实时计算Flink版通常结合SQL接口、DataStreamAPI、以及与上下游数据源和存储系统的丰富连接器,提供了一套全面的解决方案,以应对各种实时计算需求。其低延迟、高吞吐、容错性强的特点,使其成为众多企业和组织实时数据处理首选的技术平台。以下是实时计算Flink版的一些典型使用合集。
|
11月前
|
SQL 监控 关系型数据库
数据库高效“体检”必备!详解阿里云AnalyticDB MySQL一键诊断功能
AnalyticDB MySQL诊断监控平台则是一套全自研的、从零开始搭建的并紧密贴合分析型系统特征的诊断平台,包含数据的采集(诊断日志和监控数据)、数据缓存(削峰填谷)、清洗转换以及存储等,最终以多种服务形式提供实时的告警、监控、负载洞察、查询分析和诊断等功能。
|
SQL 关系型数据库 MySQL
RDS MySQL的SQL问题诊断与调优
本教程为您介绍如何通过控制台在RDS MySQL上创建账号和数据库,通过DMS进行MySQL常见的表创建、索引创建等操作。
136 0
|
SQL 弹性计算 缓存
MySQL---真实业务环境下性能诊断
本文从操作系统、数据库两个方面描述了怎样使用操作系统和数据库的工具对真实业务环境下的数据库进行性能诊断。 1 环境描述 2 运行sysbench 测试,模拟业务环境 3 总体性能诊断(linux sar工具) 4 特定时间段的性能诊断 4.1 vmstat持续监控内cpu、内存性能 4.2 iostat监控io性能
132 0
MySQL---真实业务环境下性能诊断
|
关系型数据库 MySQL 数据安全/隐私保护
ruby连接mysql错误诊断
ruby连接mysql错误诊断
82 0
|
SQL 运维 监控
【走进RDS】之SQL Server性能诊断案例分析
数据库性能诊断不仅对其数据库技能要求较高,而且需要大量的前期准备工作,如收集各种性能基线、性能指标和慢SQL日志等,尤其是面对多数据库性能调优时,往往事倍功半。
28560 0
【走进RDS】之SQL Server性能诊断案例分析
|
存储 SQL 分布式计算
AnalyticDB MySQL版重磅发布智能建模诊断与优化功能
云原生数据仓库AnalyticDB MySQL版提供的智能建模诊断与优化功能,主要分为「冷热数据优化」、「无效索引优化」、「分布键优化」三大功能,目的是帮助客户降低数据/索引的存储成本,提高Join场景性能。
531 1
AnalyticDB MySQL版重磅发布智能建模诊断与优化功能
|
SQL 关系型数据库 MySQL
RDS MySQL的SQL问题诊断与调优实验报告
包含创建RDS Mysql、创建数据库、创建账号、使用DMS登录数据库,创建表,sql诊断和优化的一系列过程
166 0
RDS MySQL的SQL问题诊断与调优实验报告
|
SQL 监控 关系型数据库
MySQL使用performance_schema诊断sql语句性能
Mysql数据库打开sql profile可以查看sql 语句各个阶段的性能,但仅限于当前会话中执行的sql语句。如果想要查看其它会话sql,可以使用performance_schema功能。
558 0

热门文章

最新文章