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

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

我在我的 debian squeeze 服务器上使用这个备份脚本来创建所有 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),此备份会创建一个巨大的文件,几 GB。

我怎样才能防止这种情况发生?

我将其与 rsnapshot 结合使用,它会每小时再次备份 BACKUP_DIR,但只是增量备份。如果有这样一个 amok-backupfile,它会在几个小时后填满我的整个硬盘。

我临时给自己加了以下几行:

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

答案1

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

mysql检查是 mysql 发行版附带的本机工具,可以分析和修复您的表。只需查看手册页并查看哪些标志最适合您的数据库。

除了当前的备份问题之外,安排这样的任务也是一个好主意,最重要的是找出表崩溃的原因。

以下是使用示例:检查并修复实例中的所有数据库

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

相关内容