ディスク容量がいっぱいになった場合、MySQL はどうなりますか?どのように対応すればよいのでしょうか?
ディスク容量がいっぱいになると、MySQL はテーブル データや binlog、binlog-index、その他のファイルへの書き込みを含め、データを書き込むことができなくなります。
もちろん、InnoDB はダーティ データを最初にメモリに保存できるため、binlog がオンになっていない限り、書き込みリクエストはブロックされます。
ディスク容量がいっぱいであることを MySQL が検出すると、次のようになります:
それでは、ディスク容量がいっぱいであることがわかったら、どうすればよいでしょうか? 提案:
毎分:新しいデータを書き込めるように領域が解放されたかどうかを確認します。残りのスペースがあることが判明した場合は、データの書き込みが続行され、すべてが通常どおり続行されます。
10 分ごと: 空き領域がまだ残っていないことが判明した場合は、ディスク領域がいっぱいであることを報告するレコードがログに書き込まれます (この時点では、数バイトを書き込むだけで十分です)。
再発を防ぐために、監視システムの検出頻度を増やします。
空き容量を増やすために、時間内に未使用のファイルを削除します。
ディスクがいっぱいであるためにスレッドがブロックされている場合は、スレッドを強制終了できます。まず、次回まで待ちます 1 分後に再確認すると、再び正常に動作する可能性があります
ディスクがいっぱいであるために一部のスレッドがブロックされ、他のスレッドもブロックされる可能性があります。ブロックの原因となったスレッドはブロックされ、他のブロックされたスレッドもブロックされます。
例外があります:
REPAIR TABLE または OPTIMIZE TABLE 操作を実行するとき、または LOAD DATA INFILE または ALTER TABLE の実行後にインデックスをバッチで更新するとき、これらの操作は実行中に一時ファイルを作成します。操作中、mysqld はディスク領域がいっぱいであることを検出すると、関係するテーブルをクラッシュとしてマークし、一時ファイルを削除します (ALTER TABLE 操作を除き、MySQL は進行中の操作を放棄し、一時ファイルを削除し、ディスク領域を解放します)。 。
注: これらのコマンドの実行中に mysqld プロセスが誤って強制終了された場合、生成された一時ファイルは自動的に削除されないため、ディスク領域を解放するために手動で削除する必要があります。
上記は、ディスク容量がいっぱいになった場合に MySQL に何が起こるかについての詳細です。詳しくは、PHP 中国語 Web サイト (www.php.cn) をご覧ください。