Amazon RDS:备份和恢复到现有数据库实例上的新数据库

Amazon RDS: Backup and restore into new database on existing DB instance

我有一个托管在 Amazon RDS 上的数据库,我需要对其进行备份并从中创建新数据库。新人,不知道怎么做。尝试从 SSMS 执行但没有成功。

查看 creating a DB snapshot and restoring from a DB snapshot 的文档。

我想你使用 SQL 服务器 RDS。 不清楚是否要将数据库还原到同一实例。 在 Amazon RDS 中无法使用不同名称在同一实例上恢复备份

You can't restore a backup file to the same DB instance that was used to create the >backup file. Instead, restore the backup file to a new DB instance.

故障排除部分位于

https://docs.aws.amazon.com/AmazonRDS/latest/UserGuide/SQLServer.Procedural.Importing.html#SQLServer.Procedural.Importing.Native.Using.Poll

此外 SQL Amazon RDS 中的 SSMS 不支持服务器本机备份,因为它需要选择备份位置,但在 RDS 中您无法访问 OS 资源。

选项很少:

1) 从快照创建另一个实例,

2) 如果有很多数据库,而您只想恢复一个,则需要启用SQLSERVER_BACKUP_RESTORE并使用rds_backup_database创建备份并使用rds_restore_database恢复它。

先决条件是拥有 S3 存储桶并且 IAM 帐户可以访问 S3 存储桶 步骤应该是:

  • 更改选项组中的参数 SQLSERVER_BACKUP_RESTORE。小心,它可能需要重新启动服务器。

https://docs.aws.amazon.com/AmazonRDS/latest/UserGuide/Appendix.SQLServer.Options.BackupRestore.html

  • 在 msdb 数据库中调用 rds_backup_database。必填参数是数据库名称和S3 bucket,可选的是是否要加密备份,覆盖S3 bucket中的同名备份,以及备份类型full或differential

https://docs.aws.amazon.com/AmazonRDS/latest/UserGuide/SQLServer.Procedural.Importing.html#SQLServer.Procedural.Importing.Native.Using.Backup

程序的输出是任务id,它可以用来检查备份任务的状态。

exec msdb..rds_task_status @task_id= 5

  • 创建备份后,登录另一个实例并运行 rds_restore_database。参数是要还原的数据库的名称和备份所在的 S3 存储桶。

https://docs.aws.amazon.com/AmazonRDS/latest/UserGuide/SQLServer.Procedural.Importing.html#SQLServer.Procedural.Importing.Native.Using.Restore

如果需要,您可以从 S3 下载备份文件并将其还原到本地 SQL 服务器。

3) 最长的一个,如果你想在同一个实例上拥有两个数据库,编写数据库脚本,以不同的名称创建并将数据导出到新数据库

描述了整个过程here

更新:亚马逊允许在创建备份的同一实例上恢复数据库。

https://aws.amazon.com/about-aws/whats-new/2018/10/amazon-rds-for-sql-server-enhances-backup-and-restore-capabilities/

这是排名前列的 google 结果之一,但这里有一些过时的信息。

您可以在 RDS 中为 sql 服务器启用 sql 本机备份/还原,将单个数据库备份到 S3,然后使用新的数据库名称将该数据库还原到同一个 RDS 实例。

environment setup and performing the backup/restore 的步骤:

  1. 创建一个 S3 存储桶来存储您的本机备份。
  2. 通过为您的 RDS 实例配置新的选项组并添加 "SQLSERVER_BACKUP_RESTORE" 选项来启用 Sql 本机备份。
  3. 正在 SSMS 中执行一系列程序以 运行 备份和恢复任务:

exec msdb.dbo.rds_backup_database 
@source_db_name='database_name', @s3_arn_to_backup_to='arn:aws:s3:::bucket_name/file_name_and_extension', 
@overwrite_S3_backup_file=1;

exec msdb.dbo.rds_restore_database 
@restore_db_name='database_name', 
@s3_arn_to_restore_from='arn:aws:s3:::bucket_name/file_name_and_extension';

exec msdb.dbo.rds_task_status @db_name='database_name'

注意:我找不到任何关于删除此先前限制的公告:

You can't restore a backup file to the same DB instance that was used to create the backup file. Instead, restore the backup file to a new DB instance.

但是,到今天为止,我可以确认将本机备份恢复到同一个实例的效果与您预期的一样。

您也可以使用 AWS 控制台通过几个简单的步骤完成此操作

  • 获取 RDS 数据库快照。您可能已经拥有 RDS 快照。检查 AWS 控制台 --> RDS --> 快照。
  • 如果没有快照,那么RDS实例-->Select需要的实例-->点击"Instance Action"-->拍快照。

然后下一项是您必须从此快照创建新的 RDS 实例。

  • 转到快照--> Select 您要创建实例的快照。 --> 点击 "Snapshot actions" --> 恢复快照。
  • 在还原屏幕中,对于“数据库实例标识符*”,输入新 RDS 实例的名称。

从快照恢复有一定的限制,比如你不能改变数据库的大小、软件版本等。新实例从原始数据库继承这些属性。