mysql Amazon RDS:将快照恢复到现有示例

mv1qrgav  于 2023-03-17  发布在  Mysql
关注(0)|答案(8)|浏览(252)

我创建了示例的快照,并在DB中做了一些不需要的更改。
现在,我希望从此快照恢复我的示例。
当我尝试这样做的时候--它会给我再创建一个示例,除了我已经拥有的那个。
我指定了“DB示例标识符”,然后我得到了两个具有相同ID的示例。
所以我的问题是:是否有办法将快照恢复到现有示例?
因为在其他情况下-新的示例是用不同的端点(主机名)创建的,我需要改变我的配置来访问数据库。或者有一个更好的方法来管理这种情况?

mbyulnm0

mbyulnm01#

不,您不能将现有的数据库示例恢复到手动备份或时间点快照中的任何一个。
使用手动备份或自动快照的唯一方法是使用该快照创建新的RDS DB示例。创建新的DB示例后,您可以在应用/代码中更改DB的端点并删除旧的DB示例。
底线:你必须更改应用中的配置设置。没有其他选项。

rggaifut

rggaifut2#

如果有人来这里(就像我一样)只是恢复数据而不改变您的配置。
步骤如下:

  • 从自动快照或手动创建的快照创建新示例(临时)。
  • 从Sequel pro或Mysql工作台连接到此示例。
  • 从这个临时示例中获取您需要的任何数据的SQL转储。
  • 连接您的生产示例并将其恢复。
  • 现在删除您创建的临时示例。
kzipqqlq

kzipqqlq4#

我今天遇到了同样的问题。我认为你有两个选择,而不改变应用程序的配置设置。
1.按照Mike的建议删除旧示例,然后恢复它。
1.先重命名旧示例(重命名时需要选中“立即应用”选项)。

omvjsjqw

omvjsjqw5#

解决方案。请将 ORIG_NAMENEW_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-in-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
8zzbczxx

8zzbczxx6#

正如@MaXimus所说(我还不能添加评论),您可以:
1.先重命名原始示例
1.从快照恢复并分配原始示例名称
Renaming to Replace an Existing DB Instance中所述:https://docs.aws.amazon.com/AmazonRDS/latest/UserGuide/USER_RenameInstance.html

qacovj5a

qacovj5a7#

很晚才回答,但在研究时我发现了一种避免任何应用程序级别更改的方法。正如建议的那样,已经没有将快照导入到现有RDS的选项。一个可能的解决方案:

一次性工作

1.在路由53中创建一个私有域[在您的VPC中解析]。
1.使用域/子域来指向RDS示例。
1.在应用程序中使用指向的域/子域。

每次恢复快照时

1.使用快照创建新的RDS示例。
1.将域/子域指向新RDS示例。
1.方便时删除旧示例。

ilmyapht

ilmyapht8#

使用新名称创建还原的数据库后,可以将当前示例重命名为... -old,这也会重命名数据库URL。URL也更改后,必须将还原的数据库重命名为以前使用的名称,等待数据库的URL更改。然后必须重新启动服务,它们将连接到还原的数据库。
这根本不会导致停机。

相关问题