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