MySQL 8.0 リファレンスマニュアル


B.3.3.4 MySQL が満杯のディスクを処理する方法

このセクションでは、MySQL がディスク満杯エラー (デバイスに領域が残っていないなど)、および割り当て超過エラー (書き込みに失敗しましたユーザーブロックの制限に達しましたなど) に対処する方法について説明します。

このセクションは、MyISAM テーブルへの書き込みに関連しています。 およびレコードへの言及がイベントを意味すると理解する必要があることを除き、バイナリログファイルおよびバイナリログインデックスファイルへの書き込みにも当てはまります。

ディスク満杯状態が発生すると、MySQL は次のことを行います。

  • 現在の行を書き込むための十分な領域があるかどうかを 1 分おきに確認します。 十分な領域がある場合は、何事もなかったかのように稼働し続けます。

  • ディスク満杯状態について警告するエントリをログファイルに 10 分おきに書き込みます。

問題を軽減するには次のアクションを行います。

  • 続行する場合は、すべてのレコードを挿入するための十分なディスク領域を解放する必要があるだけです。

  • または、スレッドを中止するには mysqladmin kill を使用します。 スレッドは次回ディスクがチェックされるとき (1 分以内) に中止されます。

  • ほかのスレッドが、ディスク満杯状態の原因となったテーブルを待機している可能性があります。 複数のロックされたスレッドがある場合は、ディスク満杯状態を待機していた 1 つのスレッドを強制終了すると、ほかのスレッドが続行できるようになります。

前述の動作の例外は、REPAIR TABLE または OPTIMIZE TABLE を使用する場合、または LOAD DATA の後または ALTER TABLE ステートメントの後にインデックスがバッチで作成される場合です。 これらのすべてのステートメントでは大きい一時ファイルが作成されることがあり、それがそのまま残された場合、システムのほかの部分で大きな問題となる可能性があります。 MySQL がこれらのいずれかの操作を実行していて、ディスクが満杯になった場合は、大きい一時ファイルが削除され、テーブルがクラッシュとしてマークされます。 例外は ALTER TABLE の場合で、古いテーブルは変更されないままになります。


関連キーワード:  テーブル, ディスク, 満杯, エラー, 方法, 一般, TABLE, サーバー, 接続, 領域