製品

Percona

pt-find

コマンド

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