如何将RDS快照还原到云形成中?

15

我想从快照还原 RDS 实例,并将其替换为 cloudformation 中的实例。

假设我有一个 EC2 实例连接到 cloud formation 中的一个 RDS 实例,我想从快照中还原 RDS 实例。

由于 RDS 快照只能还原到新的 RDS 实例中,而该新实例需要旧实例的域名才能被我的 EC2 访问,所以在创建新的还原之前,我必须删除或重命名旧的 RDS 实例,但是这样新的 RDS 实例就不再在我的 cloud formation 堆栈中了,并且没有合适的标签。 相反,标签在我旧的废弃实例中。

这会导致一些负面影响,比如在删除 cloudformation 堆栈和进行适当清点方面出现问题。

有人知道如何将新还原的实例重新放入我的 cloudformation 吗?


你可以使用CloudFormation从快照中进行恢复。如果这是一个可接受的解决方案,请告诉我。如果你问“如何将‘外部’RDS加入到CloudFormation堆栈中”,我的回答无法帮助你。 - tedder42
我正在尝试将一个“外部RDS”引入到CloudFormation堆栈中,因为恢复快照会导致一个外部RDS,尽管它可以与原始CloudFormation中的EC2重新连接而没有问题。 - Henry Grantham
1个回答

8
如果您支持停机时间,您可以执行以下操作:
  1. “DBSnapshotIdentifier”添加到您的 RDS cloudformation 模板中。
  2. 更新您的 CFN 堆栈,它将从快照重新创建您的 RDS DB。
  3. 更新您的 DNS/hosts 条目,因为新的 RDS 实例将拥有一个新的地址。

注意:请勿更改或删除任何 HTML 标签。

2
如果你正在指定DBSnapshotIdentifier,请确保不要指定DBName - tedder42
您不能指定DBInstanceIdentifier。 - Henry Grantham
这个解决方案部分可行,但它没有从CloudFormation中删除旧的RDS,所以那里会有一个额外的,我认为手动删除它会破坏CloudFormation跟踪堆栈的方式。此外,通过将DBInstanceIdentifier更改回旧值,可以避免步骤3。 - Henry Grantham
12
请注意,如果您将来想要更新RDS模板,您始终需要指定DBSnapshotIdentifier的名称。如果您不这样做,AWS将认为这是一种更改,并将创建一个新的RDS堆栈,即使您只想更新堆栈。这非常令人烦恼,我想知道CloudFormation是否是设置RDS堆栈的最佳方式。 - Markus Rudel
DbSnapshotIdentifier 的更新链接:https://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-rds-dbinstance.html#cfn-rds-dbinstance-dbsnapshotidentifier - Christian

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接