昨天做一大数据量的测试后,发现中途报错,最后查明是由于磁盘空间不足所致。

    发现Mysql的ibdata1单个文件就占80G,传说ibdata1是InnoDB的产物,而且只会增大不会减少。

    这次被碰到不得不解决了,上网搜了一下解决方法。大体思路就是备份数据,然后删除数据库再还原数据库。

    由于这台机上有N个项目的数据库,每敲一个命令都命人心惊胆战。生怕弄错命令后导致全盘数据丢失。可恨的是参数的那篇文件里备份的参数里少了‘存储过程’的备份。让我苦恼万分!如今记下修正后的瘦身大法:

# 备份数据库:

/usr/local/mysql/bin/mysqldump -uDBuser -pPassword --quick --force --routines --add-drop-database --all-databases --add-drop-table > /data/bkup/mysqldump.sql

 

 

# 停止数据库

service mysqld stop

 

 

# 删除这些大文件

rm /usr/local/mysql/var/ibdata1

rm /usr/local/mysql/var/ib_logfile*

:> /usr/local/mysql/var/mysql-bin.index

 

 

# 手动删除除Mysql之外所有数据库文件夹,然后启动数据库

service mysqld start

 

 

# 还原数据

/usr/local/mysql/bin/mysql -uroot -phigkoo < /data/bkup/mysqldump.sql

    主要是使用Mysqldump时的一些参数,建议在使用前看一个说明再操作。另外备份前可以先用MySQLAdministrator看一下当前数据库里哪些表占用空间大,把一些不必要的给truncate table掉。这样省些空间和时间。