mysqltoolkit用法[备忘](一)

2014-11-24 16:34:55 · 作者: · 浏览: 0

mysql toolkit 是一个小插件,用于对数据库进行监控,分析的小工具, 通常都是调用 perl 对当前的环境,数据库进行分析,比对,值得学习一下。

下载地址
http://www.percona.com/redir/downloads/percona-toolkit/LATEST/RPM/percona-toolkit-2.2.5-2.noarch.rpm

安装时可能需要补充下面软件

yum install -y perl-DBD-mysql perl-IO-Socket-SSL
rpm -ivh percona-toolkit-2.2.5-2.noarch.rpm


命令列表

/usr/bin/pt-agent
/usr/bin/pt-align
/usr/bin/pt-archiver
/usr/bin/pt-config-diff
/usr/bin/pt-deadlock-logger
/usr/bin/pt-diskstats
/usr/bin/pt-duplicate-key-checker
/usr/bin/pt-fifo-split
/usr/bin/pt-find
/usr/bin/pt-fingerprint
/usr/bin/pt-fk-error-logger
/usr/bin/pt-heartbeat
/usr/bin/pt-index-usage
/usr/bin/pt-ioprofile
/usr/bin/pt-kill
/usr/bin/pt-mext
/usr/bin/pt-mysql-summary
/usr/bin/pt-online-schema-change
/usr/bin/pt-pmp
/usr/bin/pt-query-digest
/usr/bin/pt-show-grants
/usr/bin/pt-sift
/usr/bin/pt-slave-delay
/usr/bin/pt-slave-find
/usr/bin/pt-slave-restart
/usr/bin/pt-stalk
/usr/bin/pt-summary
/usr/bin/pt-table-checksum
/usr/bin/pt-table-sync
/usr/bin/pt-table-usage
/usr/bin/pt-upgrade
/usr/bin/pt-variable-advisor
/usr/bin/pt-visual-explain



语法及作用 (颜色红色表示需关注,蓝色表示作用不大)

/usr/bin/pt-align
用于对文件进行格式化输出

如文件 t 内容如下

[root@db2 aaa]# cat t
a abc   aaa  123d2 5 d2wf wwwxcc
a233 ddcqq 55  23ds2  55aaa 5tty655 ccqqq

格式化后输出如下

[root@db2 aaa]# /usr/bin/pt-align t
a    abc   aaa 123d2 5     d2wf    wwwxcc
a233 ddcqq  55 23ds2 55aaa 5tty655 ccqqq



/usr/bin/pt-archiver
把一个库中的表复制到另外一个服务器中

下面例子把 192.168.200.163 中 dbd.t1 复制至 192.168.200.171 中

[root@db2 ~]# /usr/bin/pt-archiver --source h=192.168.200.163,D=dbd,t=t1,u=terry,p=123 --dest h=192.168.200.171,D=dbd,t=t1,u=terry,p=123 --where "1=1"

注,必须在 source 中为表创建索引,否则报下面错误信息
Cannot find an ascendable index in table at /usr/bin/pt-archiver line 3175.

/usr/bin/pt-config-diff
用于显示两台数据库中配置文件不一样的地方

[root@db2 ~]# /usr/bin/pt-config-diff h=192.168.200.163 h=192.168.200.171 --user=root --password=123
5 config differences
Variable                  db2.mytest.com          db4
========================= ======================= ============
general_log_file          db2.log                 db4.log
hostname                  db2.mytest.com          db4
log_error                 /mdb/db2.mytest.com.err /mdb/db4.err
slow_query_log_file       db2-slow.log            db4-slow.log
wsrep_node_name           db2.mytest.com          db4


/usr/bin/pt-deadlock-logger
能够长期记录死锁信息到另外一个表中, 创建表格式如下

            CREATE TABLE monitor.deadlocks (
              server char(20) NOT NULL,
              ts datetime NOT NULL,
              thread int unsigned NOT NULL,
              txn_id bigint unsigned NOT NULL,
              txn_time smallint unsigned NOT NULL,
              user char(16) NOT NULL,
              hostname char(20) NOT NULL,
              ip char(15) NOT NULL, -- alternatively, ip int unsigned NOT NULL
              db char(64) NOT NULL,
              tbl char(64) NOT NULL,
              idx char(64) NOT NULL,
              lock_type char(16) NOT NULL,
              lock_mode char(1) NOT NULL,
              wait_hold char(1) NOT NULL,
              victim tinyint unsigned NOT NULL,
              query text NOT NULL,
              PRIMARY KEY  (server,ts,thread)
            ) ENGINE=InnoDB

语法

pt-deadlock-logger h=10.1.1.29 --dest h=10.1.1.29,D=monitor,t=deadlocks --user=terry --ask-pass


注: 当前需安装 perl-Term-ReadKey 应用才能够支持密码输入
用户 terry 除授权对 daedlocks 表具备写操作还需要具备 process 权限

参考发生死锁时候的信息:

mysql> select * from monitor.deadlocks \G
*************************** 1. row ***************************
   server: 10.1.1.29
       ts: 2013-12-16 03:41:05
   thread: 24473
   txn_id: 0
 txn_time: 5
     user: mini189
 hostname:
       ip: 10.1.1.25
       db: 189mini
      tbl: index_species_si