【问题标题】:AWS Elastic Beanstalk Backup & RecoveryAWS Elastic Beanstalk 备份和恢复
【发布时间】:2014-07-25 18:37:31
【问题描述】:
我是 AWS EB 的新手,我正在尝试弄清楚如何备份和恢复整个 EB 环境。我基于 EB 生成的 EC2 实例创建了一个 AMI,并拍摄了同样由 EB 创建的 RDS 的快照。
我的问题是,我该如何恢复它,假设这是正确的备份方法。另外,我是手动做的,不应该在 EB 中有一种自动化的方法吗?顺便说一句,当我创建 AMI 时,它破坏了源,而 EB 只是创建了一个新的 EC2 实例,而我没有进行所有更改。
如何保存和恢复对我的应用程序影响文件系统和数据库的配置更改?
【问题讨论】:
标签:
amazon-web-services
amazon-elastic-beanstalk
【解决方案1】:
很遗憾,Amazon AWS Elastic Beanstalk (EB) 不支持还原包含实时数据的数据库,前提是这些数据库是使用 EB 创建的。如果您重新加载(AKA AWS “部署”)EB 保存的配置,您将获得一个空白数据库!
我打电话给他们,他们告诉我单独创建 RDS 数据库,并在您知道它的名称后更新应用程序代码以连接到数据库。如果您恢复 RDS 数据库,它也会有一个新名称!所以你必须再次更新你的代码才能连接到它。
另外,如果你的代码和环境都很好,但是你想恢复你的数据库,那么它就会有一个新的名字,你需要更改你的代码。
如何轻松更改代码并自动部署它是另一个我还没有答案的问题。
因此,基本上 Elastic Beanstalk 中的 RDS 数据库配置的用途非常有限,可能是编码、调试和测试,但不是实时生产用途。 :(
这是截至 2015 年 1 月的数据。
【解决方案2】:
首先进入您的 EB 环境并保存当前配置。您应该转到由 EB 创建的正在运行的 EC2 实例并制作一个 Image。然后通过转到 EB 配置并设置它来使用新的 AMI ID。它将重建环境,拆除所有正在运行的实例并创建新实例。
对于您的 RDS 实例,您应该使用新的实例名称进行备份和恢复,因为文档说如果环境被破坏,您将丢失它。您可能应该像 RDS 一样手动设置环境变量,并在 RDS 和 EC2 之间设置适当的安全组。
我认为可行的一个选项是重命名 RDS 实例名称,因为环境似乎已损坏,然后销毁环境并创建一个带有附加 RDS 实例的新实例,然后销毁该实例并将旧实例重命名为新实例一个可能有用的名字。
在进行任何这些想法之前,一如既往地进行适当的备份。