製品

Percona

pt-kill

コマンド

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

良い点

指定時間以上の実行時間がかかるクエリを確認したり、該当のクエリを終了させる場合等に有効です