percona-toolkit是一组高级命令行工具的集合,可以查看当前服务的摘要信息,磁盘检测,分析慢查询日志,查找重复索引,实现表同步等等

percona-toolkit 源自 Maatkit 和 Aspersa 工具,这两个工具是管理 mysql 的最有名的 工具,现在 Maatkit 工具已经不维护了,请大家还是使用 percona-toolkit 吧!这些 工具主要包括开发、性能、配置、监控、复制、系统、实用六大类,作为一个优秀 的 DBA,里面有的工具非常有用,如果能掌握并加以灵活应用,将能极大的提高工 作效率。

1、安装

需求

 * Perl v5.8 or newer
* Bash v3 or newer
* Core Perl modules like Time::HiRes
yum -y install  perl-DBI  perl-DBD-MySQL  perl-TermReadKey perl-devel perl-Time-HiRes
cd /usr/local/src/
wget https://www.percona.com/downloads/percona-toolkit/2.2.15/deb/percona-toolkit_2.2.15-2.tar.gz
tar -zxf percona-toolkit_2.2.15-2.tar.gz
cd percona-toolkit-2.2.15/
chmod +x Makefile.PL
perl Makefile.PL
make && make install
ln -s /usr/bin /usr/local/bin/*

2、介绍

1)pt-duplicate-key-checker

功能为从 mysql 表中找出重复的索引和外键,这个工具会将重复的索引和外键都列出来,并生成了删除重复索引的语句,非常方便

pt-duplicate-key-checker --h localhost --u root --p 123456 -d test

2)pt-online-schema-change

功能为在 alter 操作更改表结构的时候不用锁定表,也就是说执行 alter 的时候不会阻塞写和读取操作,注意执行这个工具的时候必须 做好备份

官方文档 http://www.percona.com/doc/percona-toolkit/2.1/pt-online-schema-ch ange.html

工作原理是创建一个和你要执行 alter 操作的表一样的空表结构,执 行表结构修改,然后从原表中 copy 原始数据到表结构修改后的表, 当数据 copy 完成以后就会将原表移走,用新表代替原表,默认动作 是将原表 drop 掉。在 copy 数据的过程中,任何在原表的更新操作都 会更新到新表,因为这个工具在会在原表上创建触发器,触发器会将 在原表上更新的内容更新到新表。如果表中已经定义了触发器这个工 具就不能工作了。

pt-online-schema-change --lock-wait-time=120 --alter="ENGINE=InnoDB" D=database,t=table --execute
pt-online-schema-change --lock-wait-time=120 --alter="ADD COLUMN domain_id INT"D=database,t=table --execute

3)pt-query-advisor

根据一些规则分析查询语句,对可能的问题提出建议

pt-query-advisor /path/to/slow-query.log
pt-query-advisor --type genlog mysql.log
pt-query-digest --type tcpdump.txt --print --no-report | pt-query-advisor
pt-query-advisor --query "select * from test"
pt-query-advisor /path/to/general.log
pt-query-advisor /path/to/localhost-slow.log

4)pt-show-grants

规范化和打印 mysql 权限,让你在复制、比较 mysql 权限以及进行版 本控制的时候更有效率

pt-show-grants --h localhost --u root --p 123456
pt-show-grants --h localhost --u root --p 123456 -d test
pt-show-grants --h localhost --u root --p 123456 -d test --revoke

5)pt-upgrade

在多台服务器上执行查询,并比较有什么不同!这在升级服务器的时 候非常有用,可以先安装并导数据到新的服务器上,然后使用这个工 具跑一下 sql 看看有什么不同,可以找出不同版本之间的差异

6)pt-index-usage

从 log 文件中读取查询语句,并用 explain 分析他们是如何利用索引。 完成分析之后会生成一份关于索引没有被查询使用过的报告

pt-index-usage /path/to/slow.log --h localhost --u root --p 123456 -d test --no-report --create-save-results-database

7)pt-pmp

为查询程序执行聚合的 GDB 堆栈跟踪,先进性堆栈跟踪,然后将跟踪信息汇总

pt-pmp -p 21933
pt-pmp -b /usr/local/mysql/bin/mysqld_safe

8)pt-visual-explain

格式化 explain 出来的执行计划按照 tree 方式输出,方便阅读

pt-visual-explain --connect aaa --h localhost --u root --p 123456 -d test
pt-visual-explain `mysql --h localhost --u root --p 123456 -d test -e "explain select testx from test where id=1"` |

9、pt-config-diff

比较 mysql 配置文件和服务器参数

pt-config-diff /usr/local/mysql/share/mysql/my-large.cnf /usr/local/mysql/share/mysql/my-medium.cnf

10、pt-mysql-summary

精细地对 mysql 的配置和 sataus 信息进行汇总,汇总后你直接看一眼 就能看明白

pt-mysql-summary  --user=root --password=sEtNcu3O9R7Dl29c --all-databases

11)pt-variable-advisor

分析 mysql 的参数变量,并对可能存在的问题提出建议

pt-variable-advisor --h localhost --u root --p 123456

结果

# WARN delay_key_write: MyISAM index blocks are never flushed until necessary.

# WARN innodb_lock_wait_timeout: This option has an unusually long value, which can cause system overload if locks are not being released.

# NOTE innodb_max_dirty_pages_pct: The innodb_max_dirty_pages_pct is lower than the default.

# NOTE low_priority_updates: The server is running with non-default lock priority for updates.

# NOTE max_binlog_size: The max_binlog_size is smaller than the default of 1GB.

# NOTE port: The server is listening on a non-default port.

# NOTE read_buffer_size-1: The read_buffer_size variable should generally be left at its default unless an expert determines it is necessary to change it.

# NOTE read_rnd_buffer_size-1: The read_rnd_buffer_size variable should generally be left at its default unless an expert determines it is necessary to change it.

# CRIT slave_skip_errors: You should not set this option.

# NOTE sort_buffer_size-1: The sort_buffer_size variable should generally be left at its default unless an expert determines it is necessary to change it.

# NOTE tx_isolation-1: This server's transaction isolation level is non-default.

# NOTE innodb_data_file_path: Auto-extending InnoDB files can consume a lot of disk space that is very difficult to reclaim later.

# WARN log_output: Directing log output to tables has a high performance impact.

12)pt-deadlock-logger

提取和记录 mysql 死锁的相关信息,收集和保存 mysql 上最近的死锁信息,可以直接打印死锁信息和存储 死锁信息到数据库中,死锁信息包括发生死锁的服务器、最近发生死 锁的时间、死锁线程 id、死锁的事务 id、发生死锁时事务执行了多长 时间等等非常多的信息

13)pt-fk-error-logger

提取和记录 mysql 外键错误信息,通过SHOW INNODB STATUS提取和保存mysql数据库最近发生的外键 错误信息。可以通过参数控制直接打印错误信息或者将错误信息存储 到数据库的表中

14)pt-mext

并行查看 SHOW GLOBAL STATUS 的多个样本的信息,原理:pt-mext 执行你指定的 COMMAND,并每次读取一行结果,把 空行分割的内容保存到一个一个的临时文件中,最后结合这些临时文 件并行查看结果

15)pt-query-digest

分析查询执行日志,并产生一个查询报告,为 MySQL、PostgreSQL、 memcached 过滤、重放或者转换语句

16)pt-trend

居于一组时间序列的数据点做统计,读取一个慢查询日志,并输出统计信息。也可以指定多个文件。如果 不指定文件的话直接从标准输入中读取信息

17)pt-heartbeat

监控 mysql 复制延迟,测量复制落后主 mysql 或者主 PostgreSQL 多少时间,你可以使用这个 脚本去更新主或者监控复制

原理:pt-heartbeat 通过真实的复制数据来确认 mysql 和 postgresql 复制延迟,这个避免了对复制机制的依赖,从而能得出准确的落后复 制时间,包含两部分:第一部分在主上 pt-heartbeat 的--update 线程 会在指定的时间间隔更新一个时间戳,第二部分是 pt-heartbeat 的 --monitor 线程或者--check 线程连接到从上检查复制的心跳记录(前 面更新的时间戳),并和当前系统时间进行比较,得出时间的差异。 你可以手工创建 heartbeat 表或者添加--create-table 参数,推荐使用 MEMORY 引擎

18)pt-slave-delay

设置从服务器落后于主服务器指定时间

原理:通过启动和停止复制 sql 线程来设置从落后于主指定时间。默 认是基于从上 relay 日志的二进制日志的位置来判断,因此不需要连 接到主服务器,如果 IO 进程不落后主服务器太多的话,这个检查方 式工作很好,如果网络通畅的话,一般 IO 线程落后主通常都是毫秒 级别。一般是通过--delay and --delay"+"--interval 来控制。--interval 是 指定检查是否启动或者停止从上 sql 线程的频繁度,默认的是 1 分钟 检查一次

19)pt-slave-find

查找和打印 mysql 所有从服务器复制层级关系

原理:连接 mysql 主服务器并查找其所有的从,然后打印出所有从服 务器的层级关系

20)pt-slave-restart

监视 mysql 复制错误,并尝试重启 mysql 复制当复制停止的时候,监视一个或者多个 mysql 复制错误,当从停止的时候尝试重新启动复 制。你可以指定跳过的错误并运行从到指定的日志位置

21)pt-table-checksum

检查 mysql 复制一致性

工作原理:pt-table-checksum 在主上执行检查语句在线检查 mysql 复 制的一致性,生成 replace 语句,然后通过复制传递到从,再通过 update 更新 master_src 的值。通过检测从上 this_src 和 master_src 的 值从而判断复制是否一致。 注意:使用的时候选择业务地峰的时候运行,因为运行的时候会造成 表的部分记录锁定。使用--max-load 来指定最大的负载情况,如果达 到那个负载这个暂停运行。如果发现有不一致的数据,可以使用 pt-table-sync 工具来修复。 注意:和 1.0 版本不同,新版本的 pt-table-checksum 只需要在 master 上执行即可。 通过 –explain 参数再结合二进制日志就可以看出脚本的工作原理, 如我的 test 库有一个名字为 zhang 的表,我们通过抓取二进制日志来 查看

22)pt-table-sync

高效同步 mysql 表的数据

原理:总是在主上执行数据的更改,再同步到从上,不会直接更改成 从的数据,在主上执行更改是基于主上现在的数据,不会更改主上的 数据。注意使用之前先备份你的数据,避免造成数据的丢失.执行 execute 之前最好先换成--print 或--dry-run 查看一下会变更哪些数据

23)pt-diskstats

是一个对 GUN/LINUX 的交互式监控工具,为 GUN/LINUX 打印磁盘 io 统计信息,和 iostat 有点像,但是这个工 具是交互式并且比 iostat 更详细。可以分析从远程机器收集的数据

24)pt-fifo-split

模拟切割文件并通过管道传递给先入先出队列而不用真正的切割文 件,pt-fifo-split 读取大文件中的数据并打印到 fifo 文件,每次达到指定行 数就往 fifo 文件中打印一个 EOF 字符,读取完成以后,关闭掉 fifo 文 件并移走,然后重建 fifo 文件,打印更多的行。这样可以保证你每次 读取的时候都能读取到制定的行数直到读取完成。注意此工具只能工 作在类 unix 操作系统。这个程序对大文件的数据导入数据库非常有 用,具体的可以查看 http://www.mysqlperformanceblog.com/2008/07 /03/how-to-load-large-files-safely-into-innodb-with-load-data-infile/。

25)pt-summary

友好地收集和显示系统信息概况,此工具并不是一个调优或者诊断工 具,这个工具会产生一个很容易进行比较和发送邮件的报告

原理:此工具会运行和多命令去收集系统状态和配置信息,先保存到 临时目录的文件中去,然后运行一些unix命令对这些结果做格式化, 最好是用 root 用户或者有权限的用户运行此命令

26)pt-stalk

出现问题的时候收集 mysql 的用于诊断的数据,pt-stalk 等待触发条件触发,然后收集数据帮助错误诊断,它被设计 成使用 root 权限运行的守护进程,因此你可以诊断那些你不能直接 观察的间歇性问题。默认的诊断触发条件为 SHOW GLOBAL STATUS。 也可以指定 processlist 为诊断触发条件 ,使用--function 参数指定

27)pt-archiver

将 mysql 数据库中表的记录归档到另外一个表或者文件,也可以直接 进行记录的删除操作

这个工具只是归档旧的数据,不会对线上数据的 OLTP 查询造成太大 影响,你可以将数据插入另外一台服务器的其他表中,也可以写入到 一个文件中,方便使用 load data infile 命令导入数据。另外你还可以 用它来执行 delete 操作。这个工具默认的会删除源中的数据。使用 的时候请注意

28)pt-find

查找 mysql 表并执行指定的命令,和 gnu 的 find 命令类似

29)pt-kill

Kill 掉符合指定条件 mysql 语句,假如没有指定文件的话pt-kill连接到mysql并通过SHOW PROCESSLIST 找到指定的语句,反之 pt-kill 从包含 SHOW PROCESSLIST 结果的文件 中读取 mysql 语句

percona-toolkit工具的使用的更多相关文章

  1. Percona Toolkit工具集介绍

    部署mysql工具是一个非常重要的部分,所以工具的可靠性和很好的设计非常重要.percona toolkit是一个有30多个mysql工具的工具箱.兼容mysql,percona server,mar ...

  2. Percona Toolkit工具连接MySQL 8报错的解决方案

    使用Percona Toolkit的工具连接MySQL 8.x数据库时,会遇到类似"failed: Plugin caching_sha2_password could not be loa ...

  3. Percona Toolkit工具使用

    Percona Toolkit简称pt工具-PT-Tools,是Percona公司开发用于管理MySQL的工具,功能包括检查主从复制的数据一致性.检查重复索引.定位IO占用高的表文件.在线DDL等 下 ...

  4. Centos 安装Percona Toolkit工具集

    1.下载 下载地址:   https://www.percona.com/downloads/percona-toolkit/LATEST/ [root@bogon ~]# wget https:// ...

  5. Percona Toolkit mysql辅助利器

    1 PT介绍 Percona Toolkit简称pt工具—PT-Tools,是Percona公司开发用于管理MySQL的工具,功能包括检查主从复制的数据一致性.检查重复索引.定位IO占用高的表文件.在 ...

  6. RDS for MySQL 如何使用 Percona Toolkit

    Percona Toolkit 包含多种用于 MySQL 数据库管理的工具. 下面介绍常用的 pt-online-schema-change  和  pt-archiver 搭配 RDS MySQL ...

  7. Toolkit 一键激活Office 2010方法及Office 2010 Toolkit工具下载

    Office 2010激活的方法很多,但推荐使用本站亲测,可永久使用的两种方法,随便使用哪一种,一个不行就换另外一个.基本上只要Office 2010正常安装了,下面两种方法的任何一种都可以正常激活. ...

  8. Want to archive tables? Use Percona Toolkit’s pt-archiver--转载

    原文地址:https://www.percona.com/blog/2013/08/12/want-to-archive-tables-use-pt-archiver/ Percona Toolkit ...

  9. 使用Network Emulator Toolkit工具模拟网络丢包测试(上)

    弱网络测试包括延时和丢包二种场景下应用的功能是否正常: 网络延时测试使用Fiddler工具控制上下行数据传输延时时间来模拟网络延时场景: 网络丢包测试使用Network Emulator Toolki ...

  10. percona toolkit之slave工具

    1:pt-slave-find ,主要是查找MySQL的层级,其实我感觉这个用处不是很大,因为层级比较多架构本身就很少,查看从库的话一般情况我们可以通过show slave hosts查看(不过不能显 ...

随机推荐

  1. iOS开发之--UIImageView的animationImages动画

    图片动画实现,代码如下: -(UIImageView *)animationImageView { if (!_animationImageView) { _animationImageView= [ ...

  2. 【AI】基本概念-准确率、精准率、召回率的理解

    样本全集:TP+FP+FN+TN TP:样本为正,预测结果为正 FP:样本为负,预测结果为正 TN:样本为负,预测结果为负 FN:样本为正,预测结果为负 准确率(accuracy):(TP+TN)/ ...

  3. 【Zookeeper系列】ZooKeeper管理分布式环境中的数据(转)

    原文地址:https://www.cnblogs.com/sunddenly/p/4092654.html 引言 本节本来是要介绍ZooKeeper的实现原理,但是ZooKeeper的原理比较复杂,它 ...

  4. MySQL 5.7新特性之generated column

    MySQL 5.7引入了generated column,这篇文章简单地介绍了generated column的使用方法和注意事项,为读者了解MySQL 5.7提供一个快速的.完整的教程.这篇文章围绕 ...

  5. 初始化后,composer安装

    在项目目录下输入composer install(保证要有composer.json的前提下)

  6. 用dx生成dex时遇到class name does not match path

    前言 用dx生成dex时遇到class name (Hello) does not match path这个问题还弄了挺久,这里就简单的记录一下. 步骤 首先是dx工具是在Android的SDK里面的 ...

  7. python 接口自动化测试二(request.get)

    环境搭建好后,接下来我们先来了解一下requests的一些简单使用,主要包括: requests常用请求方法使用,包括:get,post requests库中的Session.Cookie的使用 其它 ...

  8. mybatis14--注解的配置

    去掉对应的mapper映射文件 在dao文件中增加注解 public interface StudentDao { /** * 新增学生信息 */ @Insert(value="insert ...

  9. phpstorm 找到文件修改历史

    对着需要查看修改历史的文件右单击:

  10. 查看linux系统的运行级别

    查看当前系统的运行级别[root@apenglinux ~]# runlevel3 5查看系统的默认级别[root@apenglinux ~]# systemctl get-defaultgraphi ...