web-dev-qa-db-ja.com

MySqlのトランザクションをrootとして終了するにはどうすればよいですか?

MySql 5.5.37を使用しています。ルートとして、いくつかのテーブルをロックしているトランザクションを強制終了しようとしています。走る

SELECT * FROM INFORMATION_SCHEMA.INNODB_TRX\G   

そして、出力を取得します

…
*************************** 6. row ***************************
                    trx_id: 143E6CDE
                 trx_state: RUNNING
               trx_started: 2014-10-20 06:03:56
     trx_requested_lock_id: NULL
          trx_wait_started: NULL
                trx_weight: 2305887
       trx_mysql_thread_id: 158360
                 trx_query: delete from event where id not in (select q.* from (select e.id FROM event e, (select object_id, max(date_processed) d from event group by object_id) o where e.object_id = o.object_id and e.date_processed = o.d) q)
       trx_operation_state: NULL
         trx_tables_in_use: 3
         trx_tables_locked: 3
          trx_lock_structs: 210634
     trx_lock_memory_bytes: 19790264
           trx_rows_locked: 10668793
         trx_rows_modified: 2095253
   trx_concurrency_tickets: 0
       trx_isolation_level: REPEATABLE READ
         trx_unique_checks: 1
    trx_foreign_key_checks: 1
trx_last_foreign_key_error: NULL
 trx_adaptive_hash_latched: 0
 trx_adaptive_hash_timeout: 10000

しかし、「kill」ステートメントを実行すると、エラーが発生します。

mysql> kill 158360;
ERROR 1095 (HY000): You are not owner of thread 158360

MySqlからこのトランザクションをクリアするにはどうすればよいですか?

22
Dave

自分のスレッドはいつでも強制終了できますが、他のユーザーのスレッドを強制終了するには、SUPER特権が必要です。

RDSを利用していますか?その場合、ユーザー名が「root」であっても、SUPER権限はありません。 「ルート」名について暗黙的に特別なものは何もありません。重要なのは特権です。

次のコマンドを実行して、権限を確認できます。

mysql> SHOW GRANTS;

スレッドを強制終了する方法については、これがRDSの場合、プロシージャ rds_kill() を呼び出して実行できます。

35
Bill Karwin

RDS MySQLを使用している場合は、Bill Answerを完了するために、次の例のようにrds_kill()プロシージャを使用できます。

MySQLに接続

リストプロセス:

SHOW PROCESSLIST;

私の場合、ID 1948452のプロセスを終了したいと思います。

CALL mysql.rds_kill(1948452);

できた

47
Paulo Victor

Azure Database for MySQLを使用している場合は、手順az_killを使用できます。

リストプロセス:

SHOW PROCESSLIST;

強制終了するプロセスのIDが345の場合は、次のコマンドを実行します。

CALL mysql.az_kill(345);

これは、現在ログインしているユーザーがプロセス345を所有していない場合でも機能します。

1
remeika