percona-toolkit
1. 概述
percona-toolkit是一组高级命令行工具的集合,用来执行各种通过手工执行非常复杂和麻烦的mysql和系统任务,这些任务包括:
l 检查master和slave数据的一致性
l 有效地对记录进行归档
l 查找重复的索引
l 对服务器信息进行汇总
l 分析来自日志和tcpdump的查询
l 当系统出问题的时候收集重要的系统信息
percona-toolkit源自Maatkit 和Aspersa工具,这两个工具是管理mysql的最有名的工具,现在Maatkit工具已经不维护了,请大家还是使用percona-toolkit吧!这些工具主要包括开发、性能、配置、监控、复制、系统、实用六大类,作为一个优秀的DBA,里面有的工具非常有用,如果能掌握并加以灵活应用,将能极大的提高工作效率。
2. 工具安装
访问http://www.percona.com/software/percona-toolkit/下载最新版本的Percona Toolkit
percona-toolkit的编译安装方式
tar xzvf percona-toolkit-2.1.1.tar.gz
cd percona-toolkit-2.1.1
perl Makefile.PL
make
make test
make install
3. 工具介绍
3.1 pt-duplicate-key-checker
功能介绍:功能为从mysql表中找出重复的索引和外键,这个工具会将重复的索引和外键都列出来,并生成了删除重复索引的语句,非常方便
用法介绍:pt-duplicate-key-checker [OPTION...] [DSN] ,包含比较多的选项,具体的可以通过命令pt-duplicate-key-checker --help来查看具体支持那些选项,我这里就不一一列举了。DSN为数据库或者表。
使用示例:pt-duplicate-key-checker --host=localhost --user=root --password=test --databases=test
3.2 pt-index-usage
功能介绍:从log文件中读取插叙语句,并用explain分析他们是如何利用索引。完成分析之后会生成一份关于索引没有被查询使用过的报告。
用法介绍:pt-index-usage [OPTION...] [FILE...] 可以直接从慢查询中获取sql,FILE文件中的sql格式必须和慢查询中个是一致,如果不是需要用pt-query-digest转换一下。也可以不生成报告直接保存到数据库中
使用示例:从慢查询中的sql查看索引使用情况范例: pt-index-usage /dbdata/slow.log --host=localhost --user=root --password=test
3.3 pt-pmp
功能介绍:为查询程序执行聚合的GDB堆栈跟踪,先进性堆栈跟踪,然后将跟踪信息汇总。 用法介绍:pt-pmp [OPTIONS] [FILES]
使用示例:pt-pmp -p 21933 pt-pmp -b /usr/local/mysql/bin/mysqld_safe
3.4 pt-visual-explain
功能介绍:格式化explain出来的执行计划按照tree方式输出,方便阅读。
用法介绍:pt-visual-explain [OPTION...] [FILE...]
使用示例: 查看包含explain结果的a文件的范例:pt-visual-explain a,查看包含查询语句的a文件的范例:pt-visual-explain --connect a --user=root --password=test,通过管道直接查看explain输出结果的范例:mysql -uroot -ptest -e "explain select email from test.collect_data where id=101992419" |pt-visual-explain
3.5 pt-deadlock-logger
功能介绍:提取和记录mysql死锁的相关信息,收集和保存mysql上最近的死锁信息,可以直接打印死锁信息和存储死锁信息到数据库中,死锁信息包括发生死锁的服务器、最近发生死锁的时间、死锁线程id、死锁的事务id、发生死锁时事务执行了多长时间等等非常多的信息。
用法介绍:pt-deadlock-logger [OPTION...] SOURCE_DSN
使用示例:打印本地mysql的死锁信息 pt-deadlock-logger --user=root --password=test h=localhost –print,将本地的mysql死锁信息记录到数据库的表中,也打印出来 pt-deadlock-logger --user=root --password=test h=localhost --print D=test,t=deadlocks
3.6 pt-fk-error-logger
功能介绍:提取和记录mysql外键错误信息,过SHOW INNODB STATUS提取和保存mysql数据库最近发生的外键错误信息。可以通过参数控制直接打印错误信息或者将错误信息存储到数据库的表中。
用法介绍: pt-fk-error-logger [OPTION...] SOURCE_DSN
3.7 pt-query-digest
功能介绍:解析和分析mysql日志文件,并产生一个查询报告,为MySQL、PostgreSQL、memcached过滤、重放或者转换语句。
用法介绍:pt-query-digest [OPTION...] [FILE]
使用示例:分析本地的慢查询文件 pt-query-digest --user=root --password=test /dbdata/ slow.log
3.8 pt-align
功能介绍:用于对文件进行格式化输出
3.9 pt-config-diff
功能介绍:用于显示两台数据库中配置文件不一样的地方
3.10 pt-find
功能介绍:类似 linux 下 find 功能,能够根据需要对数据库中表进行过滤,搜索
查询表大小
最近3天创建的表
3.11 pt-ioprofile
功能介绍:分析并打印最近活跃的 IO 与相关进程信息 (只针对 mysql 进程)
3.12 pt-mext
功能介绍:用于记录固定时间间隔内 status 返回值的变化 (下面例子将会计算 10 秒内的变化)
3.13 pt-mysql-summary
功能介绍:给当前数据库进行一些数据统计,不一一对统计进行讨论,注: 执行该命令时,需要调用 mysqldump, 需具备 mysqldump 命令执行路径