コマンド
pt-find [ オプション ] [ データベース名 ]
【必須項目】
- ・ [ オプション ] : -p パスワード
【主なオプション】
- ・ –engine : 検索したいテーブルのエンジンを指定します
- ・ –exec : 指定したテーブルに対して実行したいSQLを指定できます
目的
MySQLのテーブルを指定したアクションに基づいて検索を行い、該当のデータベース名、テーブル名を出力したり、指定条件に基づくテーブルに対して、SQLを実行する事ができます
設定ファイル
上記の必須項目を、設定ファイルにまとめておきます
# touch /etc/percona-toolkit/pt-find.conf
# vi /etc/percona-toolkit/pt-find.conf
・設定ファイルの作成
# touch /etc/percona-toolkit/pt-find.conf
・設定ファイルの編集
# vi /etc/percona-toolkit/pt-find.conf
# config for pt-find
password=パスワード
・MySQL のパスワード
password=パスワード
シナリオ
以下のコマンドを実行し、エンジンがInnoDB であるテーブルを検索します
# pt-find --engine InnoDB
結果
エンジンがInnoDB のテーブルが標準出力されます
[root@localhost Et]# pt-find --engine InnoDB
`employees`.`departments`
`employees`.`dept_emp`
`employees`.`dept_manager`
`employees`.`employees`
`employees`.`salaries`
`employees`.`titles`
`mysql`.`innodb_index_stats`
`mysql`.`innodb_table_stats`
`mysql`.`slave_master_info`
`mysql`.`slave_relay_log_info`
`mysql`.`slave_worker_info`
[root@localhost Et]#
良い点
指定のテーブルサイズを超過しているテーブルを確認したり、エンジンがInnoDBであるテーブル全てに対して、MyISAM エンジンへ変更するALTER文を実行したりする事が可能です
その他の実行例
1日以上前に作成された、MyISAMエンジンのテーブルを検索します
# pt-find --ctime +1 --engine MyISAM
InnoDB のテーブルを検索し、それらを MyISAM に変更します
# pt-find --engin InnoDB --exec "ALTER TABLE %D.%N ENGINE=MyISAM"
“test” と “junk” データベースから、空のテーブルを検索して削除します
# pt-find --empty junk test --exec-plus "DROP TABLE %s"
トータルで5GB以上のテーブルを検索します
# pt-find --tablesize +5G
全てのテーブルを、そのデータサイズ、インデックスサイズとともに検索し、大きなテーブルから順に表示します
# pt-find --printf "%T\t%D.%N\n" | sort -rn