我在我的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