
我目前遇到一個重大問題。 VPS 磁碟已滿,mysql 資料庫意外成長,無法從主機購買更多空間,因為它已經耗盡。
由於儲存空間不足,mysql服務無法啟動。
有什麼方法可以在關閉服務的情況下對資料庫執行查詢嗎?但我想這需要一些第三方工具,而伺服器上的空間不允許這樣做。如果我沒記錯的話,即使我從資料庫中刪除一些舊數據,它也不會收縮。
我什至無法將整個資料庫文件下載到我的電腦並嘗試在那裡重建它,因為它太大了,我沒有任何可以容納它的驅動器。
我現在有什麼選擇?有誰知道我接下來可以做什麼?
答案1
MySQL 不會以 root 身分運行,因此您可能仍然有「保留」的可用空間。您可以收回這一點:tune2fs -m 0 /dev/whatever
。
您沒有說明您擁有什麼作業系統,但您可能可以在其他地方釋放一些空間。如果你有 Ubuntu,請嘗試apt clean
。從/var/log/*
等中刪除日誌檔。
如果您仍然可以安裝某些內容,請安裝ncdu
並執行操作ncdu -x /
,以便您輕鬆了解要刪除的內容。
另外,我經常使用的一個技巧是在某處放置一個幾百 MB 的虛擬文件,如果遇到這種情況可以將其刪除。那,當然還有監控。
一旦你有空間,你就必須跑到OPTIMIZE TABLE
有問題的桌子上。但是,這將導致重新創建,因此您需要額外的空間。此外,它需要使用 來運行innodb_file_per_table
,這是當今的預設設定。