天天看點

MySQL ibdata1占用空間大 釋放MySQL ibdata1檔案的空間

背景:最近公司一台伺服器報警,磁盤空間報警超閥值.  原來mysql資料庫資料目錄特别大,前一篇文章中介紹的是變更mysql資料檔案的目錄,此文主要介紹如何把mysql占用的空間釋放出來。

說明: mysql有多種存儲引擎,比如MyISAM、InnoDB很常用。 如果用的InnoDB, 且使用mysql預設的配置檔案,MySQL的資料都會存放在ibdata1檔案中,經過一段時間此檔案會變的非常大,占用大量磁盤空間。如何把mysql占用的空間釋放出來。

mysql ibdata1存放資料,索引等,是MYSQL的最主要的資料。

步驟:

1,備份資料庫

備份全部資料庫,執行指令mysqldump  -uusername -ppassword  --all-databases > /backup/all.sql 或者隻備份需要的庫。

删除資料庫

drop database A;

drop database B;

停止資料庫: service mysqld stop 

2,修改mysql配置檔案

修改my.cnf檔案,增加下面配置

innodb_file_per_table

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

3,删除原資料檔案

删除原來的ibdata1檔案及日志檔案ib_logfile*,删除data目錄下的應用資料庫檔案夾(mysql,test,information_schema資料庫本身檔案夾不要删除)

4,還原資料庫

啟動資料庫服務service mysqld start

還原全部資料庫,執行指令mysql -uusername -ppassword <all.sql

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

本文轉自pizibaidu 51CTO部落格,原文連結:http://blog.51cto.com/pizibaidu/1697016,如需轉載請自行聯系原作者