以 Percona-Toolkit-3.0 测试,参考地址:https://www.percona.com/doc/percona-toolkit/3.0/index.html
pt-align |
列对齐 |
vmstat | pt-align |
|
pt-archiver |
将MySQL表中的记录存档到另一个表或文件中,原表只保留最近一行,其他记录都会清除 (提前在目标库创建表结构) |
# 既保存到目标表,同时保存到文件(非sql) pt-archiver \
扫描二维码关注公众号,回复:
5067955 查看本文章
|
|
pt-config-diff |
比较 MySQL 配置文件和服务器变量的不同 |
pt-config-diff /etc/my.cnf /usr/local/mysql/support-files/my-small.cnf
pt-config-diff /etc/my.cnf h=localhost,P=3307,u=root,p=mysql,S=/tmp/mysql3307.sock
pt-config-diff \ |
|
pt-deadlock-logger |
标准输出死锁信息,可记录到表或文件中 |
# 死锁同时写进目标表和文件(以下示例:运行10秒,每2秒检查一次) pt-deadlock-logger --run-time=10s --interval=2 --create-dest-table \ h=localhost,P=3306,u=root,p=mysql,S=/tmp/mysql3306.sock \ --dest h=localhost,P=3307,u=root,p=mysql,S=/tmp/mysql3307.sock,D=demo,t=deadlocks \ --log '/root/archive/deadlocks.log'
|
|
pt-diskstats |
磁盘IO信息 |
# 等待10秒输出一次,共输出3次(除了第一次有列名,后面没有列名) pt-diskstats --iterations=3 --interval=10 --show-timestamps --headers=scroll
# 保存到文件 pt-diskstats --iterations=3 --interval=10 --save-samples='/root/archive/diskstats.log' |
|
pt-duplicate-key-checker |
MySQL 重复键检查 |
pt-duplicate-key-checker h=localhost,P=3306,u=root,p=mysql,S=/tmp/mysql3306.sock,D=demo_bak
pt-duplicate-key-checker h=localhost,P=3306,u=root,p=mysql,S=/tmp/mysql3306.sock \ --databases=demo_bak --tables=test |
|
pt-fifo-split |
将某文件转为 fifo 输出(如下将某文件按指定行数拆分到多个文件中) |
# 1. 先读取文件 pt-fifo-split --offset=1 --lines=10 --force --statistics --fifo=/tmp/fifo /root/samplesfile.txt # 2. 再划分到多个文件 while [ -e /tmp/fifo ]; do cat /tmp/fifo > /root/samplesfile_$i.txt ; (( i++ )); echo $i; done |
|
pt-find |
MySQL 数据库操作 |
# 创建时间大于1天并且存储引擎为 MyISAM 的所有表 pt-find --host=localhost --port=3306 --user=root --password=mysql \ --socket=/tmp/mysql3306.sock --ctime +1 --engine MyISAM # 执行 sql 语句 pt-find --host=localhost --port=3306 --user=root --password=mysql \ --socket=/tmp/mysql3306.sock --noquote --exec "alter table demo.test2 add newcol int" # 打印数据库所有表 pt-find --host=localhost --port=3306 --user=root --password=mysql \ --socket=/tmp/mysql3306.sock --noquote --print 'demo' |
|
pt-fingerprint |
参数化SQL |
pt-fingerprint --query "select a, b, c from users where id = 500" |
|
pt-fk-error-logger |
记录MySQL外键错误 |
# 外键错误显示 pt-fk-error-logger h=localhost,P=3306,u=root,p=mysql,S=/tmp/mysql3306.sock # 外键错误输出到表,仅一次 pt-fk-error-logger h=localhost,P=3306,u=root,p=mysql,S=/tmp/mysql3306.sock --iterations 1 # 外键错误输出到表 demo.fke pt-fk-error-logger h=localhost,P=3306,u=root,p=mysql,S=/tmp/mysql3306.sock \ --dest h=localhost,P=3306,u=root,p=mysql,S=/tmp/mysql3306.sock,D=demo,t=fke |
|
pt-heartbeat |
监控MySQL复制延迟 |
# 更新到表,每2秒一次,替换原记录 pt-heartbeat h=localhost,P=3306,u=root,p=mysql,S=/tmp/mysql3306.sock \ --create-table --database=demo --interval=2 --update --replace
pt-heartbeat h=localhost,P=3306,u=root,p=mysql,S=/tmp/mysql3306.sock \ --create-table --database=demo --interval=2 --run-time=10s --monitor
pt-heartbeat h=localhost,P=3306,u=root,p=mysql,S=/tmp/mysql3306.sock \ --create-table --database=demo --print-master-server-id \ --check h=localhost,P=3307,u=root,p=mysql,S=/tmp/mysql3307.sock |
|
pt-index-usage |
从慢查询日志中读取查询并分析索引(目标库将创建几张表存储分析信息) |
pt-index-usage /usr/local/mysql/data3306/server176-slow.log \ -hlocalhost -P3306 -uroot -pmysql -Ddemo -S/tmp/mysql3306.sock \ --no-report --save-results-database \ h=localhost,P=3306,u=root,p=mysql,S=/tmp/mysql3306.sock,D=demo_bak |
|
pt-ioprofile |
某进程IO监控 |
pt-ioprofile --profile-process=mysqld --cell=sizes --run-time=10 pt-ioprofile --profile-pid=28737 --cell=times --group-by=pid |
|
pt-kill |
杀掉符合某些条件的mysql 查询 |
#总运行30秒,每5秒检查一次,打印执行超过2秒的查询 pt-kill h=localhost,P=3306,u=root,p=mysql,S=/tmp/mysql3306.sock \ --run-time=30 --interval=5 --busy-time 2 --print # 60 秒的查询杀掉 pt-kill h=localhost,P=3306,u=root,p=mysql,S=/tmp/mysql3306.sock --busy-time 60 --kill |
|
pt-mext |
多次迭代 “SHOW GLOBAL STATUS”结果放在同一行中(每次迭代多一列结果) |
# 每10秒一次,5次迭代(有4列值,每列值为两次迭代间的差值) pt-mext -r -- mysqladmin -hlocalhost -P3306 -uroot -pmysql ext -i10 -c5 |
|
pt-mongodb-query-digest |
Mongodb 慢查询分析 |
pt-mongodb-query-digest 127.0.0.1:27017/test |
|
pt-mongodb-summary |
收集MongoDB集群的信息 |
pt-mongodb-summary 127.0.0.1:27017 |
|
pt-mysql-summary |
收集mysql的信息 |
pt-mysql-summary --host=localhost --port=3306 --user=root --password=mysql --socket=/tmp/mysql3306.sock |
|
pt-online-schema-change |
不加锁进行 ALTER 表 |
# 如增加字段 pt-online-schema-change h=localhost,P=3306,u=root,p=mysql,S=/tmp/mysql3306.sock,D=demo,t=test \ --alter "ADD COLUMN c1 INT" --print --execute |
|
pt-pmp |
输出指定程序的堆栈信息 |
#迭代5次,间隔2秒 pt-pmp --binary mysqld --iterations 5 --interval 2 |
|
pt-query-digest |
从日志、processlist和tcpdump分析MySQL查询 |
#读慢查询日志 pt-query-digest /usr/local/mysql/data3306/server176-slow.log #查询 processlist pt-query-digest --processlist h=localhost,P=3306,u=root,p=mysql,S=/tmp/mysql3306.sock |
|
pt-secure-collect |
收集、清理、打包和加密数据。将收集:pt-stalk、pt-summary、pt-mysql-summary |
# 收集信息(如加密,打包为: .tar.gz.aes) pt-secure-collect collect --bin-dir=/usr/bin \ --temp-dir="/root/pt_collection" --no-encrypt --no-remove-temp-files \ --mysql-host=localhost --mysql-port=3306 --mysql-user=root --mysql-password=mysql |
|
pt-show-grants |
导出MySQL授权脚本 |
#所以用户创建及授权脚本 pt-show-grants h=localhost,P=3306,u=root,p=mysql,S=/tmp/mysql3306.sock # 输出指定用户权限,同时输出回收权限的脚本 pt-show-grants h=localhost,P=3306,u=root,p=mysql,S=/tmp/mysql3306.sock \ --only=replication,sysbench --revoke |
|
pt-sift |
展示由pt-stalk 收集创建的文件信息(可使用 pt-secure-collect 的结果) |
pt-sift /root/pt_collection |
|
pt-slave-delay |
有意使MySQL从服务器落后于其主服务器 |
# 指定延迟的 slave pt-slave-delay --delay=10m --interval=30s --run-time=30m \ h=localhost,P=3307,u=root,p=mysql,S=/tmp/mysql3307.sock --daemonize |
|
pt-slave-find |
输出MySQL复制层次结构的树状视图 |
# (双主复制无法正常显示……) pt-slave-find h=localhost,P=3306,u=root,p=mysql,S=/tmp/mysql3306.sock |
|
pt-slave-restart |
监控MySQL从库,可跳过错误并重启复制 |
pt-slave-restart h=localhost,P=3307,u=root,p=mysql,S=/tmp/mysql3307.sock \ --error-numbers=1677,1062 --daemonize |
|
pt-stalk |
收集服务器、数据库诊断数据,文件保存到指定目录中 |
pt-stalk --no-stalk --iterations=2 --sleep=30 --host=localhost \ --dest=/root/ptstalk_collection --port=3306 --user=root --password=mysql --socket=/tmp/mysql3306.sock |
|
pt-summary |
输出服务器状态和配置(信息多) |
# 结果保存到指定目录 pt-summary --save-samples=/root/summary # 附加其他输出 pt-summary --summarize-mounts pt-summary --summarize-network pt-summary --summarize-processes |
|
pt-table-checksum |
验证MySQL复制完整性(包括行数) |
pt-table-checksum h=localhost,P=3306,u=root,p=mysql,S=/tmp/mysql3306.sock \ --databases=demo --tables=test,heartbeat --replicate=percona.checksums \ --check-binlog-format --check-plan --nocreate-replicate-table |
|
pt-table-sync |
有效地同步MySQL表数据(修复数据,参考校验pt-table-checksum) |
# 输出修复语句 |
|
pt-table-usage |
从日志或查询中分析使用的表 |
pt-table-usage /usr/local/mysql/data3306/server176-slow.log
pt-table-usage h=localhost,P=3306,u=root,p=mysql,S=/tmp/mysql3306.sock \ --query="explain select * from information_schema.tables where table_schema='demo'" |
|
pt-upgrade |
验证查询结果在不同服务器上是否相同(开销大) |
pt-upgrade --progress=time,5 --read-only --run-time=1m \ --type rawlog /usr/local/mysql/data3306/server176-slow.log \ h=localhost,P=3306,u=root,p=mysql,S=/tmp/mysql3306.sock \ h=localhost,P=3307,u=root,p=mysql,S=/tmp/mysql3307.sock \ --log=/root/pt-upgrade.log --daemonize |
|
pt-variable-advisor |
分析MySQL变量并对可能出现的问题提出建议 |
pt-variable-advisor h=localhost,P=3306,u=root,p=mysql,S=/tmp/mysql3306.sock --source-of-variables=mysql |
|
pt-visual-explain |
将EXPLAIN以树形输出 |
pt-visual-explain -hlocalhost -P3306 -uroot -pmysql -Ddemo -S/tmp/mysql3306.sock \ --connect /usr/local/mysql/data3306/server176-slow.log
mysql -hlocalhost -P3306 -uroot -pmysql -Ddemo -S/tmp/mysql3306.sock \ -e "explain select * from information_schema.tables where table_schema='demo'" \ | pt-visual-explain |