「Percona Toolkit」- 安装及介绍

解决方案

Version 3.0.2

Percona Toolkit 集合了一系列的命令,这些命令用于 MySQL 和系统任务,主要用于处理“手动执行难度大”的各种 MySQL 和系统任务相关问题;

这里面的一些工具都是专业的开发、经过正式测试的、文档完整的工具;

Percona Toolkit 衍生自 Maatkit 和 Aspersa;

提供了如下功能

  • 验证主副本数据的一致性;
  • 有效地存档行;
  • 查找重复的索引;
  • 总结 MySQL 服务器;
  • 从日志和 tcpdump 分析查询;
  • 在发生问题时收集重要的系统信息;

安装笔记

Percona Toolkit 3.2.0 on CentOS 7.4

Configuring Percona Repositories with percona-release
Installing Percona Toolkit

# 添加仓库
yum install https://repo.percona.com/yum/percona-release-latest.noarch.rpm

# 执行安装
yum install percona-toolkit-3.2.0

通过编译安装

下载的话可以去官网下载Percona Toolkit

可以查看官方的安装教程

源码目录中的INSTALL文件也包含了安装方法,以下内容摘自INSTALL文件,更多内容参阅源码目录下的INSTALL文件:

系统环境要求及相关依赖
Most tools require:

* Perl v5.8 or newer
* Bash v3 or newer
* Core Perl modules like Time::HiRes

Tools that connect to MySQL require:

* Perl modules DBI and DBD::mysql
* MySQL 5.0 or newer

构建及安装

tar zxvf percona‐toolkit‐<version>.tar.gz
cd percona‐toolkit‐<version>

# perl Makefile.PL PREFIX=${HOME},PREFIX指定安装路径,默认为/usr/local
perl Makefile.PL
make

# 测试
make test

make install

在使用工具前,需要阅读的文档

如何指定 DSN 参数:DSN (DATA SOURCE NAME) SPECIFICATIONS
控制工具行为的环境变量:ENVIRONMENT

命令简介

Percona Toolkit Homepage
Manual Download
Online Percona Toolkit Documentation
Other software: http://www.percona.com/software/

这些工具都是由 Perl 语言写的。如果要查看手册,除了在线手册和 man 之外,还有使用 perldoc 命令

比如,要查看 pt-table-sync 的帮助手册:

perldoc pt-table-sync

# 如果你的发行版里没有安装 perl-doc 软件包,需要安装一下;

以下是命令列表及命令的作用:

pt-pmp,为指定程序执行聚合 GDB 堆栈跟踪;
pt-online-schema-change,不锁表执行 ALTER 操作;
pt-align,将其他 pt-*命令的输出对齐到列头;
pt-config-diff,比较 MySQL 配置文件和服务器变量;
pt-sift,浏览 pt-stalk 创建的文件;
pt-visual-explain,将 EXPLAIN 输出格式化为树形;
pt-mext,并列查看 MySQL 的“SHOW GLOBAL STATUS”的许多示例;
pt-query-digest,从查询日志、进程列表、tcpdump 中分析 MySQL 的查询;
pt-table-sync,用于有效地同步 MySQL 中表数据;
pt-mysql-summary,已友好的方式汇总 MySQL 的信息;
pt-ioprofile,监视进程 IO 并打印文件和 I/O 活动的表格;
pt-diskstats,交互式的 I/O 监控工具;
pt-archiver,将 MySQL 表中的行存档到另一个表或文件;
pt-deadlock-logger,记录 MySQL 中的死锁;
pt-stalk,在发生问题时,收集关于 MySQL 的取证数据;
pt-show-grants,规范和打印 MySQL 授权信息,以便可以有效地复制、比较、版本控制
pt-summary,以友好的方式,总述系统中的信息;
pt-fifo-split,将文件和管道分割成 fifo,而不会真正分裂;
pt-table-usage,分析查询是如何使用表的;
pt-fk-error-logger,记录 MySQL 中的外键错误;
pt-fingerprint,将查询转换成指纹;
pt-kill,杀死符合特定条件的 MySQL 查询;
pt-find,查找 MySQL 表并执行动作,非常像 find 命令;
pt-variable-advisor,分析 MySQL 变量,并就可能出现的问题提供建议;
pt-table-checksum,验证 MySQL 复制完整性;

与「索引」有关的命令

pt-index-usage,读取查询日志,然后对日志中的 SQL 执行 EXPLAIN,输出索引的使用情况;
pt-duplicate-key-checker,分析表结构,找到重复和冗余的索引以及外键;
pt-upgrade,验证不同服务器上的查询结果是否相同。用于检查计划中的索引变更;

与「主从复制」有关的命令

pt-slave-delay,使 MySQL Slave 落后于 Master
pt-slave-find,查找并打印 MySQL Slave 的复制层次结构树;
pt-slave-restart,监控 MySQL 多台服务器的复制错误。MySQL 发生错误之后,会尝试重新启动;
pt-heartbeat,监视 MySQL 复制延迟;

pt-table-checksum – 验证复制一致性

原理及特性:
1)使用 REPLACE..SELECT 查询,计算 CRC 来检查数据一致性(使用 pt-table-checksum –explain 查看细节);
2)根据索引(或主键)将数据分为多个快。如果数据表不包含索引,并且包含少量数据,该工具将表作为单个块进行检查;

注意事项:
1)由于检查以块为单位,只有当行数相同校验和不同时,才能断定存在内容不一致的行;

pt-table-sync – 在表间同步数据

原理及特性:
1)在主库上执行差异语句(不改变数据),然后利用主从复制实现数据同步到从库;

注意事项:
1)同步之前,应该使用 –dry-run 以及 –print 进行测试;
2)该工具不会同步表结构、索引等对象;

pt-heartbeat – 检测复制延迟

原理及特性:
1)在主库中插入数据,并在数据中记录插入时间戳;
2)在从库中读取数据,将时间戳与当前系统时间对比