为此,我有两个目的:


在Amazon Web Services出现区域性问题时进行异地备份。
将生产数据从生产账单账户复制到一个Beta帐单帐户。

目前看来,Amazon似乎没有开箱即用地支持这两种用例之一。

我看过提到的mysqldump和xtrabackup(请参见表单帖子)。

我还看到了一个更复杂的过程(在此处记录)


最近,在源计费帐户(prod)中产生了一个新的RDS服务器backup。
在步骤1中启动了一个新的EC2实例,该实例可以访问RDS服务器。
mysqldump用于对该数据库进行备份。
备份被复制到异地(S3?)。
在单独的帐户和/或区域中,新的RDS服务器被启动。
数据库转储被导入。

提示和建议。

#1 楼

推荐的备份RDS的方法是使用自动备份和数据库快照。数据库快照与EBS快照基本相同,后者存储在后台的S3中,但仅在同一区域内可用。

如果您需要跨区域的容错能力(好的计划!),那么没有从mysqldump进行的“艰难的方式”,就无法在另一个区域恢复数据。您的替代方法是使用mysqldump备份(对于任何合理大小的数据集,它都非常缓慢和可怕),或者在另一个区域中建立自己的基于EC2的从属,并使用任何可用的方法(xtrabackup,EBS快照等)进行备份。但是,您又回到了管理自己的MySQL实例的位置,因此您也可能会完全放弃RDS。

以我的钱,RDS绝对不提供任何好处,并且带来很多缺点。性能,灵活性和可靠性。我想问问自己,RDS给您带来什么价值。

评论


对于我当前的需求,mysqldump可以正常工作。我不希望有庞大的数据集,而且我通常不需要太快地移动数据。我希望RDS支持一项功能,可以从另一个帐户的快照中启动新服务器。另一个有用的功能是使用S3或其导入/导出服务器从Amazon导入/导出快照。无论如何,谢谢您的回答。

– Peter Stephens
2012年2月1日在22:47

现在可以将RDS快照复制到其他区域。有关详细信息,请参见此公告和本文档。

–雪莱
17年2月21日在18:32

#2 楼

我遇到过同样的问题。我的解决方案是编写一个简单的bash脚本。但是,它仅限于一个区域。

这里是有问题的脚本:

 #!/bin/bash
NOWDATE=`date +%Y-%m-%d`
BACKUPNAME="$NOWDATE.sql.gz"

echo "Creating backup of database finances to $BACKUPNAME"
mysqldump –user=user –password=password database_name | gzip -9 > $BACKUPNAME

echo "Succesfully created database backup"

echo "Uploading backup to Amazon S3 bucket…"
s3cmd put $BACKUPNAME s3://path/to/file/$BACKUPNAME

echo "Successfully uploaded backup to S3"

echo "Deleting backup file…"
rm $BACKUPNAME

echo "Done"
 


评论


我强烈建议在运行mysqldump时使用--single-transaction

–user1250
2013年6月11日15:04

我意识到这是一个非常古老的帖子,但是无论是否成功上传到S3,此脚本都会删除本地备份。在继续执行脚本之前,应在脚本顶部包含set -e或从s3cmd检查退出代码。

– JDS
20年7月22日在13:28

#3 楼

AWS RDS现在支持跨区域和跨帐户的快照复制,这将使您仅使用RDS即可完成目标。

您仍然必须使用转储脚本方法来将备份备份到S3。点。就节省成本而言,使用S3-IA或Glacier的能力将是不错的选择,因为RDS备份成本达到S3标准或更高(因数据库而异)。

评论


每个帐户每个区域有100个手动快照的软限制。

–裘德
17-10-25在0:18