昨天做一大数据量的测试后,发现中途报错,最后查明是由于磁盘空间不足所致。
发现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掉。这样省些空间和时间。
本文转自holy2009 51CTO博客,原文链接:http://blog.51cto.com/holy2010/359765