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