将 RDS 实例恢复到 backup/snapshot

Restoring an RDS Instance to a backup/snapshot

我正在尝试 RESTORE 一个 RDS 实例到它之前的一个 backups/snapshots,但是当我按照 Amazon 提供的说明进行操作时 从备份中创建一个新实例,而不是恢复现有实例。

我只想将数据库恢复到现有状态,因为我有一个指向它的 EC2 实例(通过负载均衡器管理),我不想进入并指向新的 RDS .

如何将 RDS 实例恢复到以前的时间点 而不是 从 backup/snapshot

创建新实例

简短的回答是你不能:

You can't restore from a DB snapshot to an existing DB instance; a new DB instance is created when you restore.

从这里开始:

https://docs.aws.amazon.com/AmazonRDS/latest/UserGuide/USER_RestoreFromSnapshot.html

还原到新的 RDS 实例。然后将原始 rds 服务器重命名为其他名称并立即应用更改。处理更改后(2-3 分钟),将还原实例重命名为与原始 rds 相同的名称并立即应用。

单个账户中的RDS dns名称仅在初始部分有所不同,该部分取自RDS实例名称。

如果您有 Terraform 经验,我发现这是从快照恢复的最可重现的方法。

resource "aws_db_instance" "prod" {
  allocated_storage    = 10
  engine               = "mysql"
  engine_version       = "5.6.17"
  instance_class       = "db.t2.micro"
  name                 = "mydb"
  username             = "foo"
  password             = "bar"
  db_subnet_group_name = "my_database_subnet_group"
  parameter_group_name = "default.mysql5.6"
}

data "aws_db_snapshot" "latest_prod_snapshot" {
  db_instance_identifier = aws_db_instance.prod.id
  most_recent            = true
}

# Use the latest production snapshot to create a dev instance.
resource "aws_db_instance" "dev" {
  instance_class      = "db.t2.micro"
  name                = "mydbdev"
  snapshot_identifier = data.aws_db_snapshot.latest_prod_snapshot.id

  lifecycle {
    ignore_changes = [snapshot_identifier]
  }
}

From the terraform documentation.