pt-upgrade

作用:

    查看慢查询中对应的查询SQL在两个服务器上运行的结果

 

示例:

    # pt-upgrade-uroot -proot h='192.168.2.11' h='192.168.2.12' /data/mysql/node1-slow.log   比较2个节点的日志情况

如下图:

【注意:下图是因为我故意将2个节点的慢查询日志弄改的不一样,正常的话应该全是0】

wKiom1cyyubCYaxSAAAYYAnjihk492.png


查看某sql文件在两个节点执行的结果:

    # 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查看索引的使用情况

#pt-index-usage /data/mysql/88-slow.log -uroot -proot -h localhost
或者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

 

例如:

    # mysql-uroot -proot -e 'explain select * from b2b.ecs_goods' > a.sql
    # pt-visual-explain/root/a.sql

    或者通过管道一步处理:

    # 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有何不同

# pt-config-diff h='192.168.2.11'h='192.168.2.12' -uroot -proot  【这个更详细】

wKiom1cyy2bCxz_DAAB5uJHL-p0355.png



比较本地的/etc/my.cnf与远程的192.168.2.12上的my.cnf有何不同

# pt-config-diff /etc/my.cnf  h='192.168.2.12' -uroot -proot  【这个很简略】

wKioL1cyzFbh3GLSAAAmqJoyKCc208.png