我正在尝试从在另一个非RDS服务器上创建的完整备份文件将server数据库还原到AWS RDS实例。我在同一个VPC中从一个EC2 Windows实例中运行该操作(我们希望保持外部连接禁用的RDS实例)。EC2上的SSMS可以毫无问题地连接到RDS实例。EC2实例具有一个应用的IAM角色,允许它从S3读取数据,我可以从其中看到带有.bak文件的桶(例如,使用CLI工具)。RDS实例还具有一个允许S3读取的IAM角色。
当我在SSMS中打开RDS实例上的查询窗口并运行命令时
exec msdb.dbo.rds_restore_database
@restore_db_name = 'database_name'
, @s3_arn_to_restore_from = 'arn:aws:s3:::bucket-name/FULL_database_name_20210316050151.bak'
将创建还原任务。但是,在两到四分钟后的任何地方,exec msdb.dbo.rds_task_status @db_name = 'database_name'
都会显示任务已被更新为一个生命周期值错误,其中包含这个task_info值:
[2021-05-15 16:27:41.183] Aborted the task because of a task failure or a concurrent RESTORE_DB request. [2021-05-15 16:27:41.213] Task has been aborted [2021-05-15 16:27:41.213] A WebException with status ConnectFailure was thrown.
一个小时的谷歌WebException状态ConnectFailure被抛出,没有发现任何与我的情况有关的,并且AWS文档不断地指向我已经创建的IAM角色。我漏掉了什么拼图?
完全披露:我不是一个有经验的系统管理员;我在一家没有专门管理的小商店工作,第一次将一个网站搬到AWS。所以,请不要以为我已经尝试过所有容易的事情,因为这完全有可能,我不知道所有容易的事情是什么。
编辑:应用选项组确实包含SQLSERVER_BACKUP_RESTORE选项
发布于 2021-05-18 15:39:50
尽管S3控制台接口明确表示S3不需要区域选择器下的区域选择,但事实证明,桶被附加到区域,用于此过程的桶必须位于与RDS实例相同的区域。为此,我创建了一个新的桶,并从另一个桶中复制了.bak文件;您可以在创建时指定桶的区域,即使在管理控制台中看不到它。
我还不得不比我满意的更多地放松文件的权限,但这仅仅是完成恢复所需的几分钟时间。
https://serverfault.com/questions/1063661
复制相似问题