pt(Percona Toolkit)工具详解:(二)工具介绍

本文涉及的产品
云数据库 RDS MySQL Serverless,0.5-2RCU 50GB
简介:
之所以先写介绍,那是因为太多工具,要查起来非常麻烦,要先做个汇总介绍,方便查找.

介绍
1.找出重复的索引和外键

    pt-duplicate-key-checker

这个工具会将重复的索引和外键都列出来,并生成了删除重复索引的语句,非常方便

2.执行alter的时候不会阻塞写和读取操作

    pt-online-schema-change

非常有名的工具,工作原理是创建一个和你要执行alter操作的表一样的空表结构,执行表结构修改,然后从原表中先创建一个触发器,把新插入和更改的数据同步到新表,再copy原始数据到表结构修改后的表,当数据copy完成以后就会将原表移走,用新表代替原表,默认动作是将原表drop掉。所以,如果表中已经定义了触发器这个工具就不能工作了。也要注意数据的备份问题.

3.分析日志记录里面的sql或者直接整条sql,并提出建议

    pt-query-advisor

实际意义不大,对于分析大文件容易出现卡死.

4.格式化显示mysql权限

    pt-show-grants

实际意义不大,主要是比较mysql权限以及进行版本控制

5.在多台服务器上执行查询,并比较有什么不同

    pt-upgrade

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

6.用explain分析sql如何利用索引并生成报告

    pt-index-usage

可以直接从慢查询中获取sql,FILE文件中的sql格式必须和慢查询中个是一致,如果不是一直需要用pt-query-digest转换一下。也可以不生成报告直接保存到数据库中

7.查询程序执行聚合的GDB堆栈跟踪并汇总

    pt-pmp

看起来很复杂,其实属于底层程序行为效率跟踪

8.格式化explain出来的执行计划按照tree方式输出

    pt-visual-explain

没有实际意义,只是方便阅读

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

    pt-config-diff

最少必须指定两个配置文件源,就像unix下面的diff命令一样,如果配置完全一样就不会输出任何东西,有时候用来排除配置差异造成的问题.

10.对mysql的配置和sataus信息进行汇总

    pt-mysql-summary

连接mysql后查询出status和配置信息保存到临时目录中,然后用awk和其他的脚本工具进行格式化

11.分析mysql的参数变量并给出建议

    pt-variable-advisor

实际意义有限,还是按自己需求来配置最实际,特别是多实例场景,这个建议毫无意义.

12.汇总mysql死锁的相关信息

    pt-deadlock-logger

收集和保存mysql上最近的死锁信息,可以直接打印死锁信息和存储死锁信息到数据库中,死锁信息包括发生死锁的服务器、最近发生死锁的时间、死锁线程id、死锁的事务id、发生死锁时事务执行了多长时间等等非常多的信息,对于频繁出现死锁的情况,建议开一段时间来收集信息.

13.汇总mysql外键错误信息

    pt-fk-error-logger

通过SHOW INNODB STATUS提取和保存mysql数据库最近发生的外键错误信息。可以通过参数控制直接打印错误信息或者将错误信息存储到数据库的表中.然而现在很少用外键了,也不建议用外键.

14.查看SHOW GLOBAL STATUS的多个样本的信息

    pt-mext

实际意义不大,手动执行然后分析其实也不难.

15.分析sql日志并生成报告,最后给出建议

    pt-query-digest

很出名的工具,多用来分析统计慢查询,也可以统计一般sql日志,运行速度快,信息清晰.它可以分析binlog、General log、slowlog,也可以通过SHOW PROCESSLIST或者通过tcpdump抓取的MySQL协议数据来进行分析。可以把分析结果输出到文件中,分析过程是先对查询语句的条件进行参数化,然后对参数化以后的查询进行分组统计,统计出各查询的执行时间、次数、占比等,可以借助分析结果找出问题进行优化。

16.按时间统计sql日志并生成报告

    pt-trend

实际意义不大,例如:读取本地慢查询日志并输出统计信息.

17.监控mysql复制延迟

    pt-heartbeat

会生成一个数据表,记录延时时间,不过功能做得不是太好,如果没有数据库完全控制权或者网络问题,还是慎用,容易造成数据不一致.

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

    pt-slave-delay

建议不用,功能做得不好,容易搞挂主从结构,到时不得不重做主从就麻烦了.

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

    pt-slave-find

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

20.监视mysql复制错误,并尝试重启mysql复制

    pt-slave-restart

监视一个或者多个mysql复制错误,当从停止的时候尝试重新启动复制。属于监控相关

21.检查mysql复制一致性

    pt-table-checksum

很出名的工具,只需要在master上执行即可,通常总是和pt-table-sync协作。工作原理:pt-table-checksum在主上执行检查语句在线检查mysql复制的一致性,然后通过复制传递到从,再通过update更新master_src的值。通过检测从上this_src和master_src的值从而判断复制是否一致。最后把检查报告写到某个位置,等待pt-table-sync调用。根据原理来说,它对于binlog_format要求是Statement和Mixed才能正常使用,对于row模式来说,则会报错不能使用。所以使用前要注意进行更改配置,set global binlog_format=STATEMENT来使用,不然就使用不了,运行完改回去就可以了。也要注意需要一定权限,最好用root.

22.同步mysql主从库差异表的数据

    pt-table-sync

很出名的工具,主从复制本身存在一些缺陷,在极端情况下会出现从库多了数据,或者少了数据的情况,这个时候就需要人为修复,这个工具可以帮到我们。原理:通过pt-table-checksum得到的数据,列出或直接执行修改复制的差异数据,使其重新同步。总是在主上执行数据的更改,再同步到从上,不会直接更改成从的数据,在主上执行更改是基于主上现在的数据,不会更改主上的数据。注意使用之前先备份你的数据,避免造成数据的丢失.执行execute之前最好先换成--print或--dry-run查看一下会变更哪些数据。

23.磁盘io监控工具

    pt-diskstats

和iostat有点像,但是这个工具是交互式并且比iostat更详细。也可以分析从远程机器收集的数据。

24.模拟切割文件并通过管道传递给先入先出队列

    pt-fifo-split

实际用的不多,通过读取大文件中的数据并打印到fifo文件,每次达到指定行数就往fifo文件中打印一个EOF字符,读取完成以后,关闭掉fifo文件并移走,然后重建fifo文件,打印更多的行。这样可以保证你每次读取的时候都能读取到制定的行数直到读取完成。注意此工具只能工作在类unix操作系统。这个程序对大文件的数据导入数据库非常有用,

25.显示系统信息概况

    pt-summary

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

26.收集mysql的用于诊断的数据

    pt-stalk

遇到一些疑难杂症的时候,可以拿来测试并获取问题数据.原理:pt-stalk等待触发条件触发,然后收集数据帮助错误诊断,它被设计成使用root权限运行的守护进程,因此你可以诊断那些你不能直接观察的间歇性问题。默认的诊断触发条件为SHOW GLOBAL STATUS。也可以指定processlist为诊断触发条件 ,使用--function参数指定。

27.将mysql数据库中表的记录归档到另外一个表或者文件

    pt-archiver

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

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

    pt-find

库少的话用途不大,当你的库很多,表也很多的时候,而又忘记了自己要查的表名的时候,还是挺有用的.

29.Kill掉符合指定条件mysql语句

    pt-kill

加入没有指定文件的话pt-kill连接到mysql并通过SHOW PROCESSLIST找到指定的语句,反之pt-kill从包含SHOW PROCESSLIST结果的文件中读取mysql语句.例如:删除运行超过60秒的连接.





     本文转自arthur376 51CTO博客,原文链接:http://blog.51cto.com/arthur376/1893321,如需转载请自行联系原作者






相关实践学习
基于CentOS快速搭建LAMP环境
本教程介绍如何搭建LAMP环境,其中LAMP分别代表Linux、Apache、MySQL和PHP。
全面了解阿里云能为你做什么
阿里云在全球各地部署高效节能的绿色数据中心,利用清洁计算为万物互联的新世界提供源源不断的能源动力,目前开服的区域包括中国(华北、华东、华南、香港)、新加坡、美国(美东、美西)、欧洲、中东、澳大利亚、日本。目前阿里云的产品涵盖弹性计算、数据库、存储与CDN、分析与搜索、云通信、网络、管理与监控、应用服务、互联网中间件、移动服务、视频服务等。通过本课程,来了解阿里云能够为你的业务带来哪些帮助     相关的阿里云产品:云服务器ECS 云服务器 ECS(Elastic Compute Service)是一种弹性可伸缩的计算服务,助您降低 IT 成本,提升运维效率,使您更专注于核心业务创新。产品详情: https://www.aliyun.com/product/ecs
相关文章
|
监控 关系型数据库 MySQL
Spotlight on Mysql在Windows平台下的安装及使用简介
Spotlight on Mysql在Windows平台下的安装及使用简介
112 0
|
JavaScript
推荐一款工具 -- Watt Toolkit
你是否在为访问Github速度慢而发愁?来来来,推荐你一款工具试试 「Watt Toolkit」是一个开源跨平台的多功能游戏工具箱。 网络加速 使用 YARP.ReverseProxy 开源项目进行本地反代来支持更快的访问游戏网站。 脚本配置 通过加速服务拦截网络请求将一些 JS 脚本注入在网页中,提供类似网页插件的功能。 账号切换 一键切换已在当前 PC 上登录过的 Steam 账号,与管理家庭共享库排序及禁用等功能。
4472 0
推荐一款工具 -- Watt Toolkit
|
监控 关系型数据库 MySQL
MySQL percona-toolkit工具包的安装和使用(超详细版)
转载:https://www.cnblogs.com/zishengY/p/6852280.html 一.检查和安装与Perl相关的模块     PT工具是使用Perl语言编写和执行的,所以需要系统中有Perl环境。
1965 0
|
关系型数据库 MySQL Unix
MySQL中的Percona-toolkit工具由来漫谈
首先问一个问题,你听说过下面这两个工具吗? Maatkit 和Aspersa 如果听过,可能就暴露年龄了,你如果现在去查Aspersa相关的文章,会发现下载链接之类的都不可用了。
1680 0
|
SQL 监控 关系型数据库