前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >Percona Toolkit系列 — pt-find

Percona Toolkit系列 — pt-find

原创
作者头像
brightdeng@DBA
发布2021-05-17 10:14:09
1.3K3
发布2021-05-17 10:14:09
举报

前言

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

pt-find

基本用法

(1)基本语法

代码语言:javascript
复制
pt-find [OPTIONS] [DATABASES]

(2)常见选项

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

(3)过滤条件

代码语言:javascript
复制
--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)操作选项

代码语言:javascript
复制
--exec:执行SQL
--print:打印出库名和表名
--printf:打印出库名和表名

(4)DSN选项

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

具体输出

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

代码语言:javascript
复制
pt-find --ctime +1 --engine MyISAM --h=10.1.4.9,P=10057,u=test,p=xxx

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

代码语言:javascript
复制
pt-find --engine InnoDB --exec "ALTER TABLE %D.%N ENGINE=MyISAM" --h=10.1.4.9,P=10057,u=test,p=xxx

(3)找出test库中的空表

代码语言:javascript
复制
pt-find --empty test --exec-plus "DROP TABLE %s" --h=10.1.4.9,P=10057,u=test,p=xxx

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

代码语言:javascript
复制
pt-find --tablesize +5G --h=10.1.4.9,P=10057,u=test,p=xxx

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

代码语言:javascript
复制
pt-find --printf "%T\t%D.%N\n" --h=10.1.4.9,P=10057,u=test,p=xxx | sort -rn

总结

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

原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。

如有侵权,请联系 cloudcommunity@tencent.com 删除。

原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。

如有侵权,请联系 cloudcommunity@tencent.com 删除。

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • 前言
  • pt-find
    • 基本用法
      • 具体输出
      • 总结
      相关产品与服务
      云数据库 SQL Server
      腾讯云数据库 SQL Server (TencentDB for SQL Server)是业界最常用的商用数据库之一,对基于 Windows 架构的应用程序具有完美的支持。TencentDB for SQL Server 拥有微软正版授权,可持续为用户提供最新的功能,避免未授权使用软件的风险。具有即开即用、稳定可靠、安全运行、弹性扩缩等特点。
      领券
      问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档