percona toolkit工具使用
wget percona.com/get/percona-toolkit.tar.gz
tar zxf percona-toolkit.tar.gz
cd percona-toolkit-2.2.19
perl Makefile.PL PREFIX=/usr/local/percona-toolkit
yum -y install perl-Digest-MD5
make && make install
工具安装目录在:/usr/local/percona-toolkit/bin
一、慢查询类
pt-query-digest
慢查询日志分析统计可以分析binlog、General log、slowlog
pt-query-digest slow-query.log > slow_report.log
使用参数
- pt-query-digest [OPTIONS] [FILES] [DSN]
- –create-review-table 当使用–review参数把分析结果输出到表中时,如果没有表就自动创建。
- –create-history-table 当使用–history参数把分析结果输出到表中时,如果没有表就自动创建。
- –filter 对输入的慢查询按指定的字符串进行匹配过滤后再进行分析
- –limit 限制输出结果百分比或数量,默认值是20,即将最慢的20条语句输出,如果是50%则按总响应时间占比从大到小 排序,输出到总和达到50%位置截止。
- –host mysql服务器地址
- –user mysql用户名
- –password mysql用户密码
- –history 将分析结果保存到表中,分析结果比较详细,下次再使用–history时,如果存在相同的语句,且查询所在的时间 区间和历史表中的不同,则会记录到数据表中,可以通过查询同一CHECKSUM来比较某类型查询的历史变化。
- –review 将分析结果保存到表中,这个分析只是对查询条件进行参数化,一个类型的查询一条记录,比较简单。当下次 使用–review时,如果存在相同的语句分析,就不会记录到数据表中。
- –output 分析结果输出类型,值可以是report(标准分析报告)、slowlog(Mysql slow log)、json、json-anon,一般使用 report,以便于阅读。
- –since 从什么时间开始分析,值为字符串,可以是指定的某个”yyyy-mm-dd [hh:mm:ss]”格式的时间点,也可以是简单的
一个时间值:s(秒)、h(小时)、m(分钟)、d(天),如12h就表示从12小时前开始统计。- –until 截止时间,配合—since可以分析一段时间内的慢查询。
常用参数
1、分析最近分析最近12小时内的查询:小时内的查询:
pt-query-digest --since=12h slow-query.log > slow_report2.log
2、分析指含有分析指含有select语句的慢查询语句的慢查询
pt-query-digest --filter ‘$event->{fingerprint} =~ m/^select/i’ slow-query.log> slow_report3.log
3、分析指定时间范围内的查询:分析指定时间范围内的查询:
pt-query-digest slow.log --since ‘2022-06-18 09:30:00’ --until ‘2022-06-18 10:00:00’> > slow_report4.log
4、针对某个用户的慢查询针对某个用户的慢查询
pt-query-digest --filter ‘($event->{user} || “”) =~ m/^root/i’ slow-query.log> slow_report5.log
5、查询所有所有的全表扫描或查询所有所有的全表扫描或full join的慢查询的慢查询
pt-query-digest --filter ‘((
e
v
e
n
t
−
>
F
u
l
l
s
c
a
n
∣
∣
"
"
)
e
q
"
y
e
s
"
)
∣
∣
(
(
event->{Full_scan} || "") eq "yes") ||((
event−>Fullscan∣∣"")eq"yes")∣∣((event->{Full_join} || “”) eq “yes”)’ slow-query.log> slow_report6.log
6、把查询保存到把查询保存到query_review表表
yum install perl-DBD-MySQL
pt-query-digest --user=root --password=123456 --review h=127.0.0.1,D=test,t=query_review --create-review-table slow-query.log
7、通过通过tcpdump抓取抓取mysql的的tcp协议数据,然后再分析协议数据,然后再分析
tcpdump -s 65535 -x -nn -q -tttt -i any -c 1000 port 3306 >mysql.tcp.txt
slow_report.log
# Query 1: 2.50 QPS, 134.86x concurrency, ID 0xD525F15D805543027866957537C44F3E at byte 5153
# This item is included in the report because it matches --limit.
# Scores: V/M = 0.03
# Time range: 2022-06-18T13:30:13 to 2022-06-18T13:30:17
属性 总计 最小 最大 平均 95% 标准 中等
# Attribute pct total min max avg 95% stddev median
# ============ === ======= ======= ======= ======= ======= ======= =======
# Count 43 10
语句执行时间
# Exec time 73 539s 53s 56s 54s 54s 1s 52s
锁占用时间
# Lock time 36 148ms 186us 146ms 15ms 366us 42ms 224us
发送到客户端的行数
# Rows sent 0 0 0 0 0 0 0 0
select语句扫描行数
# Rows examine 0 0 0 0 0 0 0 0
查询的字符数
# Query size 58 1.37k 140 142 140.20 136.99 0 136.99
# String:
# Databases test
# Hosts localhost
# Users root
# Query_time distribution
# 1us
# 10us
# 100us
# 1ms
# 10ms
# 100ms
# 1s
# 10s+ ################################################################
# Tables
# SHOW TABLE STATUS FROM `test` LIKE 'sbtest4'\G
# SHOW CREATE TABLE `test`.`sbtest4`\G
LOAD DATA LOCAL INFILE '//opt/mysql_tools/sysbench/sbtest4' INTO TABLE sbtest4 FIELDS TERMINATED BY ',' LINES TERMINATED BY '\n' (k, c, pad)\G