我已经创建了实例的快照,并在数据库中做了一些不需要的更改。
现在,我想从该快照还原我的实例。
当我尝试执行此操作时,除了我拥有的实例外,它还为我创建了另一个实例。
我指定“数据库实例标识符”,然后得到两个具有相同ID的实例。
所以我的问题是:有什么办法可以将快照还原到现有实例?
因为在其他情况下-使用不同的端点(主机名)创建了新实例,并且我需要更改配置以访问数据库。还是有更好的方法来处理此类案件?
Answers:
不,您不能将现有数据库实例还原到任何手动备份或时间点快照。
可以使用手动备份或自动快照的唯一方法是使用该实例创建一个新的RDS数据库实例。创建新的数据库实例后,您可以在应用程序/代码中更改数据库的终结点并删除旧的数据库实例。
底线:您必须在应用程序中更改配置设置。没有其他选择。
CNAME
在DNS中配置a并将其指向您的RDS主机名的好时机,然后将应用程序重新配置为使用cname。然后,将来,您只需要进行一项更改-DNS。
如果有人(像我一样)来这里恢复数据而无需更改您的配置。
步骤如下:
重命名原始实例并使用原始名称命名新实例
https://aws.amazon.com/blogs/aws/endpoint-renaming-for-amazon-rds/
我今天有同样的问题。我认为您有两个选择,而无需更改应用程序的配置设置。
按照Mike的建议删除旧实例,然后将其还原。
首先重命名旧实例(重命名时需要选中“立即应用”选项)。
正如@MaXimus所说(我还不能添加评论),您可以:
如在Renaming to Replace an Existing DB Instance
此处指定的那样:https : //docs.aws.amazon.com/AmazonRDS/latest/UserGuide/USER_RenameInstance.html
如果要通过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
--db-subnet-group-name
--vpc-security-group-ids
--publicly-accessible
因此,aws rds restore-db-instance-to-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 \