当前位置:主页 > 查看内容

Percona Toolkit系列 — pt-find

发布时间:2021-05-20 00:00| 位朋友查看

简介:前言 pt-find这个工具,和Linux find命令类似,通过SHOW TABLE STATUS方式,查找特定的表并执行一些SQL语句,对于日常运维工作也是有比较大的帮助。 pt-find 基本用法 (1)基本语法 pt-find [OPTIONS] [DATABASES] (2)常见选项 --host:-h,IP地址--port……

前言

pt-find这个工具,和Linux find命令类似,通过SHOW TABLE STATUS方式,查找特定的表并执行一些SQL语句,对于日常运维工作也是有比较大的帮助。

pt-find

基本用法

(1)基本语法

pt-find [OPTIONS] [DATABASES]

(2)常见选项

--host:-h,IP地址
--port:-P,端口
--socket:-S,套接字文件
--user:-u,用户名
--password:-p,密码
--charset:-A,字符集
--database:-D,数据库
--ask-pass:提示手动输入密码
--case-insensitive:大小写敏感
--[no]quote:是否打印反引号
--or:过滤条件之间取或,默认取与

(3)过滤条件

--autoinc:表的auto_increment
--avgrowlen:表的平均行长度
--checksum:表的checksum
--cmin:表的创建时间,以分钟为单位
--ctime:表的创建时间,以天为单位
--collation:表的排序规则
--column-name:表的列名
--column-type:表的字段类型
--comment:表的注释
--createopts:表的创建选项
--datafree:表的剩余大小
--datasize:表的总大小
--rows:表的记录数
--empty:表的记录数是否为空
--engine:表的存储引擎
--indexsize:索引的总大小
--kmin:表上次检查的时间,以分钟为单位
--ktime:表上次检查的时间,以天为单位
--mmin:表上次修改的时间,以分钟为单位
--mtime:表上次修改的时间,以天为单位
--rowformat:表的行格式
--tablesize:表的总大小,包括datasize和indexsize
--function:函数的匹配模式
--trigger:触发器的匹配模式
--view:视图的匹配模式



附
mysql> show table status\G
*************************** 1. row ***************************
           Name: sbtest1
         Engine: InnoDB
        Version: 10
     Row_format: Dynamic
           Rows: 947263
 Avg_row_length: 241
    Data_length: 228466688
Max_data_length: 0
   Index_length: 275906560
      Data_free: 26214400
 Auto_increment: 1000001
    Create_time: 2021-04-30 14:03:29
    Update_time: NULL
     Check_time: NULL
      Collation: utf8mb4_general_ci
       Checksum: NULL
 Create_options: max_rows=1000000
        Comment:

(4)操作选项

--exec:执行SQL
--print:打印出库名和表名
--printf:打印出库名和表名

(4)DSN选项

h:IP地址
P:端口
S:套接字文件
u:用户名
p:密码
A:字符集
D:数据库
t:表

具体输出

(1)找出一天前创建的、MyISAM存储引擎表

pt-find --ctime +1 --engine MyISAM --h=10.1.4.9,P=10057,u=test,p=xxx

(2)找出InnoDB存储引擎表、并将其转换为MyISAM存储引擎表

pt-find --engine InnoDB --exec "ALTER TABLE %D.%N ENGINE=MyISAM" --h=10.1.4.9,P=10057,u=test,p=xxx

(3)找出test库中的空表

pt-find --empty test --exec-plus "DROP TABLE %s" --h=10.1.4.9,P=10057,u=test,p=xxx

(4)找出总大小超过5G的表

pt-find --tablesize +5G --h=10.1.4.9,P=10057,u=test,p=xxx

(5)找出并打印所有表的总大小、并进行排序

pt-find --printf "%T\t%D.%N\n" --h=10.1.4.9,P=10057,u=test,p=xxx | sort -rn

总结

通过pt-find这个工具,可以实现表的批量查找和批量操作,还是非常方便的。


本站部分内容转载于网络,版权归原作者所有,转载之目的在于传播更多优秀技术内容,如有侵权请联系QQ/微信:153890879删除,谢谢!

推荐图文


随机推荐