Shell MySQL 备份 - 您的解决方案是什么?

Shell MySQL 备份 - 您的解决方案是什么?

我正在寻找一个出色的解决方案来备份我的 MySQL 数据库 - 所有数据库。我希望每个数据库至少有自己的文件。我稍后需要 FTP 功能,但现在不需要。现在我只需要将其保存在运行它的同一台服务器上。

你用什么?

更新

我想我应该更清楚地说明我的要求...我正在寻找一个 bash 脚本,该脚本将用于mysqldump为每个数据库创建单独的备份文件,或者如果表足够大则为表创建单独的文件。

答案1

您可以使用这个脚本:

#!/bin/bash
BACKUP_DIR="/opt/backup"
MYSQL_USER=your_user
MYSQL_PASS=your_pass
MYSQL="$(which mysql)"
MYSQLDUMP="$(which mysqldump)"
GZIP="$(which gzip)"

DB_LIST="$($MYSQL -u $MYSQL_USER -p$MYSQL_PASS -Bse 'show databases')"
for db in $DB_LIST;
do
    BACKUP_SUBDIR="$BACKUP_DIR/mysql_`date +%Y-%m-%d`"
    BACKUP_FILE="$BACKUP_SUBDIR/$db.gz"
    if [ ! -d $BACKUP_SUBDIR ]; then
        mkdir -p $BACKUP_SUBDIR
    fi
    if [ -f $BACKUP_FILE ]; then
        unlink $BACKUP_FILE
    fi
    $MYSQLDUMP -u $MYSQL_USER -p$MYSQL_PASS $db | $GZIP -9 > $BACKUP_FILE
done

答案2

我一直在用这个自动MySQL备份我的 mysqldumps 脚本。进行每日、每周、每月的备份和轮换。非常方便。

答案3

我使用一个简单的 Bash 脚本,执行 mysqldump,然后执行 rsync(轻松使用 ftp)到另一台远程机器。

非常简单但有效!

也不需要关闭数据库。

http://dev.mysql.com/doc/refman/5.1/en/mysqldump.html

吕克

答案4

此每日备份将创建您的数据库的备份,并将创建 4 天的备份并轮换它们。然后您可以将该文件夹备份到远程站点。

/bin/bash -x #!/bin/bash -x
#
# Marco Maldonado MySQL 备份
# 版本 1.0 2008 年 9 月 9 日
# 评论[电子邮件保护]

MYSQL=`哪个 mysql`
MYSQLDUMP=`mysqdump`
备份=/opt/备份
dbs=`$MYSQL -u root -pYOURPASSWORD -Bse'显示数据库'`

对于 $dbs 中的数据库
rm -rf $BACKUPS/$db.3
mv $BACKUPS/$db.2 $BACKUPS/$db.3
mv $BACKUPS/$db.1 $BACKUPS/$db.2
mv $BACKUPS/$db.0 $BACKUPS/$db.1
#创建目录 $BACKUPS/$db.0
#$HOTCOPY $用户密码$db $BACKUPS/$db.0
mysqldump -u root -pIndr@sN3t $db > $BACKUPS/$db.0
完毕

确保 /opt 中有一个文件夹,并将其命名为备份

相关内容