如何将 RDS 快照恢复到 cloudformation?

Posted

技术标签:

【中文标题】如何将 RDS 快照恢复到 cloudformation?【英文标题】:How do I restore RDS snapshot into a cloudformation? 【发布时间】:2015-11-22 04:28:04 【问题描述】:

我想从快照中恢复 RDS 实例并让它替换 cloudformation 中的实例。

假设我有一个 EC2 实例连接到云中的一个 RDS 实例,我想从快照中恢复 RDS 实例。

由于 RDS 快照只能恢复到新的 RDS 实例中,而新的 RDS 实例需要旧实例的域名才能让我的 EC2 访问它,所以我必须通过重命名或放弃旧的 RDS 实例在创建新的还原之前删除,但是新的 RDS 不再在我的云形成堆栈中,并且没有正确的标签。相反,标签在我的旧丢弃实例中。

这会导致一些负面影响,例如删除 cloudformation 堆栈的问题和正确清点的问题。

有人知道如何将新恢复的实例再次放入我的 cloudformation 中吗?

【问题讨论】:

您可以使用 cloudformation 从快照恢复。如果这是一个可以接受的解决方案,请告诉我。如果您问“如何将‘外来’RDS 放入 cloudformation 堆栈”,我的回答将无济于事。 我正在尝试将“外部 RDS 放入 cloudformation 堆栈”,因为恢复快照会导致外部 RDS,即使它会毫无问题地连接到原始云中的我的 EC2 . 【参考方案1】:

如果您支持停机,您可以继续:

    将'DBSnapshotIdentifier' 附加到您的RDS cloudformation 模板 更新您的 CFN 堆栈,它将从快照重新创建您的 RDS 数据库。 更新您的 DNS/hosts 条目,因为新的 RDS 实例将有一个新地址。

【讨论】:

如果您指定DBSnapshotIdentifier,请确保不要指定DBName 您也不能指定 DBInstanceIdentifier。 这个解决方案部分有效,除了它不会从 cloudformation 中删除旧的 rds,所以那里有一个额外的,我认为手动删除它会弄乱 cloudformation 跟踪堆。也可以通过将 DBInstanceIdentifier 改回旧的来避免第 3 步。 请注意,如果您想在将来更新 RDS 模板,您将始终必须指定 DBSnapshotIdentifier 的名称。如果您不这样做,AWS 将认为这是一个更改,并将创建一个新的 RDS 堆栈,尽管您只是想更新堆栈。这很烦人,我想知道 CloudFormation 是否是设置 RDS 堆栈的最佳方式

以上是关于如何将 RDS 快照恢复到 cloudformation?的主要内容,如果未能解决你的问题,请参考以下文章

RDS实例如何从加密快照中恢复?

Amazon RDS:将快照还原到现有实例

从 Amazon RDS 下载 MySql 备份/快照

如何比较两个Amazon RDS快照?

AWS:为单独的 EB 实例克隆 RDS

获取 aws rds 快照的本地副本