pt-upgrade
作用:
查看慢查询中对应的查询SQL在两个服务器上运行的结果
示例:
1
|
# pt-upgrade-uroot -proot h='192.168.2.11' h='192.168.2.12' /data/mysql/node1-slow.log 比较2个节点的日志情况
|
如下图:
【注意:下图是因为我故意将2个节点的慢查询日志弄改的不一样,正常的话应该全是0】
查看某sql文件在两个节点执行的结果:
1
|
# pt-upgrade-uroot -proot h='192.168.2.11' h='192.168.2.12' /root/a.sql
|
其它的功能暂时不会使用,待后续复习补充。
pt-index-usage
作用:
从log文件中读取插叙语句,并用explain分析他们是如何利用索引。完成分析之后会生成一份关于索引没有被查询使用过的报告。
工具连接到MySQL数据库服务器,通读查询日志,使用EXPLAIN 命令去问MySQL如何执行每一个QUERY操作的。当这些完成,它会打印没有使用索引的报告出来。
例子:
从慢查询中的SQL查看索引的使用情况
1
|
#pt-index-usage /data/mysql/88-slow.log -uroot -proot -h localhost
|
1
|
或者pt-index-usage
/data/mysql/88-slow
.log -uroot -proot -h localhost --quiet > index.log
# 将结果写入文件,不输出到屏幕
|
结果如下:
ALTER TABLE `b2b`.`ecs_nav` DROPKEY `ifshow`, DROP KEY `type`; -- type:non-unique
ALTER TABLE `b2b`.`ecs_order_action`DROP KEY `order_id`; -- type:non-unique
ALTER TABLE`b2b`.`ecs_order_goods` DROP KEY `goods_id`, DROP KEY `order_id`; --type:non-unique
ALTER TABLE `b2b`.`ecs_order_info`DROP KEY `agency_id`, DROP KEY `extension_code`, DROP KEY `order_status`, DROPKEY `pay_id`, DROP KEY `pay_status`, DROP KEY `rebate`, DROP KEY `shipping_id`,DROP KEY `shipping_status`, DROP KEY `supplier_id`, DROP KEY `user_id`; --type:non-unique
ALTER TABLE `b2b`.`ecs_region`DROP KEY `agency_id`, DROP KEY `parent_id`, DROP KEY `region_type`; --type:non-unique
ALTER TABLE `b2b`.`ecs_role` DROPKEY `user_name`; -- type:non-unique
ALTER TABLE `b2b`.`ecs_sessions`DROP KEY `expiry`; -- type:non-unique
ALTER TABLE`b2b`.`ecs_sessions_data` DROP KEY `expiry`; -- type:non-unique
......省略部分结果......
说明:
1、可以看到很多-- type:non-unique 非唯一索引
2、在读取完日志里面所有的事件之后,对于每一个没有用到的索引,工具打印出DROP语句。忽略了被日志里面任意查询访问的表索引,避免不必要的结果。
手册上说可以将结果保存到数据库中,如:
pt-index-usage/data/dbdata/localhost-slow.log --host=localhost --user=root --password=root --no-report --create-save-results-database
我实验测试未成功,不知什么回事。希望您解决了给我留言。
pt-pmp
作用:
为查询程序执行聚合的GDB堆栈跟踪,先进性堆栈跟踪,然后将跟踪信息汇总。
pt-visual-explain
格式:
pt-visual-explain<file_containing_explain_output>
pt-visual-explain-c <file_containing_query>
mysql-e "explain select * from mysql.user" | pt-visual-explain
例如:
1
2
|
# mysql-uroot -proot -e 'explain select * from b2b.ecs_goods' > a.sql
# pt-visual-explain/root/a.sql
|
或者通过管道一步处理:
1
|
# mysql-uroot -proot -e 'explain select * from b2b.ecs_goods'|pt-visual-explain
|
pt-config-diff
说明:
比较MySQL节点间配置文件的区别。
pt-config-diff diffs MySQL configuration files and server variables. CONFIG canbe a filename or a DSN. At least twoCONFIG sources must be given. Likestandard Unix diff, there is no output if there are no differences.
示例:
比较本地与远程的192.168.2.12上的my.cnf有何不同
1
|
# pt-config-diff h='192.168.2.11'h='192.168.2.12' -uroot -proot 【这个更详细】
|
比较本地的/etc/my.cnf与远程的192.168.2.12上的my.cnf有何不同
1
|
# pt-config-diff /etc/my.cnf h='192.168.2.12' -uroot -proot 【这个很简略】
|