我有一个在 Heroku 上运行的 rails 应用程序,使用他们的标准 postgres 数据库和托管在 s3 上的图像。
我应该如何负责任地进行备份?
到目前为止,我每月下载我的应用程序代码、s3 文件和数据库快照,并将其存储在外部驱动器上。从 s3 下载我的文件非常慢,我预计随着时间的推移它会变得更糟。
我一直在使用PG备份Heroku附加组件:
https://devcenter.heroku.com/articles/pgbackups
它备份您的 postgres 数据库,并且可以配置为每天存储备份(如果需要,可以更频繁地存储(。我一般建议将其用于数据库的基本备份。
我只是将代码的副本保存在 github(或其他一些 git 存储库(的存储库中。Github很棒,我想不出做其他任何事情的理由。
S3本身非常安全可靠。以下是他们产品信息的摘录:
Amazon S3 提供高度持久的存储基础设施,专为任务关键型和主数据存储而设计。对象以冗余方式存储在 Amazon S3 区域中多个设施的多个设备上。为了帮助确保持久性,Amazon S3 PUT 和 COPY 操作会在返回 SUCCESS 之前跨多个设施同步存储您的数据。
如果您拥有 S3 中所有文件的安全副本很重要,我可能会设置某种定期计划的批处理作业来将它们复制到我可以单独备份的服务器。我过去曾使用 S3 工具执行此操作:
http://s3tools.org/s3cmd
我只需要存档一个站点,在该站点中,无法访问用于推送它的 git 存储库。我使用 heruku cli 做了以下操作。
- 英雄登录
- Heroku git:clone -a your app-name
- Heroku PG:备份:捕获 -您的应用程序名称
- Heroku PG:备份:下载 -您的应用程序名称
完成后,你将拥有一个代码目录和一个标题为"latest.dump"的数据库转储,我建议你重命名该转储以包含应用名称。
所有这些都很容易编写脚本。
对于自动备份,您只需要配置 heroku-db-backup-s3 buildpack。并按照文档中显示的方式重新安排它。