コマンド
pt-kill [ オプション ] [ DSN ]
【主なオプション】
- ・ [ オプション ] : -p パスワード
【主なオプション】
- ・ –kill : 条件を満たしたクエリを削除します
- ・ –print : 条件を満たしたクエリを表示します
- ・ –busy-time 整数 : 整数の秒数以上かかると、トリガが引かれKILLが実行されます
目的
指定した条件を満たすクエリを自動的に取り消すことができます
KILLしたクエリは記録として残すことができます
設定ファイル
上記の必須項目を、設定ファイルにまとめておきます
# touch /etc/percona-toolkit/pt-kill.conf
# vi /etc/percona-toolkit/pt-kill.conf
・設定ファイルの作成
# touch /etc/percona-toolkit/pt-kill.conf
・設定ファイルの編集
# vi /etc/percona-toolkit/pt-kill.conf
password=パスワード
シナリオ
コンソールを開き、以下のコマンドを実行します(実行に2秒以上かかったクエリをKILLし、出力する)
# pt-kill --busy-time 1 --kill --print
MySQLにおいて、50万のレコードがあるテーブルに対し、以下の2つのクエリを実行します
mysql> SELECT * FROM salaries LIMIT 5;
mysql> SELECT * FROM salaries;
上のクエリはすぐに実行されますが、下のクエリは1秒以上かかるためKILLされることが期待されます
結果
mysql> SELECT * FROM salaries LIMIT 5;
の実行結果
mysql> SELECT * FROM salaries LIMIT 5;
+--------+--------+------------+------------+
| emp_no | salary | from_date | to_date |
+--------+--------+------------+------------+
| 10001 | 60117 | 1986-06-26 | 1987-06-26 |
| 10001 | 62102 | 1987-06-26 | 1988-06-25 |
| 10001 | 66074 | 1988-06-25 | 1989-06-25 |
| 10001 | 66596 | 1989-06-25 | 1990-06-25 |
| 10001 | 66961 | 1990-06-25 | 1991-06-25 |
+--------+--------+------------+------------+
5 rows in set (0.00 sec)
mysql> SELECT * FROM salaries;
の実行結果
mysql> SELECT * FROM salaries;
ERROR 2013 (HY000): Lost connection to MySQL server during query
mysql>
前者は問題なく実行されましたが、後者は1秒以上かかったことでKILL されたことが分かります
pt-kill を実行したコンソールには、以下のような表示がでます
[root@localhost Et]# pt-kill --busy-time 1 --kill --print
# 2017-04-04T14:05:10 KILL 21 (Query 1 sec) SELECT * FROM salaries
良い点
指定時間以上の実行時間がかかるクエリを確認したり、該当のクエリを終了させる場合等に有効です