我正在寻找一个出色的解决方案来备份我的 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 中有一个文件夹,并将其命名为备份