3 回答

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

TA貢獻(xiàn)1805條經(jīng)驗(yàn) 獲得超9個(gè)贊
我自己也遇到了同樣的問(wèn)題。
什么情況是,即使你刪除數(shù)據(jù)庫(kù),InnoDB的仍不會(huì)釋放磁盤(pán)空間。我必須導(dǎo)出,停止mysql,手動(dòng)刪除文件,啟動(dòng)mysql,創(chuàng)建數(shù)據(jù)庫(kù)和用戶(hù),然后導(dǎo)入。謝天謝地,我只有200MB的行,但它保留了250GB的innodb文件。
設(shè)計(jì)失敗。

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