我有一个AWS备份计划,每天从一个由terraform创建的RDS实例做一个快照。(此AWS备份计划不是由terraform创建的)。
关键是我必须在不丢失整个部署状态的情况下恢复这个快照的一部分,因为如果我手工恢复,将创建一个新实例,并且我必须更改应用程序中的数据库端点指向新的rds实例。
使用aws_db_instance
只允许恢复由自己的rd创建的备份,我还没有找到任何资源可以使用terraform这个快照进行恢复。
是否有任何方法可以恢复AWS备份快照而不丢失我的状态?解决方案是否可以使用terraform在自己的RDS服务中创建备份?
提前感谢。
可悲的是,你不能这么做。您必须手动恢复,然后手动更新TF代码以反映更改。这与您的RDS由于故障而进行故障转移时的情况相同。TF不会意识到这一点,你必须手动纠正漂移。
为了避免更改任何TF配置,我们在AWS中采用以下方式处理此情况:
- 将快照恢复到新数据库
db-new
,确保配置与原始数据库匹配 - 修改原db为新的标识符,如
db-old
。请注意,这将导致您的端点更改,因此当AWS完成修改时,您的应用将失去连接。 - 修改
db-new
,使其具有原始db标识符. 这将改变端点以匹配原始端点。 - 运行
terraform plan
,查看配置是否有变化。请确保更新新的数据库以匹配当前TF状态下的配置。
您应该看到TF只更新一个安全组,并且它将新数据库视为与旧数据库匹配。