减小innodb数据文件ibdata1

自己的vps上的mysql安装的是5.5版本,并且使用的innodb引擎,使用了一段时间后发觉硬盘占用很吓人,一顿

du -sh *

后看到是mysql的ibdata1文件居然30G+,瞬间差异了,哪来的那么多数据,然后仔细查了下各个库,总共都才6G的数据,怎么可能占了30G,然后网上找了下资料才知道ibdata1在删除表的数据的时候提及也不会减少,所以才会涨的这么大,下面就是解决的步骤,我的系统是Centos 6.4 64bit。

首先先把数据里的文件导出来

mysqldump -uroot -proot mydatabase>mydatabase.sql

然后停止数据库并且修改mysql配置文件

sudo /etc/init.d/mysql stop

然后修改配置文件/etc/my.cnf

sudo vim /etc/my.cnf

[mysqld]
innodb_file_per_table

接着清空数据库data目录

sudo rm -rf /usr/local/mysql/data/*

接着重新构建数据

/usr/local/mysql/scripts/mysql_install_db --user=mysql --defaults-file=/etc/my.cnf --basedir=/usr/local/mysql --datadir=/usr/local/mysql/data;

启动mysql

sudo /etc/init.d/mysql start

现在再去/usr/local/mysql/data中去看ibdata1就小了,数据库内容被分到了每一个table对应的文件中了

《Mysql InnoDB 共享表空间和独立表空间》

文章来源:

Author:花生
link:http://wenjun.org/?p=1159