将MySQL/Amazon RDS数据库备份到S3的推荐方法是什么?
-
16-10-2019 - |
题
我有两个目的:
- 在Amazon Web Services有区域性问题的情况下,具有异地备份。
- 将生产数据从生产帐单帐户复制到Beta帐单帐户。
目前,Amazon似乎并未支持这两个用例中的任何一个。
我看过MySqlDump和Xtrabackup(请参阅 形式 帖子)提到。
我还看到了一个更复杂的过程(记录在案 这里)
- 源计费帐户(POR)中的新RDS服务器已启用最近的备份。
- 一个新的EC2实例正在启用,该实例可以在步骤1中访问RDS服务器。
- mySqlDump用于对此数据库进行备份。
- 备份被复制到异地位置(S3?)。
- 在单独的帐户和/或区域中,新鲜的RDS服务器被旋转。
- 导入数据库转储。
提示和建议将不胜感激。
解决方案
建议备份RDS的推荐方法是 自动备份 和 DB快照. 。 DB快照基本上与EBS快照相同,EBS快照存储在幕后的S3中,但仅在同一区域内可用。
如果您需要跨区域的容忍度(好计划!),则无法恢复您的数据 另一个地区 没有从mysqldump中“艰难的方式”。您的替代方法是使用mysqldump备份(对于任何合理大小的数据集而缓慢而可怕),或在另一个区域中设置自己的基于EC2的从属,并使用任何可用方法(Xtrabackup,ebs快照等)向后备份。但是,然后您又回到了管理自己的MySQL实例,因此您也可以完全放弃RDS。
对于我的钱,RDS绝对没有任何好处,并且在性能,灵活性和可靠性方面都有很多缺点。我会问自己RDS为您提供什么价值。
其他提示
我遇到过同样的问题。我的解决方案是写一个 简单的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"
AWS RDS现在支持跨区域和跨学院 快照的复制 这将使您只需使用RDS即可完成目标。
此时,您仍然必须使用转储脚本方法来获得S3的备份。使用S3-IA或冰川的能力在节省成本方面会很好,因为RDS备份成本在S3标准或更高(按DB变化)。
不隶属于 dba.stackexchange