为什么如果表崩溃,mysql备份会增长?

我在我的debian squeeze服务器上使用这个备份脚本来创build所有mysqltables的备份:

#!/bin/sh BACKUP_DIR=/var/backups/mysql/ DATE=$(date +%Y-%m-%d) for i in /var/lib/mysql/*/; do dbname=`basename "$i"` mysqldump "$dbname" | gzip > $BACKUP_DIR/$dbname.sql.gz done # delete old backups older than 1 day find $BACKUP_DIR -atime +1 -exec rm {} \; 

现在有时如果一个表被“标记为崩溃”(MyISAM),这个备份会创build一个巨大的文件,几个GB。

我怎样才能防止呢?

我将它与rsnapshot结合使用,即每小时重新备份BACKUP_DIR,但只是增量备份。 如果有一个amok备份文件,它会在几个小时后填满我的完整硬盘。

我通过添加下面这几行来临时帮助自己:

 # delete backups > 2GB find $BACKUP_DIR -size +2000M -exec rm {} \; 

也许你应该考虑修改你的脚本,以便在备份之前执行表检查。 (或定期通过cron安排支票)

myslqlcheck是一个本机工具与MySQL发行版,可以分析和修复您的表。 只要看看手册页,看看哪些标志最适合你的分贝。

除了当前的备份问题之外,安排这样一个任务是一个好主意,而且最重要的是确定表崩溃背后的原因。

在使用示例下面:检查并修复您的实例中的所有数据库

 mysqlcheck --user=someuser --password=somepassword --all-databases --auto-repair