Innodb數據庫對於已經刪除的數據只是標記爲刪除,並不真正釋放所佔用的磁盤空間,這就導致InnoDB數據庫文件不斷增長。如果想徹底釋放這些已經刪除的數據,需要把數據庫導出,刪除InnoDB數據庫文件,然後再倒入。 下面是基本的步驟:
1 使用mysqldump命令將InnoDB數據庫導出
2 停止MySQL
3 刪除所有InnoDB數據庫文件和日誌
4 啓動MySQL並自動重建InnoDB數據庫文件和日誌文件
5 導入前面備份的數據庫文件
有一點要注意,你配置了MySQL數據庫複製,當你導入數據庫備份文件的時候,所有的Query都可能會被寫入Binlog,可以執行SET SQL_LOG_BIN = 0;暫時停止Binlog的寫入。
還有一種方式是在創建數據庫的時候設置innodb_file_per_table,這樣InnoDB會對每個表創建一個數據文件,然後只需要運行OPTIMIZE TABLE 命令就可以釋放所有已經刪除的磁盤空間。
1 使用mysqldump命令將InnoDB數據庫導出
2 停止MySQL
3 刪除所有InnoDB數據庫文件和日誌
4 啓動MySQL並自動重建InnoDB數據庫文件和日誌文件
5 導入前面備份的數據庫文件
有一點要注意,你配置了MySQL數據庫複製,當你導入數據庫備份文件的時候,所有的Query都可能會被寫入Binlog,可以執行SET SQL_LOG_BIN = 0;暫時停止Binlog的寫入。
還有一種方式是在創建數據庫的時候設置innodb_file_per_table,這樣InnoDB會對每個表創建一個數據文件,然後只需要運行OPTIMIZE TABLE 命令就可以釋放所有已經刪除的磁盤空間。