自己的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对应的文件中了