殺す

KILLステートメントは、現在の TiDB クラスター内の任意の TiDB インスタンスの接続を終了するために使用されます。TiDB v6.2.0 以降では、 KILLステートメントを使用して進行中の DDL ジョブを終了することもできます。

概要

KillStmt
KILLTIDBCONNECTIONQUERYCONNECTION_ID

次の例は、現在のクラスター内のすべてのアクティブなクエリを取得し、そのうちの 1 つを終了する方法を示しています。

SELECT ID, USER, INSTANCE, INFO FROM INFORMATION_SCHEMA.CLUSTER_PROCESSLIST;
+---------------------+------+-----------------+-----------------------------------------------------------------------------+ | ID | USER | INSTANCE | INFO | +---------------------+------+-----------------+-----------------------------------------------------------------------------+ | 8306449708033769879 | root | 127.0.0.1:10082 | select sleep(30), 'foo' | | 5857102839209263511 | root | 127.0.0.1:10080 | select sleep(50) | | 5857102839209263513 | root | 127.0.0.1:10080 | SELECT ID, USER, INSTANCE, INFO FROM INFORMATION_SCHEMA.CLUSTER_PROCESSLIST | +---------------------+------+-----------------+-----------------------------------------------------------------------------+
KILL 5857102839209263511;
Query OK, 0 rows affected (0.00 sec)

MySQL 互換性

  • MySQL のKILLステートメントは現在接続されている MySQL インスタンス内の接続のみを終了できますが、TiDB のKILLステートメントはクラスター全体の任意の TiDB インスタンス内の接続を終了できます。
  • v7.2.0 以前のバージョンでは、MySQL コマンドラインのControl+C を使用して TiDB 内のクエリまたは接続を終了することはサポートされていません。

行動変化の説明

v7.3.0 以降、TiDB は 32 ビット接続 ID の生成をサポートしています。これはデフォルトで有効になっており、 enable-32bits-connection-id構成項目によって制御されます。Global Kill 機能と 32 ビット接続 ID の両方が有効になっている場合、TiDB は 32 ビット接続 ID を生成し、MySQL コマンドラインでControl+C を使用してクエリまたは接続を終了できます。

v6.1.0 以降、TiDB は Global Kill 機能をサポートしています。この機能はデフォルトで有効になっており、 enable-global-kill構成によって制御されます。

Global Kill 機能が有効になっている場合、 KILLKILL TIDB両方のステートメントでインスタンス間のクエリまたは接続を終了できるため、クエリまたは接続が誤って終了することを心配する必要はありません。クライアントを使用して任意の TiDB インスタンスに接続し、 KILLまたはKILL TIDBステートメントを実行すると、ステートメントはターゲット TiDB インスタンスに転送されます。クライアントと TiDB クラスターの間にプロキシがある場合は、 KILLKILL TIDBステートメントもターゲット TiDB インスタンスに転送されて実行されます。

Global Kill 機能が有効になっていない場合、または v6.1.0 より前のバージョンの TiDB を使用している場合は、次の点に注意してください。

  • デフォルトでは、 KILL MySQL と互換性がありません。これは、ロード バランサーの背後に複数の TiDB サーバーを配置するのが一般的であるため、間違った TiDBサーバーによって接続が終了するケースを防ぐのに役立ちます。現在接続されている TiDB インスタンス上の他の接続を終了するには、 KILL TIDBステートメントを実行して、 TIDBサフィックスを明示的に追加する必要があります。
  • クライアントが常に同じ TiDB インスタンスに接続されることが確実でない限り、構成ファイルでcompatible-kill-query = true設定することは強く推奨されません。これは、デフォルトの MySQL クライアントでControl+C を押すと、 KILLが実行される新しい接続が開かれるためです。クライアントと TiDB クラスターの間にプロキシがある場合、新しい接続は別の TiDB インスタンスにルーティングされる可能性があり、誤って別のセッションが強制終了される可能性があります。
  • KILL TIDBステートメントは TiDB の拡張機能です。このステートメントの機能は、MySQL KILL [CONNECTION|QUERY]コマンドおよび MySQL コマンドラインControl+Cに似ています。同じ TiDB インスタンスでKILL TIDB使用するのは安全です。

参照

このページは役に立ちましたか?