1

Engine Yard 中有几个环境。它们中的每一个都运行相同的应用程序,但处于不同的阶段:生产、登台等。总共大约 10 个环境。现在,我们想每晚转储生产数据库,并在其余环境中恢复它以获得最新数据。

问题是,一个环境中的实例无法访问其他环境中的实例。有两种适合我们的连接方式:

  • SSH。
  • 将 RDS 主机指定为 的--host参数mysqldump。RDS 主机的格式environment.random_string.region.rds.amazonaws.com不同于常规的 EC2 主机名。

它们都不是开箱即用的。直接的解决方案是在所有想要访问的服务器上生成 RSA 密钥,并将它们添加authorized_hosts到所有应该允许访问的服务器上。然而,这个解决方案是不可扩展的:一旦我们添加或重新创建了一个环境,我们就需要重复这个过程。

有没有更好的解决方案?

4

3 回答 3

1

有一种方法可以在您的其他实例上设置一个特殊的备份配置文件,这将允许您从同一账户中的另一个环境直接访问生产 S3 存储桶。这涉及到一些风险,因为它在技术上还允许您的非生产环境能够编辑生产存储桶的内容。

根据您的配置的具体情况,可能还有一些其他选项。您最好的选择是向发动机场支持团队开一张票,以便我们进一步讨论您的需求。

于 2015-05-29T14:51:45.163 回答
0

是否可以单独使用 FTP 或 SFTP 服务设置单独的 HUB 服务器?

  • 打开从所有环境到该 HUB 服务器的入站端口 21/22,以便所有客户端都可以下载数据库转储。
  • 打开从 Hub 服务器到 RDS/数据库的入站端口 3306 或其他数据库端口。
  • 在 Hub 服务器上运行 cron 作业以获取 db 转储,将转储推送到其他环境等等。
于 2015-01-09T19:48:05.787 回答
0

将您的生产备份到为此目的创建的 S3 存储桶。使用 IAM 角色来控制您的其他环境如何连接到同一个存储桶。

由于您的生产环境的服务器应该是已知的,您可以使用脚本将该服务器 mysqldump 到共享 S3 存储桶。完成后,您的其他服务器可以使用正确授权的 IAM 角色从该 S3 存储桶收集数据。

于 2015-05-29T22:20:03.887 回答