概念描述
在分析慢日志时,DBA 常用 Percona Toolkit 中的 pt-query-digest工具,该工具可对慢日志进行汇总分析,但是该工具首先需要去学习怎么使用及读懂分析结果,并且分析过程会耗费一定的时间。而且有些开发人员因为服务器权限问题,是无法获取到slowlog的,所以分享一个工具 slow-log-summary。
slow-log-summary 工具会生成一个HTML 格式的慢查询汇总报告。每一类 SQL 是一行。执行总耗时越久的 SQL,排名越靠前,也最值得优化,可读性方面非常好。对于开发人员,可直接从 performance_schema 中获取 SQL 的执行耗时分布情况,非常的方便实用。
测试验证
1. 下载安装
下载地址:https://github.com/slowtech/slow-log-summary ,可直接下载二进制包,也可进行源码编译。
二进制包安装
[root@mysql local]#wget https://github.com/slowtech/slow-log-summary/releases/download/v1.0.0/slow-log-summary-linux-amd64.tar.gz
[root@mysql local]#tar xf slow-log-summary-linux-amd64.tar.gz
[root@mysql local]#
[root@mysql local]# ll
-rwxr-xr-x 1 root root 8884200 Nov 27 12:40 slow-log-summary
-rw-r--r-- 1 root root 4789564 Nov 27 12:54 slow-log-summary-linux-amd64.tar.gz
2. 参数详解
[root@mysql local]# ./slow-log-summary --help
slow-log-summary version: 1.0.0
Usage:
slow-log-summary -source <source_type> -r <output_file> [other options]
Example:
./slow-log-summary -source perf -h 10.0.0.168 -P 3306 -u root -p '123456' ----指定慢查询汇总报告来源为perf 的例子
./slow-log-summary -source slowlog -pt /usr/local/bin/pt-query-digest -slowlog /data/mysql/3306/data/n1-slow.log ----指定慢查询汇总报告来源为慢日志 + pt-query-digest 的例子
Common Options:
-help
Display usage
Source Type Options:
-source string
Slow log source: 'perf' or 'slowlog' (default "perf") ----指定慢查询汇总报告的来源。可设置 perf(performance_schema),也可设置 slowlog(慢日志 + pt-query-digest)
Output File Options:
-r string
Direct output to a given file (default "/tmp/slow-log-summary-20231128-150405.html") ----慢查询汇总报告文件名。如果不指定,则默认为 "/tmp/slow-log-summary-当前时间.html",例如 /tmp/slow-log-summary-20231128-150405.html
Options when source is 'perf':
-h string
MySQL host (default "localhost") ----主机名,默认是 localhost
-P int
MySQL port (default 3306) ----端口,默认是 3306
-u string
MySQL username (default "root") ----用户名,默认是 root
-p string
MySQL password ----密码
-D string
MySQL database (default "performance_schema") ----库名,默认是 performance_schema
Options when source is 'slowlog': 用于基于慢日志和 pt-query-digest 方式可设置的参数
-pt string
Absolute path for pt-query-digest. Example: /usr/local/bin/pt-query-digest ----pt-query-digest路径
-slowlog string
Absolute path for slowlog. Example: /var/log/mysql/node1-slow.log ----指定 slow.log 文件路径
-since string
Parse only queries newer than this value, YYYY-MM-DD [HH:MM:SS] ----分析指定时间段开始的慢日志
-until string
Parse only queries older than this value, YYYY-MM-DD [HH:MM:SS] ----分析指定时间段结束的慢日志
-yday
Parse yesterday's slowlog ----分析昨天的慢日志
当 source 设置为 slowlog 时,需要提前解压安装 Percona Toolkit 工具,因为该工具是基于 pt-query-digest 对慢日志进行分析,所以需要通过 -pt 设置 pt-query-digest 的绝对路径和 -slowlog 设置慢日志的绝对路径。
3. 使用方法
3.1 基于 performance_schema
[root@mysql local]# ./slow-log-summary -source perf -h 127.0.0.1 -P 3306 -u root -p 123456 -r slow-log-summary.html
Output written to file slow-log-summary.html
不在命令行中指定密码
[root@mysql local]# ./slow-log-summary -source perf -h 127.0.0.1 -P 3306 -u root
Enter MySQL password:
Output written to file /tmp/slow-log-summary-20231128-154212.html
3.2 基于慢日志和 pt-query-digest
[root@mysql local]# .