俺怎么诊断mysql 如何检测mysql数据库变化

如何监控MySQL首先介绍下 pt-stalk俺怎么诊断mysql , 它是 Percona-Toolkit 工具包中的一个工具俺怎么诊断mysql,说起 PT 工具包大家都不陌生俺怎么诊断mysql,平时常用的 pt-query-digest、 pt-online-schema-change 等工具都是出自于这个工具包俺怎么诊断mysql,这里就不多介绍了 。
pt-stalk 的主要功能是在出现问题时收集 OS 及 MySQL 的诊断信息,这其中包括:
1. OS 层面的 CPU、IO、内存、磁盘、网络等信息;
2. MySQL 层面的行锁等待、会话连接、主从复制 , 状态参数等信息 。
而且 pt-stalk 是一个 Shell脚本,对于我这种看不懂 perl 的人来说比较友好,脚本里面的监控逻辑与监控命令也可以拿来参考,用于构建自己的监控体系 。
三、使用
接着我们来看下如何使用这个工具 。
pt-stalk 通常以后台服务形式监控 MySQL 并等待触发条件,当触发条件时收集相关诊断数据 。
触发条件相关的参数有以下几个:
function:
° 默认为 status,代表监控 SHOW GLOBAL STATUS 的输出;
° 也可以设置为 processlist , 代表监控 show processlist 的输出;
variable:
° 默认为 Threads_running,代表 监控参数,根据上述监控输出指定具体的监控项;
threshold:
° 默认为 25,代表 监控阈值,监控参数超过阈值,则满足触发条件;
° 监控参数的值非数字时,需要配合 match 参数一起使用,如 processlist 的 state 列;
cycles:
° 默认为 5 , 表示连续观察到五次满足触发条件时,才触发收集;
连接参数:host、password、port、socket 。
其俺怎么诊断mysql他一些重要参数:
iterations:该参数指定 pt-stalk 在触发收集几次后退出,默认会一直运行 。
run-time:触发收集后,该参数指定收集多长时间的数据 , 默认 30 秒 。
sleep:该参数指定在触发收集后,sleep 多久后继续监控 , 默认 300 秒 。
interval:指定状态参数的检查频率,判断是否需要触发收集,默认 1 秒 。
dest:监控数据存放路径,默认为 /var/lib/pt-stalk 。
retention-time :监控数据保留时长,默认 30 天 。
daemonize:以后台服务运行,默认不开启 。
log:后台运行日志,默认为 /var/log/pt-stalk.log 。
collect:触发发生时收集诊断数据,默认开启 。
° collect-gdb:收集 GDB 堆栈跟踪 , 需要 gdb 工具 。
° collect-strace:收集跟踪数据,需要 strace 工具 。
° collect-tcpdump:收集 tcpdump 数据,需要 tcpdump 工具 。
MySQL数据库服务器逐渐变慢 该怎么分析与解决我们先来看第一个阶段俺怎么诊断mysql , MySQL慢俺怎么诊断mysql的诊断思路俺怎么诊断mysql,一般我们会从三个方向来做俺怎么诊断mysql:
第一个方向是MySQL内部的观测
第二个方向是外部资源的观测
第三个方向是外部需求的改造
1.1 MySQL 内部观测
我们来看MySQL内部的观测,常用的观测手段是这样的,从上往下看 , 第一部分是Processlist , 看一下哪个SQL压力不太正常,第二步是explain,解释一下它的执行计划,第三步我们要做Profilling , 如果这个SQL能再执行一次的话, 就做一个Profilling , 然后高级的DBA会直接动用performance_schema ,MySQL 5.7 以后直接动用sys_schema,sys_schema是一个视图,里面有便捷的各类信息,帮助大家来诊断性能 。再高级一点,我们会动用innodb_metrics进行一个对引擎的诊断 。
除俺怎么诊断mysql了这些手段以外,大家还提出了一些乱七八糟的手段,我就不列在这了,这些是常规的一个MySQL的内部的状态观测的思路 。除了这些以外,MySQL还陆陆续续提供了一些暴露自己状态的方案,但是这些方案并没有在实践中形成套路,原因是学习成本比较高 。

推荐阅读