Amazon RDS:将快照还原到现有实例

时间:2014-06-18 06:11:32

标签: mysql amazon-web-services amazon-rds

我已经创建了我的实例的快照,并在数据库中做了一些不必要的更改。

现在我想从这个快照中恢复我的实例。

当我尝试这样做时 - 除了我拥有的那个之外,它还创建了一个实例。

我指定"数据库实例标识符"然后我得到两个具有相同ID的实例。

所以我的问题:有没有办法将快照恢复到现有实例?

因为在其他情况下 - 使用不同的端点(主机名)创建新实例,我需要更改我的配置以访问数据库。或者有更好的方法来管理这种情况?

7 个答案:

答案 0 :(得分:44)

否则您无法将现有数据库实例还原为任何手动备份或时间点快照。

您可以使用手动备份或自动快照的唯一方法是使用它创建新的RDS数据库实例。创建新的数据库实例后,您可以在应用程序/代码中更改数据库的端点并删除旧的数据库实例。

底线:您必须更改应用中的配置设置。别无选择。

答案 1 :(得分:44)

如果有人来这里(就像我一样)只是在不改变配置的情况下恢复数据。

以下是步骤:

  • 从自动快照或手动创建的实例创建新实例(temp)。
  • 从Sequel pro或Mysql workbench连接到此实例。
  • 从此临时实例中获取所需数据的SQL转储。
  • 连接您的生产实例并将其还原。
  • 现在删除您创建的临时实例。

答案 2 :(得分:16)

重命名原始实例并使用原始名称命名新实例

https://aws.amazon.com/blogs/aws/endpoint-renaming-for-amazon-rds/

答案 3 :(得分:7)

我今天遇到了同样的问题。我认为您有两个选项而无需更改应用程序的配置设置。

  1. 删除Mike建议的旧实例,然后将其恢复。

  2. 首先重命名旧实例(重命名时需要选中“立即应用”选项)。

答案 4 :(得分:0)

如@MaXimus所说(我还不能添加评论),您可以:

  1. 首先重命名原始实例
  2. 从快照还原并分配原始实例名称

Renaming to Replace an Existing DB Instance在此处指定:https://docs.aws.amazon.com/AmazonRDS/latest/UserGuide/USER_RenameInstance.html

答案 5 :(得分:0)

使用新名称创建还原的数据库后,可以将当前实例重命名为...- old,这也将重命名数据库URL。更改了URL后,还必须将已还原的数据库重命名为以前使用的名称,请等待直到数据库的URL更改为止。然后,您必须重新启动服务,它们将连接到已还原的数据库。

这完全不会造成中断。

答案 6 :(得分:0)

如果要通过AWS CLI运行的解决方案。将 ORIG_NAME NEW_NAME 替换为您的值

$ aws rds modify-db-instance \
    --db-instance-identifier ORIG_NAME \
    --new-db-instance-identifier NEW_NAME \
    --apply-immediately

$ aws rds restore-db-instance-to-point-in-time \
    --source-db-instance-identifier NEW_NAME 
    --target-db-instance ORIG_NAME \
    --restore-time 2020-08-27T00:00:00.000Z \
    --publicly-accessible \
    --availability-zone us-east-2a \
    --db-subnet-group-name SUBNET_NAME \
    --vpc-security-group-ids SG_ID

  • 如果您没有自定义VPC,则可以跳过--db-subnet-group-name
  • 如果您的RDS没有自定义安全组,则可以跳过--vpc-security-group-ids
  • 如果您不需要公共访问您的实例,请跳过--publicly-accessible

因此, aws rds restore-db-instance-to-point-time-时间点的简短版本为:

$ aws rds restore-db-instance-to-point-in-time \
    --source-db-instance-identifier NEW_NAME 
    --target-db-instance ORIG_NAME \
    --restore-time 2020-08-27T00:00:00.000Z \