如何将 Postgres 数据库从一个 Elastic Beanstalk 环境复制到另一个环境?我正在使用 Rails 5

How do I copy a Postgres database from one Elastic Beanstalk environment to another? I'm using Rails 5

我有一对 Elastic Beanstalk 环境,名为 "development" 和 "production"。我想将数据从 "production" 环境复制到 "development",以便有合理的数据来测试和使用。

每个环境都是 运行 一个 Rails 5 项目(具有几乎相同的代码库)并且有一个 "associated" RDS 实例。

我尝试查看 AWS 控制台,但我只能找到从同一数据库上的快照还原的选项。 (我很容易遗漏一些东西,控制台很复杂。)

我还尝试在 Web 服务器实例上更新 Postgres 工具(到 9.6),这样我就可以使用 pg_dump 和 pg_restore。但是,操作失败,因为有两个当前连接(在这种情况下我尝试了 rake db:drop,但我假设使用 psql 的更直接的方法会产生同样的问题)。

有没有其他方法可以复制数据库,或者我可以安全地终止连接以执行恢复?如果可以,怎么做?

I can only find an option to restore from a snapshot on the same database

您误解了 RDS 中恢复的工作方式。当您恢复快照时,它总是从快照创建一个全新的 RDS 实例。要执行您要求的操作,您首先要创建要复制的数据库的 RDS 快照,然后还原该快照,这将创建一个新的 RDS 实例。然后,您会将您的 EB 环境指向新的 RDS 实例。最后删除不再使用的旧RDS实例。