跳到内容

pt-find

名字

pt-find查找MySQL表并执行操作,就像GNU查找一样。

剧情简介

使用

pt-找到选项数据库

pt-find搜索MySQL表并执行操作,就像GNU find。默认操作是打印数据库和表名。

找到一天以前创建的所有使用MyISAM引擎的表,并打印它们的名称:

pt-find——ctime+1——引擎MyISAM

找到InnoDB表并将其转换为MyISAM:

pt-find——引擎InnoDB——执行修改表% d。% N = MyISAM引擎”

按照name_sid_pid命名约定,查找由不再存在的进程创建的表,并删除它们。

pt-find——连接id' \ D_ \ d + _ (\ d +)的美元——服务器id' \ D_ (\ d +) _ \ d + $ '——exec-plus删除表%s

在测试数据库和垃圾数据库中找到空表,并删除它们:

pt-find——空垃圾测验——exec-plus删除表%s

查找总大小超过5gb的表:

pt-find——tablesize+ 5克

找到所有的表并打印它们的总数据和索引大小,首先对最大的表进行排序(顺便说一下,排序是一个不同的程序)。

pt-find——printf“% T T % d % \ N \ N”|排序rn

如上所述,但这一次,将数据插入到数据库中以供后人使用:

pt-find——noquote——执行插入sysdata。tblsize(db, tbl, size) VALUES('%D', '%N', %T)"

风险

雷竞技下载官网Percona Toolkit是成熟的,在现实世界中得到了验证,并且经过了良好的测试,但所有数据库工具都可能对系统和数据库服务器构成风险。使用此工具前,请:

  • 阅读工具的文档

  • 检查工具已知的“bug”

  • 在非生产服务器上测试该工具

  • 备份您的生产服务器并验证备份

描述

pt-find查找通过指定测试的MySQL表,并执行指定的操作。默认操作是将数据库和表名打印到STDOUT。

pt-find比GNU find更简单。它不允许您在命令行上指定复杂的表达式。

pt-find在可能的时候使用SHOW TABLES,在需要的时候使用SHOW TABLE STATUS。

选择类型

有三种类型的选项:普通选项,决定一些行为或设置;测试,确定一个表是否应该包含在已找到的表列表中;动作,对表进行操作pt-find发现。

pt-find使用标准的Getopt::Long选项解析,所以您应该在长选项名前使用双破折号,不像GNU find。

选项

该工具接受额外的命令行参数。详细信息请参考“概要”和使用信息。

——ask-pass

连接MySQL时提示输入密码。

——不区分大小写

指定所有正则表达式搜索都不区分大小写。

——字符集

简写形式:-A;类型:字符串

默认字符集。如果值为utf8,将Perl在STDOUT上的binmode设置为utf8,将mysql_enable_utf8选项传递给DBD::mysql,并在连接mysql后运行SET NAMES utf8。任何其他值在没有utf8层的STDOUT上设置binmode,并在连接到MySQL后运行SET NAMES。

——配置

类型:数组

读取以逗号分隔的配置文件列表;如果指定,则必须是命令行上的第一个选项。

——数据库

简写形式:-D;类型:字符串

连接到这个数据库。

——天

测量时间(用于——mmin,等等)从今天开始,而不是从当前时间。

——defaults-file

简写形式:-F;类型:字符串

只从给定文件中读取mysql选项。你必须给出一个绝对路径名。

——帮助

求救并离开。

——主机

简写形式:-h;类型:字符串

连接到主机。

——或者

将测试与或结合起来,而不是与。

默认情况下,测试的计算就像它们之间有一个AND一样。该选项将其切换为OR。

选项解析不是由pt-find本身,因此不能用括号或OR和and的混合来指定复杂的表达式。

——密码

简写形式:-p;类型:字符串

连接时使用的密码。如果password包含逗号,则必须用反斜杠转义:" exam,ple "

——pid

类型:字符串

创建给定的PID文件。如果PID文件已经存在,并且其中包含的PID与当前PID不同,该工具将不会启动。但是,如果PID文件存在,并且其中包含的PID不再运行,该工具将用当前的PID覆盖PID文件。当工具退出时,PID文件将自动删除。

——港口

简写形式:-P;类型:int

用于连接的端口号。

——(没有)引用

默认值:是的

引用MySQL标识符名称与MySQL的标准反引号字符。

引用发生在运行测试之后和运行操作之前。

——set-vars

类型:数组

的列表中设置MySQL变量变量=值对。

默认情况下,工具集:

wait_timeout10000

在命令行上指定的变量将覆盖这些默认值。例如,指定——set-varswait_timeout = 500的默认值10000

如果无法设置变量,该工具将打印警告并继续。

——套接字

简写形式:-S;类型:字符串

用于连接的套接字文件。

——用户

简写形式:-u;类型:字符串

如果不是当前用户,则为登录用户。

——版本

显示版本并退出。

——(没有)版本检查

默认值:是的

检查最新版本的Percona Toolkit、MySQL和其他程雷竞技下载官网序。

这是一个标准的“自动检查更新”功能,还有两个附加功能。首先,该工具检查自己的版本,以及以下软件的版本:操作系统、Percona监控和管理(PMM)、MySQL、Perl、MySQL Perl驱动程序(DBD:: MySQL)和Percona Toolkit。雷竞技下载官网raybet雷竞技竞猜在线官网其次,它检查并警告存在已知问题的版本。例如,MySQL 5.5.25有一个严重的错误,并重新发布为5.5.25a。

通过与Percona的Version Chec雷竞技下载官网k数据库服务器的安全连接来执行这些检查。服务器记录每个请求,包括软件版本号和所检查系统的唯一ID。该ID由Percona Toolkit安装脚本或第一次雷竞技下载官网调用Version Check数据库时生成。

在工具正常输出之前,任何更新或已知问题都打印到STDOUT。该特性不应干扰工具的正常操作。

更多信息,请访问https://www.雷竞技下载官网percona.com/doc/percona-toolkit/LATEST/version-check.html

测试

大多数测试针对SHOW TABLE STATUS输出的列检查某些条件。数值参数可以指定为大于n的+n,小于n的-n,正好n的n。所有数值选项都可以选择一个可选的后缀乘法器k、M或G(分别为1_024、1_048_576和1_073_741_824)。所有模式都是Perl正则表达式(参见' man perlre '),除非指定为SQL LIKE模式。

日期和时间都是相对于同一时刻来测量的pt-find首先询问数据库服务器现在的时间。所有日期和时间操作都是在SQL中完成的,因此如果您说要查找5天前修改过的表,则转换为SELECT DATE_SUB(CURRENT_TIMESTAMP, INTERVAL 5 DAY)。如果你指定——天,如果它相对于CURRENT_DATE而不是。

但是,表大小和其他指标在某一时刻并不一致。MySQL处理所有SHOW查询可能需要一些时间pt-find对此我无能为力。这些测量是在他们被测量的时候。

如果您需要一些不在此列表中的测试,请提交错误报告,我会加强pt-find给你。这真的很简单。

——autoinc

类型:字符串;测试组:

表的下一个AUTO_INCREMENT是n。这测试了AUTO_INCREMENT列。

——avgrowlen

类型:大小;测试组:

表avg行len是n字节。这将测试Avg_row_length列。指定的大小可以为“NULL”,用于测试Avg_row_length为NULL的位置。

——校验和

类型:字符串;测试组:

表校验和为n。此测试校验和列。

——cmin

类型:大小;测试组:

表是n分钟前创建的。这将测试Create_time列。

——排序

类型:字符串;测试组:

表排序规则匹配模式。这将测试排序规则列。

——列名

类型:字符串;测试组:

表中的列名与模式匹配。

——列类型

类型:字符串;测试组:

表中的列与此类型匹配(不区分大小写)。

类型的例子有:varchar, char, int, smallint, bigint, decimal, year, timestamp, text, enum。

——评论

类型:字符串;测试组:

表注释匹配模式。这将测试Comment列。

——连接id

类型:字符串;测试组:

表名不存在MySQL连接ID。这将测试模式的表名。这个测试的参数必须是一个Perl正则表达式,它捕获如下数字:(d+)。如果表名与模式匹配,则将这些捕获的数字作为某个进程的MySQL连接ID。如果根据SHOW FULL PROCESSLIST显示连接不存在,则测试返回true。如果连接ID大于pt-find的连接ID,为了安全起见,测试返回false。

你为什么要这么做?如果您使用MySQL基于语句的复制,您可能知道临时表可能导致的麻烦。您可以选择通过创建具有唯一名称的真实表来解决这个问题,而不是创建临时表。一种方法是将连接ID附加到表的末尾,即:scratch_table_12345。这确保表名是唯一的,并让您有办法找到它与哪个连接相关联。也许最重要的是,如果连接不再存在,您可以假设连接已经死亡,而没有清理它的表,这个表就是需要删除的候选表。

这就是我管理草稿表的方法,这就是为什么我将这个测试包含在pt-find

我用这个论点——连接id是“D_ (d +)美元”。它可以查找结尾有一系列数字、前面有下划线和一些非数字字符的表(后一个标准阻止我检查结尾有日期的表,而人们倾向于这样做:例如baron_scratch_2007_05_07)。当然,最好将草稿表分开。

如果您这样做,请确保用户pt-find以具有PROCESS特权的方式运行!否则,它将只看到来自同一用户的连接,并可能认为某些表已经准备好删除,而这些表仍在使用中。为安全起见,pt-find帮你检查一下。

另请参阅——服务器id

——createopts

类型:字符串;测试组:

表创建选项匹配模式。这将测试Create_options列。

——ctime

类型:大小;测试组:

表是n天前创建的。这将测试Create_time列。

——datafree

类型:大小;测试组:

表有n个字节的空闲空间。这将测试Data_free列。指定的大小可以是“NULL”,用于测试Data_free为NULL的位置。

——datasize

类型:大小;测试组:

表数据使用n字节的空间。这将测试Data_length列。指定的大小可以为“NULL”,以测试Data_length为NULL的位置。

注意:从MySQL 8.0开始,空表返回0而不是NULL。

——dblike

类型:字符串;测试组:

数据库名称与SQL LIKE模式匹配。

——dbregex

类型:字符串;测试组:

数据库名称与此模式匹配。

——空

测试组:

表中没有行。这将测试Rows列。

——引擎

类型:字符串;测试组:

表存储引擎与此模式匹配。这将测试Engine列,或者在MySQL的早期版本中测试Type列。

——函数

类型:字符串;测试组:

函数定义匹配模式。

——indexsize

类型:大小;测试组:

表索引使用n字节的空间。这将测试Index_length列。指定的大小可以是“NULL”,以测试Index_length为NULL的位置。

——kmin

类型:大小;测试组:

桌子n分钟前检查过了。这将测试Check_time列。

——ktime

类型:大小;测试组:

桌子是n天前检查过的。这将测试Check_time列。

——mmin

类型:大小;测试组:

表上次修改是在n分钟前。这将测试Update_time列。

——mtime

类型:大小;测试组:

该表最后一次修改是在n天前。这将测试Update_time列。

——程序

类型:字符串;测试组:

过程定义匹配模式。

——rowformat

类型:字符串;测试组:

表行格式与模式匹配。这将测试Row_format列。

——行

类型:大小;测试组:

表有n行。这将测试Rows列。指定的大小可以是“NULL”来测试Rows为NULL的位置。

——服务器id

类型:字符串;测试组:

表名包含服务器ID。如果使用中解释的命名约定创建临时表——连接id,但还要添加创建表的服务器的服务器ID,然后可以使用这种模式匹配来确保仅在创建表的服务器上删除表。这可以防止表在使用时意外地删除到从服务器上(前提是您的服务器id都是唯一的,它们应该是唯一的,以便复制工作)。

例如,在主服务器(服务器ID 22)上创建一个名为scratch_table_22_12345的表。如果您在从服务器(服务器ID 23)上看到这个表,您可能认为如果没有这样的连接12345,那么可以安全地删除它。但是如果您还强制该名称与服务器ID匹配——服务器id' \ D_ (\ d +) _ \ d + $ ',桌子不会掉在奴隶身上。

——tablesize

类型:大小;测试组:

表使用n字节的空间。这将测试Data_length和Index_length列的和。

——tbllike

类型:字符串;测试组:

表名匹配SQL LIKE模式。

——tblregex

类型:字符串;测试组:

表名与此模式匹配。

——tblversion

类型:大小;测试组:

表版本为n。此测试版本列。

——触发

类型:字符串;测试组:

触发动作语句匹配模式。

——触发系统

类型:字符串;测试组:

——触发在表匹配模式上定义。

——视图

类型:字符串;测试组:

CREATE VIEW匹配此模式。

行动

——exec-plus动作发生在其他事情之后,但动作发生的顺序不确定。如果您需要确定性,请提交错误报告,我将添加此功能。

——执行

类型:字符串;组:行动

对找到的每个项执行SQL语句。SQL可以包含转义和格式化指令(参见——printf).

——exec-dsn

类型:字符串;组:行动

指定在执行SQL时使用的键值格式的DSN——执行而且——exec-plus.任何未指定的值都从命令行参数继承。

——exec-plus

类型:字符串;组:行动

同时对所有项执行此SQL。这个选项不像——执行.没有转义或格式化指令;对于数据库和表名列表,只有一个特殊的占位符%s。找到的表列表将用逗号连接在一起,并在您放置%s的地方进行替换。

例如,你可以使用它来删除你找到的所有表:

下降表格% s

这有点像GNU find的“-exec command{} +”语法。只是它并不完全神秘。而且它不需要我编写命令行解析器。

——打印

组:行动

打印数据库和表名,后跟换行符。如果没有指定其他操作,这是默认操作。

——printf

类型:字符串;组:行动

在标准输出上打印格式,解释“转义”和“%”指令。转义是反斜杠字符,如n和t。Perl解释这些字符,因此您可以使用Perl知道的任何转义。指令被%s取代,在撰写本文时,您不能添加任何特殊的格式化指令,比如字段宽度或对齐方式(尽管我正在考虑如何做到这一点)。

下面是指令列表。注意,它们中的大多数仅仅来自SHOW TABLE STATUS的列。如果列为NULL或不存在,则在输出中得到一个空字符串。%字符后面的任何字符不在以下列表中,将被丢弃(但打印另一个字符)。

字符数据笔记——------------------------------------------------------------ 一个Auto_increment一Avg_row_length c校验和CCreate_time D数据库数据库名字哪一个表格生活dData_length E引擎版本MySQL,F型Data_free fInnodb_free解析评论场我Index_length KCheck_time L排序米Max_data_length N的名字啊评论页Create_options RRow_format年代行TTable_lengthData_length + Index_length UUpdate_time V版本

DSN选项

这些DSN选项用于创建DSN。每个选项给出如下选项=值.选项是区分大小写的,所以P和P不是同一个选项。的前面或后面不能有空格如果值包含空格,则必须加引号。DSN选项以逗号分隔。详细信息请参阅p雷竞技下载官网ercona-toolkit manpage。

  • 一个

dsn:字符集;复制:是的

默认字符集。

  • D

dsn:数据库;复制:是的

默认数据库。

  • F

dsn: mysql_read_default_file;复制:是的

只从给定文件中读取默认选项

  • h

dsn:主机;复制:是的

连接到主机。

  • p

dsn:密码;复制:是的

连接时使用的密码。如果password包含逗号,则必须用反斜杠转义:" exam,ple "

  • P

dsn:港口;复制:是的

用于连接的端口号。

  • 年代

dsn: mysql_socket;复制:是的

用于连接的套接字文件。

  • u

dsn:用户;复制:是的

如果不是当前用户,则为登录用户。

环境

环境变量PTDEBUG打开详细调试输出到STDERR。要启用调试并将所有输出捕获到一个文件,运行如下工具:

PTDEBUG1pt-find...>文件2>1

注意:调试输出是大量的,可能会产生几兆字节的输出。

注意

使用可能会暴露密码。启用调试时,所有命令行参数都显示在输出中。

系统需求

您需要Perl、DBI、DBD::mysql和一些核心包,这些包应该安装在任何合理的Perl新版本中。

错误

有关已知错误的列表,请参见https://jira.雷竞技下载官网percona.com/projects/PT/issues

请在https://jira.雷竞技下载官网percona.com/projects/PT.在错误报告中包含以下信息:

  • 用于运行工具的完整命令行

  • 工具——版本

  • 所有涉及的服务器的MySQL版本

  • 工具的输出,包括STDERR

  • 输入文件(日志/转储/配置文件等)

如果可能,通过运行工具包含调试输出PTDEBUG;看到“环境”。

下载

访问http://www.雷竞技下载官网percona.com/software/percona-toolkit/下载最新版本的Percona Toolkit。雷竞技下载官网或者,从命令行获取最新版本:

wget雷竞技下载官网percona.com/get/percona-toolkit.tar.gz wget雷竞技下载官网percona.com/get/percona-toolkit.rpm wget雷竞技下载官网percona.com/get/percona-toolkit.deb

您还可以从最新版本中获得单独的工具:

wget雷竞技下载官网percona.com/get/TOOL

取代工具使用任何工具的名称。

作者

施瓦兹男爵

关于perc雷竞技下载官网ona工具箱

该工具是Percona Toolkit的一雷竞技下载官网部分,是Percona开发的MySQL高级命令行工具的集合。雷竞技下载官网Percona Toolkit在2011年6月从两个项目中分叉出来:Maatkit和Aspersa。这些项目是由Baron Schwartz创建的,主要由他和Daniel Nichter开发。访问http://www.雷竞技下载官网percona.com/software/以了解Percona的其他免费开源软件。雷竞技下载官网

版本

pt-find3.5.2

Baidu
map