MySQL数据库是轻量级、开源数据库的佼佼者。其功能和管理,健壮性与Oracle相比还是有相当的差距。因此有非常多功能强大第三方的衍生产品,如percona-toolkit,XtraBackup等等。percona-toolkit是一组高级命令行工具的集合,能够查看当前服务的摘要信息。磁盘检測。分析慢查询日志,查找反复索引,实现表同步等等。
这个工具套件对DBA及运维人员着实不可多得。本文简要描写叙述这个工具的安装及其工具的大致介绍。
1、percona-toolkit的主要功能 Verify MySQL replication integrity by checking master and replica data consistency Efficiently archive rows Find duplicate indexes Summarize MySQL servers Analyze queries from logs and tcpdump Collect vital system information when problems occur
2、安装需求及步骤 下载链接:
需求 * Perl v5.8 or newer * Bash v3 or newer * Core Perl modules like Time::HiRes # perl --version |head -2 #检查perl版本号 # bash --version #检查bash版本号高速安装步骤(缺省/usr/local/bin路径下。过程略) # tar zxvf percona-toolkit-<version>.tar.gz # cd percona-toolkit-<version> # perl Makefile.PL (安装到非缺省文件夹 perl Makefile.PL PREFIX=${HOME}) # make # make test # make install
3、主要工具介绍 假设是非源代码安装或源代码安装是未指定路径,缺省情况下全部的pt相关的工具位于/usr/bin文件夹下,以pt-开头。
获取有关命令行的帮助信息。直接在shell提示符下输入命令行与--hlep就可以。如: /usr/bin/pt-upgrade --help # ls -hltr /usr/bin/pt-* pt-upgrade #该命令主要用于对照不同mysql版本号下SQL运行的差异,通经常使用于升级前进行对照。 #会生成SQL文件或单独的SQL语句在每一个server上运行的结果、错误和警告信息等。pt-online-schema-change #功能为支持在线变更表构,且不锁定原表。不堵塞原表的DML操作。 #该特性与Oracle的dbms_redefinition在线重定义表原理基本相似。 pt-mysql-summary #对连接的mysqlserver生成一份具体的配置情况以及sataus信息 #在尾部也提供当前实例的的配置文件的信息 pt-mext #并行查看SHOW GLOBAL STATUS的多个样本的信息。 #pt-mext会运行你指定的COMMAND,并每次读取一行结果。把空行分割的内容保存到一个一个的暂时文件里,最后结合这些暂时文件并行查看结果。 pt-kill #Kill掉符合指定条件mysql语句 pt-ioprofile #pt-ioprofile的原理是对某个pid附加一个strace进程进行IO分析 pt-fingerprint #用于生成查询指纹。主要将将sql查询生成queryID,pt-query-digest中的ID即是通过此工具来完毕的。 #相似于Oracle中的SQL_ID,涉及绑定变量。字面量等 pt-find #用与查找mysql表并运行指定的命令。相似于find命令 pt-fifo-split #模拟分割文件并通过管道传递给先入先出队列而不用真正的分割文件 pt-deadlock-logger #用于监控mysqlserver上死锁并输出到日志文件,日志包括发生死锁的时间、死锁线程id、死锁的事务id、发生死锁时事务运行时间等具体信息。 pt-archiver #将mysql数据库中表的记录归档到另外一个表或者文件 #该工具具仅仅是归档旧的数据,对线上数据的OLTP查询差点儿没有影响。 #能够将数据插入另外一台server的其它表中,也能够写入到一个文件里,方便使用load data infile命令导入数据。 pt-agent #基于Percona Cloud的一个client代理工具 pt-visual-explain #用于格式化explain的输出 pt-variable-advisor #用于分析mysql系统变量可能存在的一些问题,能够据此评估有关參数的设置正确与否。 pt-stalk #用于收集mysql数据库故障时的相关信息便于兴许诊断处理。 pt-slave-delay #用于设定从server落后于主server的时间间隔。 #该命令行通过启动和停止复制sql线程来设置从落后于主指定时间。
pt-sift #用于浏览pt-stalk生成的文件。 pt-show-grants #将当前实例的用户权限全部输出。能够用于迁移数据库过程中重建用户。 pt-query-digest #用于分析mysqlserver的慢查询日志,并格式化输出以便于查看和分析。 pt-pmp #为查询程序运行聚合的GDB堆栈跟踪,先进性堆栈跟踪。然后将跟踪信息汇总。 pt-index-usage #从log文件里读取查询语句,并用分析当前索引怎样被使用。 #完毕分析之后会生成一份关于索引没有被查询使用过的报告。能够用于分析报告考虑剔除没用的索引。 pt-heartbeat #用于监控mysql复制架构的延迟。
#主要是通过在主库上的--update线程持续更新指定表上的一个时间戳,从库上--monitor线程或者--check线程检查主库更新的时间戳并与当前系统时间对照,得到延迟值。 pt-fk-error-logger #将外键相关的错误信息记录到日志或表。 pt-duplicate-key-checker #功能为从mysql表中找出反复的索引和外键,这个工具会将反复的索引和外键都列出来 #同一时候也能够生成对应的drop index的语句 pt-diskstats #相似于iostat。打印磁盘io统计信息,可是这个工具是交互式而且比iostat更具体。能够分析从远程机器收集的数据。 pt-config-diff #用于比較mysql配置文件和server变量 #至少2个配置源须要指定。能够用于迁移或升级前后配置文件进行对照 pt-align #格式化输出 pt-slave-find #连接mysql主server并查找其全部的从。然后打印出全部从server的层级关系。 pt-table-checksum #用于校验mysql复制的一致性。 #该工具主要是高效的查找数据差异,假设存在差异性,能够通过pt-table-sync来解决。