Webmin にディスクがいっぱいであるというエラー メッセージが表示されました。調査したところ、内部の 3 つのファイルが/var/lib/mysql
大きくなりすぎていることがわかりました。
- mysql.ibd (8.8G)
- 元に戻す_001 (8.4G)
- 元に戻す_003 (2.5G)
これらのファイルを削除できるかどうか Google で検索しましたが、mysql.ibd に対する提案はありましたが、undo_001 と undo_002 については明確な情報はありませんでした。
ファイルを安全に削除するにはどうすればよいでしょうか。また、どのファイルをサーバーに復元すればよいでしょうか。現時点では、0 バイトが空きであり、サーバー上で何もできません。
もう 1 つの疑問は、これらのファイルが大きくならないようにするにはどうすればよいかということです。
答え1
ファイルを安全に削除するにはどうすればよいでしょうか。また、どのファイルをサーバーに復元すればよいでしょうか。現時点では、0 バイトが空きであり、サーバー上で何もできません。
直接ではありません。スペースを解放するには、mysql 内からテーブルを削除する必要があります。これは、設定した場合のみ innodb で機能することに注意してください。innodb_file_per_table
そうでない場合は、テーブルを削除し、データベース全体のダンプを作成し、それを再ロードする必要があります (そして、はい...それにはスペースが必要です)。そうしないと、データベース ファイルは縮小されません。
より簡単な方法は、システム上の他のファイルを削除することです。
2 つの UNDO ファイルについて:
UNDO 表領域を削除するコマンド:
ALTER UNDO TABLESPACE tablespace_name SET INACTIVE;
DROP UNDO TABLESPACE tablespace_name;
そして、それを MySQL プロンプト内から実行します。ロールバックを行う機能が失われます。
MySQL データベースをルート システムと同じシステムに置かないでください。パーティションまたは別のディスクを使用してください。1 つのディスクのみを使用する場合は、/var/
独自のパーティションに置くのが一般的でした。これにより、ルートがいっぱいになるのを防ぐことができます。
スペースを解放するには、 も参照してください。末尾に/var/log/
が付いているものはすべて削除できます。数字で終わるファイルも同様です。これらはすべてログ ファイルのバックアップであり、サイズが大きくなる傾向があります。.gz
*[0-9]
これにより、UNDO ログが自動的に切り捨てられます。
SET GLOBAL innodb_undo_log_truncate=ON;