web-dev-qa-db-ja.com

プロセスは意図的に強制終了されました-現在、プロセスは「show processlist」にまだ表示されています

MariaDBには長時間実行されるプロセス(40時間)があったため、スレッドを強制終了しました。しかし、スレッドはまだそこにあります。

  • CommandKilledとして表示します。
  • State/Unlocking tables
  • Infoinsert into ...

これは何を意味するのでしょうか?さらに重要なことに、どうすればそれを取り除くことができますか?スレッドが「強制終了」状態になってから31時間以上になります。

更新:MariaDBを実行しているコンテナーを再起動しました。問題の兆候はありませんでしたが...データベースのエラーを確認する方法についてこのスレッドを再キャストするのは理にかなっていますか(私のMariaDBスキルは初歩的なものです)、または新しいスレッドを開始する必要がありますか?

2
David Rogers

プロセスは強制終了後に変更を元に戻しています(そのため、長時間実行されているトランザクションで書き込みプロセスを強制終了すると危険な場合があります。これにより、ブロックされた長い取り消しプロセスが発生する可能性があります。

経験則では、InnoDBのUNDOは、書き込みにかかる時間の何倍もかかる可能性があります。持続可能でない場合は、書き込みアクティビティがなくなったときにサーバーを停止し、保留中のUNDOをスキップして再起動できます(そのため、サーバーは再起動しません)。これは、開始オプションを使用して行われます。

innodb_force_recovery = 3

データを失う可能性があるため、通常の起動オプションとしては理想的ではありません。クリーンな再起動前(または一般的に)にバックアップを生成することは、他の書き込みや取り消しが進行中でないことを前提として技術的に安全であっても、常に良い考えです。

1
jynus