前言
本章使用的测试数据库为GreatSQL8.0.25版本
(Wed Aug 3 16:17:03 2022)[root@GreatSQL][(none)]>select version();
+-----------+
| version() |
+-----------+
| 8.0.25-16 |
+-----------+
1 row in set (0.00 sec)
一、啥是pt-query-digest
对于数据库的日常管理工作,性能管理肯定会是占比最大的一块,“工欲善其事必先利其器”,一个好的性能分析工具会极大的提高数据库性能管理的效率,而pt-query-digest
就是专门针对 MySQL 数据库慢查询日志的一个强力分析工具,相比于mysqldumpslow
,其分析结果更加具体和完善。
pt-query-digest
属于Percona Toolkit
工具集中最常用的一种,号称 MySQL DBA 必备工具之一,其能够分析MySQL数据库的slow log 、 general log 、 binary log
文件,同时也可以使用 show processlist 或从tcpdump 抓取的 MySQL 协议数据来进行分析。
二、开始安装
进入想安装的docker容器中
docker exec -it greatsql /bin/bash
安装最新的 percona release package
yum install https://repo.percona.com/yum/percona-release-latest.noarch.rpm
percona-toolkit
yum install percona-toolkit
验证 pt-queyr-digest
pt-query-digest --help
三、开始使用
安装完就可以使用percona-toolkit
记得要开启慢日志哦
# 查看慢日志是否开启
SHOW VARIABLES LIKE '%slow%';
(Wed Aug 17 10:30:22 2022)[root@GreatSQL][(none)]>SHOW VARIABLES LIKE '%slow%';
+-----------------------------------+-------------------------+
| Variable_name | Value |
+-----------------------------------+-------------------------+
| log_slow_admin_statements | ON |
| log_slow_extra | ON |
| log_slow_filter | |
| log_slow_rate_limit | 1 |
| log_slow_rate_type | session |
| log_slow_slave_statements | ON |
| log_slow_sp_statements | ON |
| log_slow_verbosity | |
| slow_launch_time | 2 |
| slow_query_log | ON |
| slow_query_log_always_write_time | 10.000000 |
| slow_query_log_file | /data/GreatSQL/slow.log |
| slow_query_log_use_global_control | |
+-----------------------------------+-------------------------+
13 rows in set (0.03 sec)
我们GreatSQL慢日志默认放在/data/GreatSQL/slow.log下
# 查看慢日志执行时间
(Wed Aug 17 10:30:27 2022)[root@GreatSQL][(none)]>SHOW VARIABLES LIKE '%long_query_time%';
+-----------------+----------+
| Variable_name | Value |
+-----------------+----------+
| long_query_time | 0.100000 |
+-----------------+----------+
1 row in set (0.00 sec)
# 开启慢日志命令
set global slow_query_log=on/off;
# 配置慢日志执行时间
set global long_query_time=0.5;
用法
语法:pt-query-digest [OPTIONS] [FILES] [DSN]
OPTIONS | 作用 |
---|---|
–host | mysql地址 |
–user | mysql用户名 |
–password | mysql密码 |
–since | 从指定时间点开始分析,如 指定日期YYYY-MM-DD [HH:MM:SS],1d/h/m等 |
–until | 配合–since,指定时间段内的日志分析,从xx日期开始,xx日期截止 |
–type | 指定类型,默认是slowlog,还可以指定binlog,tcpdump,genlog等类型 |
其它选项可以查阅官方文档pt-query-digest (percona.com)
常见用法
直接分析慢日志文件,并将结果输出到txt文本
[root@greatsql GreatSQL]# pt-query-digest /data/GreatSQL/slow.log > /tmp/slow-digest2.txt
perl: warning: Setting locale failed.
perl: warning: Please check that your locale settings:
LANGUAGE = (unset),
LC_ALL = (unset),
LANG = "en_US.utf8"
are supported and installed on your system.
perl: warning: Falling back to the standard locale ("C").
分析最近xx小时内的慢日志
如最近1小时内的慢日志分析
pt-query-digest --since=1h /data/GreatSQL/slow.log > /tmp/slow-digest2.txt
分析指定时间范围内的慢日志
pt-query-digest --since '2022-08-17 00:00:00' --until '2022-08-17 23:59:59' /data/GreatSQL/slow.log > /tmp/slow-digest2.txt