MySQL性能分析工具之Pt-query-digest分析慢查询日志
一. 安装步骤
- 检查和安装与Perl相关的模块
依赖检查命令为 rpm -qa perl-DBI perl-DBD-MySQL perl-Time-HiRes perl-IO-Socket-SSL
yum install perl-DBI
yum install perl-DBD-MySQL
yum install perl-Time-HiRes
yum install perl-IO-Socket-SSL
yum install percona-toolkit-3.0.13-1.el7.x86_64.rpm - 下载percona-toolkit工具包
yum install https://downloads.percona.com/downloads/percona-release/percona-release-1.0-9/redhat/percona-release-1.0-9.noarch.rpm - 查看可以安装的工具包
yum list | grep percona-toolkit - 安装percona-toolkit工具包
yum install -y percona-toolkit - 安装后,可以通过下面的命令确认是否安装成功:
-
pt-query-digest --help
-
pt-table-checksum --help
二. pt-query-digest命令
1、直接分析慢查询文件
pt-query-digest /usr/local/workspace/mysql/data/8bd974b86126-slow.log> slow_report.log
2、分析最近12小时内的查询
pt-query-digest --since=12h /var/lib/mysql/slowtest-slow.log > slow_report2.log
3、分析指定时间范围内的查询:
pt-query-digest /var/lib/mysql/slowtest-slow.log --since '2017-01-07 09:30:00' --until '2017-01-07 10:00:00'> > slow_report3.log
4、分析指含有select语句的慢查询
pt-query-digest --filter '$event->{fingerprint} =~ m/^select/i' /var/lib/mysql/slowtest-slow.log> slow_report4.log
5、针对某个用户的慢查询
pt-query-digest --filter '($event->{user} || "") =~ m/^root/i' /var/lib/mysql/slowtest-slow.log> slow_report5.log
6、查询所有所有的全表扫描或full join的慢查询
pt-query-digest --filter '(($event->{Full_scan} || "") eq "yes") ||(($event->{Full_join} || "") eq "yes")' /var/lib/mysql/slowtest-slow.log> slow_report6.log
二. 其它命令
1、查看服务器信息 >> pt-summary
2、查看磁盘开销使用情况 >> pt-diskstats
3、查看mysql数据库信息 >> pt-mysql-summary --host=localhost --user=root --password=123456
4、查找mysql的从库和同步状态 >> pt-slave-find --host=localhost --user=root --password=123456
5、查看mysql的死锁信息 >> pt-deadlock-logger h=172.16.06.05,P=3306,u=root,p=root --run-time=10 --interval=3 --create-dest-table --dest D=test,t=deadlocks
6、从慢查询日志中分析索引使用情况 >> pt-index-usage --user=root --password=123456 --host=localhost /var/lib/mysql/slowtest-slow.log
8、查找数据庫里大于1M的表 >> pt-find --host=localhost --user=root --password=123456 --tablesize +1M
9、杀掉查询时间大于3秒的 >> pt-kill --host=localhost --user=root --password=123456 --busy-time 3 --print