安装

Doc

使用

pt-mysql-summary

pt-mysql-summary --host=127.0.0.1 --port=6606 --password=xxx

说明: 显示MySQL服务器的概况.

pt-align

将输出的文本对齐.

例子:

#echo -e "hello owrld\n                            Hello world" | pt-align 
hello owrld
Hello world

如果没有pt-align,则输出如下:

#echo -e "hello owrld\n                            Hello world"
hello owrld
                            Hello world

pt-archiver

将mysql数据库中表的记录归档到另外一个表或者文件.

pt-archiver --source h=127.0.0.1,D=dbName,t=tableName --user=root --password=123456 \
--dest h=127.0.0.1,D=destDBName,t=destTableName --file '/var/log/logToFileName' --where "id<=100000" --commit-each

默认会删除源表的数据.

pt-config-diff

配置文件比较工具

pt-config-diff my.conf1 my.conf2 ...

pt-deadlock-logger

死锁检测输出日志工具,这里将它输出到test数据库中的deadlocks表中.

pt-deadlock-logger --ask-pass --run-time=10 --interval=3 --create-dest-table --dest D=test,t=deadlocks u=root,P=6606,h=127.0.0.1

pt-diskstats

打印磁盘io统计信息

pt-duplicate-key-checker

重复索引检测工具.

pt-duplicate-key-checker --host=127.0.0.1 --user=root --databases=db1,db2,db3 --port=6606 --password=xxxx

pt-fifo-split

可以模拟切割文件,并通过管道传递给先入先出队列而不用真正的切割文件

源文件 /tmp/hello.world 内容

cat /tmp/hello.world 
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20

先创建fifo文件
pt-fifo-split /tmp/hello.world --fifo=/tmp/hello.world.fifo --lines=3 &

然后就可以不断向 /tmp/cmbcc.fifo 文件读取文件了.结果如下:

cat /tmp/hello.world.fifo 
1
2
3

cat /tmp/hello.world.fifo 
4
5
6

cat /tmp/hello.world.fifo 
7
8
9

...

pt-find

对MySQL的数据库或表进行类似GNU find的操作并执行一些命令

打印MySQL中的所有数据库及表名
pt-find --ask-pass --host=127.0.0.1 --user=root --port=6606

打印指定数据库中的表
pt-find --ask-pass --host=127.0.0.1 --user=root --port=6606 db1 db2 db3

找出表大小超过100M的表
pt-find --ask-pass --host=127.0.0.1 --user=root --port=6606 --tablesize +100M  db1 db2

显示所有表的大小并排序
pt-find --ask-pass --host=127.0.0.1 --user=root --port=6606 --printf "%T\t%D.%N\n" | sort -rn

所有大小信息
pt-find --ask-pass --host=127.0.0.1 --user=root --port=6606 --printf "DB=%D, TB=%N, Auto_increment=%a, Engine=%E,  ROWS=%S, Row_format=%R, Max_data_length=%M, Avg_row_length=%A, Collation=%L, Data_length=%d, Index_length=%I, Table_length=%T\n\n" db1 db2 db3 | sort -rn

官方文档

pt-fingerprint

将查询转化为带参查询

pt-fingerprint --query "select a, b, c from users where id = 500"

select a, b, c from users where id = ?

pt-fk-error-logger

提取和记录mysql外键错误信息.

pt-fk-error-logger --ask-pass -h127.0.0.1 -P6606 --run-time=10 --interval=3 -uroot --dest D=test t=foreign_key_errors h=127.0.0.1,u=root,P=6606

pt-heartbeat

监控MySQL复制延迟.

官方文档

pt-index-usage

从慢查询中分析索引使用情况

pt-index-usage /path/to/slow.log -h127.0.0.1 -uroot -P6606 --password=xxx

pt-online-schema-change

在线更改表结构,既不阻塞read,也不会阻塞写

pt-online-schema-change --alter "ADD COLUMN c1 INT" D=sakila,t=actor

官方文档

pt-query-digest

从日志,processlist, tcpdump分析MySQL的查询.

pt-query-digest slow.log

pt-query-digest --processlist h=host1

pt-query-digest --review h=host2 --no-report slow.log

官方文档

pt-show-grants

显示服务器的用户及相应的权限

pt-show-grants --user=root --port=6606 --host=127.0.0.1 --ask-pass

pt-sift

浏览由 pt-stalk 生成的文件

pt-stalk

问题诊断工具.

pt-stalk --collect-tcpdump --function status \
--variable Threads_connected --threshold 2500 \
--daemonize -- --user=root --password=YOURPASSWORD

当MySQL的参数 threads_connected 达到 2500 时, 就收集它的服务器状态信息.

pt-table-checksum

用于检测MySQL主、从库的数据是否一致

博客资料

pt-table-sync

同于主从同步.

pt-table-checksum 发现不一致时,就用它来进行同步.

pt-variable-advisor

查看变量及其提供建议.

pt-variable-advisor --user=root --host=127.0.0.1 --port=6606 -p password h=127.0.0.1

pt-visual-explain

可视化explain

mysql -h127.0.0.1 -uroot -p -P6606 -D yourDbName -e "explain select * from users limit 1" | pt-visual-explain 
Enter password: 

Table scan
rows           422
+- Table
   table          users