爲mysql ibdata1瘦身

mysql ibdata1文件存放數據,索引等。如果不把數據庫中數據分開存放的話,這個文件的大小很容易就上了G,甚至幾十G。對於某些應用、磁盤較小的server來說,並不是太合適。因此要把此文件縮小。

方法:每張表的數據文件單獨存放。

步驟:

1. 備份數據庫

從命令行進入MySQL Server 5.5/bin

備份全部數據庫,執行命令mysqldump -q -uusername -pyourpassword --add-drop-table --all-databases > /all.sql

做完此步後,停止數據庫服務

2. 修改mysql配置文件

修改my.ini文件,增加下面配置

iinnodb_file_per_table = 1

對每張表使用單獨的innoDB文件, 修改/etc/my.cnf文件

3. 刪除原數據文件

刪除原來的ibdata1文件及日誌文件ib_logfile*,刪除data目錄下的應用數據庫文件夾(mysql文件夾不要刪)

4. 還原數據庫

啓動數據庫服務

從命令行進入MySQL Server 5.5/bin

還原全部數據庫,執行命令mysql -uusername -pyourpassword < /all.sql

經過以上幾步後,可以看到新的ibdata1文件就只有幾十M了,數據及索引都變成了針對單個表的小ibd文件了,它們在相應數據庫的文件夾下面。

 
注:目前還沒有找到不導出數據再導入,直接縮小ibdata文件體積的辦法。對於ibdata文件有壞道、表空間有損壞的數據庫來說,只能跳過損壞的id,dump出數據成sql文件,再導入了。

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章