MySQL 异常信息诊断

本文涉及的产品
RDS MySQL Serverless 基础系列,0.5-2RCU 50GB
RDS MySQL Serverless 高可用系列,价值2615元额度,1个月
RDS MySQL DuckDB 分析主实例,集群系列 8核16GB
简介:

今天要介绍的是Percona中的pt-stalk工具。

   有些问题间歇性的发生,监控信息也许根本来不及采集信息,MySQL的锁定或活动的高峰通常没有留下任何数据来分析。

   Pt-stalk 会监测一个触发条件,然后收集相关信息,该工具会将信息写入到 指定的日志文件,默认以时间格式区分。对于show global status中的信息,往往用Threads_running

   语法:pt-stalk [OPTIONS] [-- MYSQL OPTIONS]

   使用选项:

   --collect : default:yes    收集系统信息.

   --collect-gdb       收集GDB的跟踪信息。可能会是MySQL处于冻结的状态。(在线上的话,慎用)

   --collect-oprofile  收集oprofile信息,通过打开一个oprofile  session实现。

   --collect-strace    通过附加一个 strace来收集server信息。可能运行很慢, 这个不能和--collect-gdb 同时使用。

   --collect-tcpdump   抓取MySQL SERVER 监听接口的数据包。可以使用pt-query-digest进行解码。

   --config‘’,‘’  逗号分隔的选项,如果使用的话,必须放在第一位.

   --cycles  =  默认为5,在触发器在被触发几次后再开始收集信息。

   --daemonize  作为一个守护进程运行

   --dest       检测数据存放的位置。默认为 /var/lib/pt-stalk

   --disk-bytes-free 默认100m ,如果磁盘空间小于100M的话,就不会收集信息。 如果 在–dest中有以前收集的数据信息,那么这次收集就会根据上次的结果大小来判断自己此次收集数据的大小

   --disk-pct-free :默认是5 ,当磁盘空间小于5%时,就不会收集信息。

   --function 指定触发器的数据源The default value watches SHOW GLOBAL STATUS,当然也可以监控processlist 这个 , 后面可以跟选项 -variables  和-threshold

              使用 status 时,指定触发器的数据来源于SHOW GLOBAL STATUS,  --variables  来定义哪个staus值来出发trigger。

              如: --function status --variable Threads_connected --threshold 2500

              Processlist 触发器的数据来源于: show full processlist    这个时候应该使用 –variable  和 –match

              如:--function  processlist  --variable Status  --match statistics –threshold  10

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

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

   --retention-time 收集信息文件保留的天数,默认30天

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

   --threshold  默认是25  触发的阀值

   --variable   默认为Threads_running

   --run-time: 触发收集后,该参数指定收集多长时间的数据。默认是30秒(大部分情况下不需要修改)

   --function   参数 传入 bash shell 脚本,结果必须要输出一个数字

   --plugin 参数可以自定义 一些动作

   pt-stalk     还支持自定义拓展脚本:

    举例:

    为方便测试,在测试机上如下:

    /usr/local/bin/pt-stalk --function status --variable Threads_running --threshold 1 --cycles=1 --daemonize -- --socket=/tmp/mysql.sock

    pt-stalk作为 守护进程运行,当Threads_running 为1的时候触发触发器,开始收集,保存位置为/var/lib/pt-stalk

    日志信息: /var/log/pt-stalk.log

1
2
3
4
5
6
7
2012_08_29_20_27_03 Check results: Threads_running=1, matched=no, cycles_true=0
2012_08_29_20_27_04 Check results: Threads_running=1, matched=no, cycles_true=0
2012_08_29_20_27_05 Check results: Threads_running=1, matched=no, cycles_true=0
2012_08_29_20_27_06 Check results: Threads_running=1, matched=no, cycles_true=0
2012_08_29_20_27_07 Check results: Threads_running=1, matched=no, cycles_true=0
2012_08_29_20_27_08 Check results: Threads_running=1, matched=no, cycles_true=0
2012_08_29_20_27_09 Check results: Threads_running=1, matched=no, cycles_true=0
1
 

      收集的日志:

     

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
2012_08_29_20_34_54- df
2012_08_29_20_34_59-iostat-overall
2012_08_29_20_35_03-mpstat-overall
2012_08_29_20_35_07-output
2012_08_29_20_35_11-slabinfo
2012_08_29_20_35_15-vmstat-overall
2012_08_29_20_34_54-disk-space
2012_08_29_20_34_59-lock-waits
2012_08_29_20_35_03-mutex-status1
2012_08_29_20_35_07-pmap
2012_08_29_20_35_11-sysctl
2012_08_29_20_34_54-diskstats
2012_08_29_20_34_59-log_error
2012_08_29_20_35_03-mysqladmin
2012_08_29_20_35_07-processlist
2012_08_29_20_35_11- top
2012_08_29_20_35_17-disk-space





本文转自 位鹏飞 51CTO博客,原文链接:http://blog.51cto.com/weipengfei/977267,如需转载请自行联系原作者
相关实践学习
每个IT人都想学的“Web应用上云经典架构”实战
本实验从Web应用上云这个最基本的、最普遍的需求出发,帮助IT从业者们通过“阿里云Web应用上云解决方案”,了解一个企业级Web应用上云的常见架构,了解如何构建一个高可用、可扩展的企业级应用架构。
MySQL数据库入门学习
本课程通过最流行的开源数据库MySQL带你了解数据库的世界。   相关的阿里云产品:云数据库RDS MySQL 版 阿里云关系型数据库RDS(Relational Database Service)是一种稳定可靠、可弹性伸缩的在线数据库服务,提供容灾、备份、恢复、迁移等方面的全套解决方案,彻底解决数据库运维的烦恼。 了解产品详情: https://www.aliyun.com/product/rds/mysql 
目录
相关文章
|
4月前
|
存储 关系型数据库 MySQL
使用命令行cmd查询MySQL表结构信息技巧分享。
掌握了这些命令和技巧,您就能快速并有效地从命令行中查询MySQL表的结构信息,进而支持数据库维护、架构审查和优化等工作。
406 9
|
关系型数据库 MySQL
MySQL查看连接数和进程信息
这篇文章介绍了如何在MySQL中查看连接数和进程信息,包括当前打开的连接数量、历史成功建立连接的次数、连接错误次数、连接超时设置,以及如何查看和终止正在执行的连接进程。
1702 10
|
关系型数据库 MySQL 数据库
【MySQL】mysql异常宕机无法启动处理过程
【MySQL】mysql异常宕机无法启动处理过程
|
监控 关系型数据库 MySQL
如何监控和诊断 MySQL 数据库的性能问题?
【10月更文挑战第28天】监控和诊断MySQL数据库的性能问题是确保数据库高效稳定运行的关键
1293 1
|
存储 SQL 关系型数据库
MySQL 存储过程错误信息不打印在控制台
MySQL 存储过程错误信息不打印在控制台
265 1
|
存储 关系型数据库 MySQL
MySQL 如何存储地理信息
MySQL 如何存储地理信息
1416 1
|
SQL 关系型数据库 MySQL
MySQL异常一之: You can‘t specify target table for update in FROM clause解决办法
这篇文章介绍了如何解决MySQL中“不能在FROM子句中指定更新的目标表”(You can't specify target table for update in FROM clause)的错误,提供了错误描述、需求说明、错误做法和正确的SQL写法。
2453 0
|
关系型数据库 MySQL 数据安全/隐私保护
|
DataWorks 监控 关系型数据库
利用 DataWorks 数据推送定期推播 MySQL 或 StarRocks Query 诊断信息
DataWorks 近期上线了数据推送功能,能够将数据库查询的数据组织后推送到各渠道 (如钉钉、飞书、企业微信及 Teams),除了能将业务数据组织后推送,也能将数据库自身提供的监控数据组织后推送,这边我们就以 MySQL (也适用于StarRocks) 为例,定期推播 MySQL 的数据量变化等信息,帮助用户掌握 MySQL 状态。
323 1
|
消息中间件 关系型数据库 MySQL
实时计算 Flink版操作报错合集之整库同步mysql到starRock提交任务异常,该如何处理
在使用实时计算Flink版过程中,可能会遇到各种错误,了解这些错误的原因及解决方法对于高效排错至关重要。针对具体问题,查看Flink的日志是关键,它们通常会提供更详细的错误信息和堆栈跟踪,有助于定位问题。此外,Flink社区文档和官方论坛也是寻求帮助的好去处。以下是一些常见的操作报错及其可能的原因与解决策略。

推荐镜像

更多