0

我已经安排我的 Heroku 生产数据库每天进行备份,我也想每天将备份恢复到我的暂存数据库中。通过这种方式,我可以使暂存盒与生产环境保持同步以进行测试/调试,并自动运行恢复过程的每日测试。

我试图安排一个 bash 脚本在暂存盒上运行以执行还原。我的脚本使用 Heroku CLI 提取最新备份的 url 并执行恢复。我遇到的问题是验证 Heroku CLI。由于我无法在测功机上打开浏览器,因此我需要找到一种安全的身份验证方式。

我应该从某个地方拉一个 .netrc 文件吗?给测功机提供 CLI 甚至是个好主意吗?有没有更好的方法来解决这个问题而无需建立另一台服务器来运行恢复?

4

1 回答 1

1

您可以将授权令牌放入HEROKU_API_KEY暂存环境的 env 变量中。使用 生成令牌heroku auth:token

然后将令牌设置为暂存heroku config:set HEROKU_API_KEY=token -a staging

从安全的角度来看,这意味着您的登台环境几乎可以完全访问您的生产环境。

一种更安全的方法是在生产应用程序或新应用程序上运行计划任务,仅用于此目的,将数据库备份复制到暂存应用程序可以访问的 S3 存储桶。暂存应用程序从 s3 存储桶中的备份恢复。暂存不需要访问生产。

无论如何,这是一个好主意——如果您无法访问 Heroku,您仍然可以访问您的备份。

有一个构建包 - https://github.com/kbaum/heroku-database-backups。我鼓励您阅读构建包中的代码 - 这是一个非常简单的过程。我也将分叉构建包,或者只编写您自己的代码,因为它可以完全访问您的生产环境。我永远不会相信第三方 buildpack。

如果您的工作从生产数据库中清除敏感信息以进行暂存,则可以加分。它可以通过以下方式做到这一点:

  • 将生产备份恢复到第二个数据库
  • 从第二个数据库中清除敏感信息
  • 备份第二个数据库
  • 将第二个数据库备份推送到 S3 存储桶。
于 2019-06-13T02:13:36.867 回答