Percona的MySQL维护及监控工具使用
Contents
安装
使用
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