通过备份/还原减小MySQL的ibdata1文件

2014-09-13 21:08:04|?次阅读|上传:wustguangh【已有?条评论】发表评论

关键词:数据库, MySQL|来源:唯设编程网

MySQL的数据目录主要包含两部分,一个是datadir字段所指示目录,默认是“C:/ProgramData/MySQL/MySQL Server 5.5/Data/”,该目录存储了MySQL数据库表的结构,另一个目录是innodb_data_home_dir字段所指定的目录,该目录中的ibdata1文件存储了数据库中表的内容。在MySQL数据库中,如果不指定innodb_file_per_table参数,MySQL都会将单独存在每个表的数据存放在ibdata1文件中,其中存放了数据,索引等,是MYSQL的最主要的数据。由于频繁的操作,会导致该文件非常庞大,通过备份还原数据库可以清除掉其中的一些冗余信息,实现ibdata1文件减小的目的。

详细步骤:

1. 备份数据库

从命令行进入MySQL Server 5.5/bin
备份全部数据库,执行命令mysqldump -q -uusername -pyourpassword --add-drop-table --all-databases > /backup/all.sql

除数据库

drop database db1;
drop database db2;

此处不删除应用数据库,在全库恢复数据库时,就会报异常错误,一些表的*.ibd会报不存在。

解决方式:

movo db1 /backup/db1_bak

movo db2 /backup/db2_bak

做完此步后,然后停止数据库。


2. 修改mysql配置文件

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

innodb_file_per_table

对每张表使用单独的innoDB文件, 修改/etc/my.cnf文件

3. 删除原数据文件

删除原来的ibdata1文件及日志文件ib_logfile*,删除data目录下的应用数据库文件夹(mysql,test,information_schema数据库本身文件夹不要删除)

4. 还原数据库

启动数据库服务

从命令行进入MySQL Server 5.5/bin
还原全部数据库,执行命令mysql -uusername -pyourpassword < /all.sql

经过以上几步后,可以看到新的ibdata1文件就只有几十M了,数据及索引都变成了针对单个表的小ibd文件了,它们在相应数据库的文件夹下面。

发表评论0条 】
网友评论(共?条评论)..
通过备份/还原减小MySQL的ibdata1文件