如何进行异地AWS RDS PostgreSQL备份?

作为一种缓解灾难的措施,例如恶意实体可以完全访问我们的AWS账户并删除所有内容 ,我正在为我们的生产数据库设置异地备份。 我们在AWS RDS上使用PostgreSQL。 我们每天在RDS上启用备份。

我想出了以下两个选项:

1)(每日)下载由RDS生成的数据库快照(尽pipe我不确定这是否可以编写脚本,甚至可能)

2)(每日)启动一个只读副本并在该副本上使用pg_dump来备份数据库

什么是实现这个目标的最好方法?

如果这有什么帮助,我们已经有一个工具,每天备份我们的S3桶。

您拥有的一个选项是将您的RDS快照复制到另一个AWS账户。 这是一个常用的做法。

这可以通过以下方式完成:

  1. 与您的第二个AWS账户共享您的RDS快照。
  2. 将RDS快照从源帐户复制(“拉”)到目标帐户。
  3. 删除源快照上的共享。

https://aws.amazon.com/blogs/aws/amazon-rds-update-cross-account-snapshot-sharing/

我也想要一个AWS RDS的异地备份,以及代码,日志等等。我是这样做的:

  • 定期进行数据库导出(每晚午夜,对我来说)到一个给定的目录
  • 将Attic备份备份到该目录。 这是一个差异,压缩,重复的备份。 它保持每周,每月和每年的快照 – 这是可configuration的情况下,你必须回滚。 我也备份我的webroot并以相同的方式login。
  • 然后我使用脚本将Attic备份同步到Dropbox。 你也可以使用BitTorrent Sync,FTP或其他你喜欢的东西。

我的意思是logging这一切,但这是非常简单的工作。

2017更新

我停止使用阁楼,因为它没有积极的发展或支持。 我使用Borg Backup进行重复数据删除备份,这是阁楼的一个分支。

博格备份存储在我的文件系统上。 我使用S3sync将这些文件同步到AWS S3。 如果我现在设置它,我会考虑使用S3FS将备份直接写入到S3中,尽pipeS3FS不是一个完整的文件系统,所以对于这种情况可能不太适用。