使用terraform将AWS备份还原到RDS

5
我有一个AWS备份计划,每天从由terraform创建的RDS实例拍摄快照。(这个AWS备份计划不是由terraform创建的)。 问题在于,我必须恢复其中一些快照,而不让tfstate失去整个部署的状态,因为如果我手动恢复,会创建一个新的实例,我必须更改应用程序中指向新rds实例的数据库端点。 使用aws_db_instance仅允许还原由自己的rds创建的备份,我没有找到任何资源可以使用terraform恢复此快照。 有没有办法在不丢失tfstate的情况下恢复AWS备份快照?解决方案可否是使用terraform在自己的RDS服务中创建备份? 提前感谢您。

1
大家好,最终我决定使用mysqldump通过外部jenkins作业来执行备份和恢复过程。感谢大家! - hache cheche
2个回答

6

很遗憾,你不能这样做。你需要手动恢复,然后手动更新你的 TF 代码以反映这些更改。当你的 RDS 由于故障而进行故障转移时,情况也是如此。TF 将不会意识到这一点,你必须手动纠正漂移。


谢谢您的回答,有最新的更新吗? - Eyal Solomon
1
@EyalSolomon 我不知道在这方面有任何新的情况。 - Marcin
@EyalSolomon,您可以手动删除集群并使用快照ID还原数据库。这样做可以使您的所有资源与terraform状态同步。 - Pavel.Solovyenko

2
我们在AWS中处理这种情况的方式如下,以避免更改任何TF配置:
  • 将快照恢复到新的数据库db-new,确保配置与原始数据库匹配
  • 修改原始数据库以具有类似db-old的新标识符。请注意,这将导致您的终端节点发生变化,因此当AWS完成修改时,您的应用程序将失去连接。
  • db-new修改为具有原始数据库标识符。这将更改终端节点以匹配原始终端节点。
  • 运行terraform plan并查看是否存在任何配置更改。确保更新新数据库以匹配当前TF状态中的配置。
您应该看到TF仅在原地更新安全组,并将新数据库视为与旧数据库匹配。

这是使用terraform“最简单”的方法来“原地”恢复RDS数据库。以下是输出: ~ 原地更新 Terraform将执行以下操作: ~ 资源“aws_db_instance”“this”{ ~ copy_tags_to_snapshot = true-> false。 .... 输出更改: ~ db_default_instance_resource_id =“db-OEATO462AZQUP557NVUXSSDFDF”->“db-QKPWQYEVZPL3PE7I2MVYVZTTGG” - Jaekov Segovia

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