我所看到的ibdata文件較小的慾望來了最近在forums.mysql.com
InnoDB數據庫使用的ibdata文件(S)的數據庫中的數據存儲到磁盤。 正確地配置您的系統是關鍵,在這裡你可以學到更多有關該等購股權:http://dev.mysql.com/doc/refman/5.6/en/innodb-configuration.html
InnoDB提供ACID兼容和交易安全的存儲引擎,它是非常有成效的,但如果要刪除和/或經常更換數據,隨著時間的推移,你將需要恢復丟失的空間。 多少時間取決於您的系統上使用。 您不能運行一個簡單的命令,並恢復空間的ibdata文件中。 它將採取一些步驟,它不是從服務器上的,除非做幕後工作。 如果你有一個奴隸,它最好是做這項工作的從屬數據庫上先規劃旋轉,數據庫服務器成為主數據庫。
所以,兩種不同的情況,這些都不是唯一的解決辦法,但一些解決方案:
- 你要保持的ibdata文件相同的大小,但你只想清除浪費的空間
- 備份數據庫
mysqldump --user=<username> --password=<> --add-drop-database --master-data=2 --triggers --routines --events --databases (list database names and do not add mysql to this list) > /Just_AN_example/mysqldump_<DATEHERE>_.sql
- 這給了你一份ASCII副本以防萬一二進制腐敗。
- 如果需要的話,它還具有主數據通過評論。
- 這將讓你的mysql認證以及機智。
- 我想保存的mysql數據庫作為轉儲分開。
- 您還可以創建一個備份MySQL企業備份或Percona的XtraBackup ,如果系統是一個更大的數據庫,並需要聯機備份,這些都是不錯的選擇。 給你們使用的各種原因。
- 校驗和數據庫。
- 收集一些數字,你有什麼這樣你可以比較它,當你加載它。
- Percona的工具包,這是可以做到
# ./pt-table-checksum --password=<Password> > checksum_before_dump.txt
- 查詢時,你可以自己寫。
- 停止/啟動數據庫並利用停機時間,任何只讀變量,你想調整
- 裝入數據庫
- 你要移動innodb_file_per_table的收縮的ibdata文件
- 上面列出的過程中,按照步驟1至2。
- 在上述過程的步驟4中,您會希望您的my.cnf文件中添加以下。
- 刪除的ibdata文件和日誌。
- 從這個角度沒有回來
- 啟動數據庫
- 確認它是啟動和運行
- 加載備份數據庫。
當然,這將是最好的非生產/從服務器上,這樣你就可以確認所有的步驟,讓自己一個可行的情況,然後旋轉奴隸成為新的主。