当说必须替换数据库实例时,应用Terraform计划安全吗?

问题描述 投票:0回答:2

我正在导入现有资源(AWS RDS),但terraform plan命令显示了摘要:

#aws_db_instance.my_main_db must be replaced 
+/- resource "aws_db_instance" "my_main_db" {
~ address = x
allocated_storage = x
+ apply_immediately = x
~ arn = x
~ username = x
+ password = x
(others arguments with alot of +/- and ~)
}

my_main_db联机包含持久性数据。我的问题是标题。现有数据库运行terrafrom apply是否安全?我不想丢失所有客户数据。

amazon-web-services terraform amazon-rds
2个回答
2
投票

最有可能不安全,但实际上只有熟悉该应用程序的人才能做出该决定。查看属性以及将要更改或重新创建的内容。除非您对所有这些属性的更改感到满意,否则这是不安全的。


0
投票
Terraform术语中的

“替换”意为销毁现有对象并创建一个新对象来替换它。 +/-符号(与-/+相对)指示该特定资源将在“销毁前创建”模式下被替换,该模式在操作期间将短暂存在两个数据库实例。 (这在实践中可能会或可能不会,取决于实例名称是否在此操作中更改。)

特别是对于aws_db_instance,销毁实例等同于在RDS控制台中删除实例:除非您拥有数据库内容的备份,否则它将丢失。即使您拥有备份,也需要通过RDS控制台或API而不是Terraform对其进行还原,因为Terraform不了解备份/还原机制,因此其“创建”的思想是产生一个全新的空数据库。总而言之,直接应用这样的计划肯定是

not

通常是“安全的”,因为Terraform计划破坏您的数据库及其所有内容。如果您

需要

对数据库进行更改,而这些更改如果不创建全新的RDS实例便无法执行,通常需要使用特定于RDS的工具在Terraform之外进行这些更改。在新旧实例之间传输数据的过程,无论是备份然后还原(这将需要暂时中断),还是临时运行两个实例并设置从旧到新的复制,直到准备好关闭旧实例为止。此类迁移的详细信息不在Terraform的范围内,因为它们特定于您使用的任何数据库引擎。

© www.soinside.com 2019 - 2024. All rights reserved.