Percona ToolkitはMySQL等に関する便利なコマンドラインツールの集まりです。
今回は各ツールの機能を簡単に紹介します。
細かい使用方法に関しては随時追記予定。
pt-align
ファイルや標準入力を受け取り、列を揃えます。
usage: pt-align [FILES]
以下は公式ドキュメントの例ですが、
これが、
DATABASE TABLE ROWS
foo bar 100
long_db_name table 1
another long_name 500
こうなる。
DATABASE TABLE ROWS
foo bar 100
long_db_name table 1
another long_name 500
pt-archiver
テーブルの行データをファイルや他のテーブルに保存します。
usage: pt-archiver [OPTIONS] --source DSN --where WHERE
例えば以下のようなコマンドを実行するとホスト名oltp_server上のtestデータベースにあるtblテーブルのデータ1000行をolap_serverに転送するとともにファイルにも保存する。
$ pt-archiver --source h=oltp_server,D=test,t=tbl --dest h=olap_server \
--file '/var/log/archive/%Y-%m-%d-%D.%t' \
--where "1=1" --limit 1000 --commit-each
pt-config-diff
MySQLの設定ファイルと実際の設定値の差異を表示します。
usage: pt-config-diff [OPTIONS] CONFIG CONFIG [CONFIG...]
ファイル同士、サーバー同士でも比較できます。
$ pt-config-diff /etc/my.cnf h=localhost,u=root --ask-pass
1 config difference
Variable /etc/my.cnf vagrant-c
========================= ========================================== =========
sql_mode NO_ENGINE_SUBSTITUTION,STRICT_TRANS_TABLES STRICT...
pt-deadlock-logger
デッドロックが発生した場合にログ出力します。
usage: pt-deadlock-logger [OPTIONS] DSN
以下のように特に終了条件や出力の指定がなければ、強制終了するまで標準出力にログ出力を行います。
$ pt-deadlock-logger h=localhost,u=root --ask-pass
pt-diskstats
iostatより詳しいディスクI/Oの統計を表示します。
usage: pt-diskstats [OPTIONS] [FILES]
一定時間ごとに以下のようにI/Oの状態を出力します。
$ pt-diskstats
#ts device rd_s rd_avkb rd_mb_s rd_mrg rd_cnc rd_rt wr_s wr_avkb wr_mb_s wr_mrg wr_cnc wr_rt busy in_prg io_s qtime stime
1.0 sda 0.0 0.0 0.0 0% 0.0 0.0 2.0 24.0 0.0 83% 0.0 0.8 1% 0 2.0 0.0 0.8
1.0 sda1 0.0 0.0 0.0 0% 0.0 0.0 2.0 24.0 0.0 83% 0.0 0.8 1% 0 2.0 0.0 0.8
pt-duplicate-key-checker
MySQLのテーブル上にインデックスや外部キーの重複があるかチェックします。
usage: pt-duplicate-key-checker [OPTIONS] [DSN]
pt-fifo-split
ファイルやコマンドライン上のストリームをFIFOで分割します。
usage: pt-fifo-split [OPTIONS] [FILE]
pt-find
GNUのfindコマンドのようにMySQLのテーブルを検索し、指定した動作を行わせます。
usage: pt-find [OPTIONS] [DATABASES]
pt-fingerprint
クエリを抽象化します。
usage: pt-fingerprint [OPTIONS] [FILES]
以下のように汎用的なクエリ形式に変換します。
$ pt-fingerprint --query "select a, b, c from users where id = 500"
select a, b, c from users where id = ?
pt-fk-error-logger
外部キーエラーをログ出力します。
usage: pt-fk-error-logger [OPTIONS] [DSN]
pt-heartbeat
MySQLのレプリケーション遅延を表示します。
usage: pt-heartbeat [OPTIONS] [DSN] --update|--monitor|--check|--stop
pt-index-usage
ログからクエリを読み取り、インデックスをどのように使用しているか分析します。
usage: pt-index-usage [OPTIONS] [FILES]
pt-ioprofile
MySQLのプロセスI/Oを監視し、データファイル中のテーブルやI/Oの動作を表示します。
usage: pt-ioprofile [OPTIONS] [FILE]
pt-kill
条件に合うMySQLの実行中のクエリを中止します。
pt-kill [OPTIONS] [DSN]
pt-mext
MySQLのSHOW GLOBAL STATUSを実行した結果の差分を逐次表示します。
usage: pt-mext [OPTIONS] -- COMMAND
pt-mysql-summary
MySQLの情報を要約して表示します。
usage: pt-mysql-summary [OPTIONS]
pt-online-schema-change
テーブルロックを発生させずにテーブルへの変更を行います。
usage: pt-online-schema-change [OPTIONS] DSN
pt-pmp
選択したプログラムのGDBのスタックトレースを収集します。
usage: pt-pmp [OPTIONS] [FILES]
pt-query-digest
MySQLのクエリをログ、プロセスリスト、tcpdumpの結果から分析します。
usage: pt-query-digest [OPTIONS] [FILES] [DSN]
pt-show-grants
MySQLのユーザ権限を正規化し、表示します。
usage: pt-show-grants [OPTIONS] [DSN]
pt-sift
pt-stalkによって作られたファイルを閲覧します。
usage: pt-sift FILE|PREFIX|DIRECTORY
pt-slave-delay
MySQLのスレーブサーバにマスタとのレプリケーションにおいて遅延を発生させます。
usage: pt-slave-delay [OPTIONS] SLAVE_DSN [MASTER_DSN]
pt-slave-find
MySQLのスレーブを検索し、レプリケーションの階層ツリーを表示します。
usage: pt-slave-find [OPTIONS] [DSN]
pt-slave-restart
エラー等でMySQLのレプリケーションが停止したときに複数のスレーブのレプリケーションを再開させます。
usage: pt-slave-restart [OPTIONS] [DSN]
pt-stalk
MySQLの問題が発生した際にフォレンジックデータを収集します。
usage: pt-stalk [OPTIONS]
pt-summary
システムの情報を要約して表示します。
usage: pt-summary
pt-table-checksum
MySQLのレプリケーションが正しく行えているかチェックします。
usage: pt-table-checksum [OPTIONS] [DSN]
pt-table-sync
MySQLのテーブルのデータを効率的に同期します。
usage: pt-table-sync [OPTIONS] DSN [DSN]
pt-table-usage
ログからクエリを読み込み、クエリがどのようにテーブルを使用するか分析します。
usage: pt-table-usage [OPTIONS] [FILES]
pt-upgrade
クエリの結果が異なるサーバ間で同一の結果になるかチェックします。
usage: pt-upgrade [OPTIONS] LOGS|RESULTS DSN [DSN]
pt-variable-advisor
MySQLの変数を分析し、可能性のある問題についてアドバイスします。
usage: pt-variable-advisor [OPTIONS] [DSN]
pt-visual-explain
実行計画をツリー形式に整形して表示します。
usage: pt-visual-explain [OPTIONS] [FILES]