我希望创建一个回滚作业,以按需恢复Aurora Postresql DB集群(这是将在自动化服务器中运行的灾难恢复工作的一部分)。
现有集群是的一部分
Aurora Global Database
通过Terraform提供给2个AWS区域。
注意:对DB的访问是通过Route53记录进行的,该记录直接指向主区域中集群的写入程序端点。
全局数据库创建:
resource "aws_rds_global_cluster" "example-global" {
count = var.primary ? 1 : 0 // only one region is the primary
global_cluster_identifier = "global-db"
engine = "aurora-postgresql"
# etc...
}
集群(仅在主区域中创建数据库):
resource "aws_rds_cluster" "example-cluster" {
cluster_identifier = "example"
engine = "aurora-postgresql"
global_cluster_identifier = "global-db"
depends_on = [aws_rds_global_cluster.example-global]
# etc...
}
每个区域3个实例:
resource "aws_rds_cluster_instance" "example-instance" {
count = 3
cluster_identifier = aws_rds_cluster.example-cluster.id
engine = aws_rds_cluster.example-cluster.engine
depends_on = [aws_rds_cluster.example-cluster]
# etc...
}
上面的工作很好,并部署了资源。它每天创建一次快照(默认设置)。来自
docs
(以及SO中的其他答案)很明显,没有办法从快照恢复到同一个DB,所以最终我想到的计划是:
-
创建具有辅助区域的新集群(有效地创建
新
全局数据库)
-
使用所述快照在主区域中填充新实例
-
更新Route53记录以指向新集群的端点
-
删除旧的集群(从所有区域)和旧的全局数据库
到目前为止,我所尝试的是使用AWS CLI实际创建DB(从快照)。但我真正不知道的是如何更新TF状态以包括新资源,然后使用TF销毁旧的DB/集群资源(理想情况下是在同一步骤中)。
如果有办法在Terraform中描述上述步骤,那就更好了
as in the example
而不是必须使用自定义脚本来恢复DB,然后手动更新TF状态。
有什么建议或想法吗?