3 回答

TA貢獻1821條經驗 獲得超6個贊
MySQL不會減小ibdata1的大小。曾經 即使您optimize table用來從已刪除的記錄中釋放已使用的空間,它也會在以后重用。
一種替代方法是配置服務器以使用innodb_file_per_table,但這將需要備份,刪除數據庫并還原。積極的一面是該表的.ibd文件在optimize table。之后被減少。

TA貢獻1805條經驗 獲得超9個贊
我自己也遇到了同樣的問題。
什么情況是,即使你刪除數據庫,InnoDB的仍不會釋放磁盤空間。我必須導出,停止mysql,手動刪除文件,啟動mysql,創建數據庫和用戶,然后導入。謝天謝地,我只有200MB的行,但它保留了250GB的innodb文件。
設計失敗。

TA貢獻1843條經驗 獲得超7個贊
如果您不使用innodb_file_per_table,則可以回收磁盤空間,但是非常繁瑣,并且需要大量的停機時間。
“操作方法”非常深入-但我在下面粘貼了相關部分。
確保在轉儲中還保留架構的副本。
當前,您不能從系統表空間中刪除數據文件。要減小系統表空間大小,請使用以下過程:
使用mysqldump轉儲所有InnoDB表。
停止服務器。
除去所有現有的表空間文件,包括ibdata和ib_log文件。如果要保留信息的備份副本,則在刪除MySQL安裝中的文件之前,將所有ib *文件復制到另一個位置。
刪除InnoDB表的所有.frm文件。
配置一個新的表空間。
重新啟動服務器。
導入轉儲文件。
添加回答
舉報