• 进入"运维那点事"后,希望您第一件事就是阅读“关于”栏目,仔细阅读“关于Ctrl+c问题”,不希望误会!

使用pt-query-digest分析MySQL日志

MySQL Tools 彭东稳 8年前 (2017-02-10) 28275次浏览 已收录 0个评论

一、工具介绍

pt-query-digest是用于分析mysql慢查询的一个工具,它可以分析binlog、General log、slowlog,也可以通过SHOWPROCESSLIST或者通过tcpdump抓取的MySQL协议数据来进行分析。可以把分析结果输出到文件中,分析过程是先对查询语句的条件进行参数化,然后对参数化以后的查询进行分组统计,统计出各查询的执行时间、次数、占比等,可以借助分析结果找出问题进行优化。

安装:Percona Toolkit工具集介绍

二、语法及重要选项

三、使用示例

如下为输入结果示例:

Overall:总共有多少条查询。

Time range:查询执行的时间范围。

unique:唯一查询数量,即对查询条件进行参数化以后,总共有多少个不同的查询。

total:查询总时间。

min:最小时间。

max:最大时间。

avg:平均时间。

95%:把所有值从小到大排列,位置位于95%的那个数,这个数一般最具有参考价值。

median:中位数,把所有值从小到大排列,位置位于中间那个数。

四、将分析结果可视化

使用pt-query-digest分析慢查询日志并将查询分析数据保存到MySQL数据库表中,然后使用应用程序来展示分析结果。目前有基于LAMP的Query-Digest-UI、Anemometer开源项目支持。

将慢日志插入表中:

查看表信息

也可以自己做一个简单的web程序,即可获取慢查询日志的结果。

但不管用什么工具,都需要在服务器有一个脚本把慢日志分析结果存储到一个统一的存储中。我用的比较多的就是Anemometer,支持多数据源,支持按主机过滤,支持按库过滤,支持执行计划,并且支持历史数据(很重要,分析对比使用),基本上是足够使用了。缺点就是不支持认证及权限管理。

Anemometer在global_query_review_history表上多加了两个字段:hostname_max,db_max。分别代表主机名和库名,支持按主机或库过滤的关键。其余的跟上面展示的内容一样。

Anemometer安装配置文档很多,这里就不写了。提供一个客户端慢日志收集脚本如下:

或者下一个版本

对于IP和端口,可以通过自己的环境使用命令提取出来,然后做成变量形式。然后在客户端做个执行计划就可以了,多久收集一次慢日志可以自定义。这种方式收集慢查询不是非常实时,如果需要实时性高的,可以使用filebeat类似工具把慢日志全部收集到一台服务器,可以做到实时。


如果您觉得本站对你有帮助,那么可以支付宝扫码捐助以帮助本站更好地发展,在此谢过。
喜欢 (3)
[资助本站您就扫码 谢谢]
分享 (0)

您必须 登录 才能发表评论!