Undo_000 檔案佔用了大部分磁碟空間,我可以刪除它們嗎?

Undo_000 檔案佔用了大部分磁碟空間,我可以刪除它們嗎?

我的 Webmin 顯示一條錯誤訊息,指出磁碟已滿。經過調查,我發現裡面/var/lib/mysql有3個文件太大了:

  1. mysql.ibd (8.8G)
  2. 撤銷_001 (8.4G)
  3. 撤銷_003(2.5G)

我用谷歌搜尋是否可以刪除這些文件,但建議是針對 mysql.ibd 的,而 undo_001 和 undo_002 沒有明確的訊息。

如何安全地刪除檔案以及將哪些檔案還原到伺服器?截至目前,0 位元組是免費的,我在伺服器上無能為力。

另一個問題是如何防止這些文件變得太大。

3個文件

答案1

如何安全地刪除檔案以及將哪些檔案還原到伺服器?截至目前,0 位元組是免費的,我在伺服器上無能為力。

不直接。您將需要從 mysql 中刪除表以釋放空間。請注意,如果您已設置,這僅適用於 innodbinnodb_file_per_table否則您將需要刪除表,創建整個資料庫的轉儲並重新加載它(是的......這需要空間)。否則資料庫檔案不會收縮。

更簡單的方法是刪除系統上的其他檔案。

關於2個UNDO檔:

刪除UNDO表空間的指令:

ALTER UNDO TABLESPACE tablespace_name SET INACTIVE;
DROP UNDO TABLESPACE tablespace_name;

您可以在 MySQL 提示字元下執行此操作。您將失去回滾的能力。


請不要將您的 mysql 資料庫與您的根系統放在同一系統上。使用分割區或不同的磁碟。如果您只使用 1 個磁碟,通常會將其放在/var/自己的分割區上。這將防止 root 充滿。

要釋放空間,也可以查看末尾/var/log/帶有任何內容的內容都可以刪除。.gz對於以數字結尾的文件也是如此*[0-9]。這些都是日誌檔案的備份,有時它們也會變得很大。


這將自動截斷撤銷日誌:

SET GLOBAL innodb_undo_log_truncate=ON;

相關內容