清理InnoDB 儲存引擎:指南
在資料庫維護領域,如何從InnoDB 清除過時的資料的問題儲存引擎頻繁出現
InnoDB可以不用清理嗎重建?
不幸的是,與 MyISAM 不同,在不重建整個資料庫的情況下直接從 InnoDB 引擎中刪除已刪除的資料是不可行的。這是因為 InnoDB 使用複雜的基礎設施,在其 ibdata1 檔案中儲存各種類型的信息,包括表格資料、索引和元資料。簡單地優化表只會整合 ibdata1 中的數據,而不會縮小數據。
InnoDB 基礎設施清理
為了有效清理InnoDB 引擎,需要更全面的方法:
-
轉儲資料並刪除資料庫:匯出全部將資料寫入SQL 檔案並刪除所有非必需資料庫(不包括mysql和 information_schema)。
-
刷新事務並關閉MySQL:將innodb_fast_shutdown 配置為0 以完成交易刷新,然後關閉MySQL .
-
修改my.cnf:啟用innodb_file_per_table,將innodb_flush_method 設定為O_DIRECT,將 innodb_log_file_size 設為 innodb_buffer_pool_size 的 25%,並增加 innodb_buffer_pool_size。
-
刪除 ibdata 和 ib_logfile: 刪除這些文件,可選擇包含除 /var/lib/mysql/mysql 之外的所有子目錄。
-
啟動 MySQL: 重新建立 ibdata1 與 ib_logfile0/1。
-
導入數據: 恢復SQL 轉儲以填充新創建的數據庫
註釋:
- 透過啟用innodb_file_per_table,每個InnoDB 表將駐留在ibdata1之外的自己的 .ibd 檔案中,從而簡化了優化和將來會刪除資料。
- 如果發生錯誤,請恢復 mysql 架構檔案因刪除了 mysql 模式而發生。
透過此過程,新的 ibdata1 檔案將僅包含表元數據,顯著減小其大小並確保用於儲存活動資料的乾淨的 InnoDB 環境。
以上是如何在不重建整個資料庫的情況下有效清理InnoDB儲存引擎?的詳細內容。更多資訊請關注PHP中文網其他相關文章!