回收InnoDB 儲存空間
MySQL InnoDB 引擎管理一個名為ibdata1 的檔案中的資料,該檔案儲存表資料、索引、SQL InnoDB 引擎管理一個名為ibdata1 的檔案中的資料,該檔案儲存資料表、索引、SQL InnoDB 引擎元資料和其他基礎設施組件。隨著時間的推移,刪除表的資料會累積在 ibdata1 中,導致儲存空間膨脹。
清理InnoDB 儲存引擎的方法
要縮小ibdata1 並釋放空間,請執行以下操作這些步驟:
-
轉儲與刪除資料庫:
將所有資料庫匯出到SQL 檔案(SQLData.sql) 並刪除除MySQL 和 information_schema 以外的所有資料庫。 -
刷新交易資料:
執行 SET GLOBAL innodb_fast_shutdown = 0;清除日誌檔案中的所有交易變更。 -
設定 MySQL:
在 my.cnf 檔案中加入適當的設置,包括 innodb_file_per_table、innodb_flush_method=O_DIRECT、innodb_log_file_size=1G 和innodb_method_DIRECT、innodb_log_file_size=1G 和innodb_buffer_pool。 -
刪除 Ibdata 和日誌檔案:
從資料目錄中刪除 ibdata* 和 ib_logfile* 檔案。 -
重新啟動MySQL:
開始MySQL,它建立一個新的ibdata1,其大小更小-
導入SQL資料:
導入SQLData.sql以恢復資料庫。
此方法的好處
- 釋放先前被刪除佔用的儲存空間
- 透過減小ibdata1 的大小來提高性能,增強I/O 性能。
- 透過將表格資料和索引分離到單獨的檔案中,提供對資料儲存的更好控制。
注意:
確保使用者透過複製 mysql 模式目錄並在清理過程後恢復它來保留授權。此外,根據伺服器要求和工作負載特性優化日誌檔案大小。
以上是如何回收MySQL中浪費的InnoDB儲存空間?的詳細內容。更多資訊請關注PHP中文網其他相關文章!