【问题标题】:restore from s3 bucket to sql server getting error Database backup/restore option is not enabled从 s3 存储桶恢复到 sql server 出现错误 数据库备份/恢复选项未启用
【发布时间】:2022-02-28 21:47:30
【问题描述】:

当我尝试从 s3 存储桶恢复时遇到这种错误

--错误信息

消息 50000,级别 16,状态 0,过程 msdb.dbo.rds_restore_database, 第 49 行 [批处理开始第 0 行]

数据库备份/恢复选项不 已启用或正在启用。请再试一次 之后。用法:执行 msdb.dbo.rds_restore_database @restore_db_name, @S3_arn_to_restore_from,[@KMS_master_key_arn] @restore_db_name:名称 正在恢复的数据库。 @S3_arn_to_restore_from :S3 ARN 用于从中恢复数据库的备份文件。 @KMS_master_key_arn : 用于解密备份文件的 KMS 客户主密钥 ARN。

--执行代码

exec msdb.dbo.rds_restore_database 
@restore_db_name='C2', 
@s3_arn_to_restore_from='arn:aws:s3:::slkk/31_May_2019_C2.bak'; 

请帮助我。我正在使用 aws 免费帐户。如何启用备份恢复?

【问题讨论】:

    标签: amazon-web-services


    【解决方案1】:

    转到 IAM 并创建具有以下权限的新角色:

    • AWSBackupServiceRolePolicyForRestores
    • AWSBackupServiceRolePolicyForBackup

    转到 RDS > 选项组

    • 创建组(名称:SqlServerBackupRestore,描述:xxx,引擎:选择您的数据库引擎,主要引擎版本:选择您的数据库实例的版本。
    • 点击创建

    创建组后,单击创建组的名称进行编辑。

    • 点击添加选项
    • 选择选项:SQLSERVER_BACKUP_RESTORE
    • 选择您在之前的步骤中创建的 IAM 角色
    • 选择立即安排即时更改

    返回 RDS > 数据库并选择您的实例

    • 点击修改
    • 选择您在上一步中创建的选项组

    • 点击下一步
    • 选择立即应用(不会导致服务停机)

    • 通过单击修改数据库实例应用更改
    • 如果您已从 SQL Management Studio 连接到 DB,请关闭并重新连接。

    【讨论】:

    • 这么多细节。直到我注意到最后的“...请关闭并再次连接”指令,我才终于让这个工作正常进行,而且我之前已经为不同 VPC 中的服务器完成过一次该过程。谢谢@Dariusz!
    • 我要补充一点,其他人打开了 SSMS 并连接到相关的数据库,他们也不得不关闭他们的连接。
    • 这帮助我们克服了这个错误,它说恢复已创建,但数据库没有立即弹出,我无法判断它是否正在执行什么...有什么方法可以监控进度,或者判断是否有任何事情发生?
    • 要创建的角色是用于信任实体“RDS - 将角色添加到数据库”,我还必须添加一个策略,以便 S3 访问我的备份文件所在的存储桶。
    • 除了开头提到的两个Permissions之外,还得加上AmazonS3FullAccess。在我这样做之前,我在运行 msdb.dbo.rds_restore_database 时不断收到拒绝访问错误
    【解决方案2】:

    我知道这是旧的,但我遇到了同样的错误并且能够解决它,所以我想我会分享,因为这个没有答案。

    首先,本文详细介绍了您的需求,因此请务必按照以下步骤操作: https://aws.amazon.com/premiumsupport/knowledge-center/native-backup-rds-sql-server/

    我最初设置了选项组和所有内容。我错过的步骤是这两个:

    1. 通过在导航窗格中选择数据库将选项组与数据库实例相关联,然后选择要备份的实例。选择操作,然后选择修改。

    2. 在数据库选项下,选择您创建的选项组,然后选择立即应用并继续。查看信息,然后选择 Modify DB Instance。此选项组修改没有停机时间,因为不需要重新启动实例。

    换句话说,您必须使用在这些步骤中设置的新Option Group 修改实际的数据库实例。然后,一旦您通过 SSMS 登录到您的实例,您就可以通过执行(摘自文章)来执行恢复:

    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';
    

    【讨论】:

      【解决方案3】:

      出于某种原因,在选项组中选择“SQLSERVER_AUDIT”为我解决了这个问题,而不是看似合乎逻辑的“SQLSERVER_BACKUP_RESTORE”

      【讨论】:

        【解决方案4】:

        为了首先创建 IAM 角色,然后将其添加到由于某种原因无法正常工作的选项中,我尝试在该角色中使用管理策略对我也不起作用。

        与其先自己创建IAM角色,不如在RDS的Add Option中选择角色,有一个选项create a new role使用这个选项并选择s3 存储桶名称,这将为我们创建正确的策略和 IAM 角色,它完美地工作也帮助了这个 youtube 视频https://www.youtube.com/watch?v=tbJvyQEjZ8k

        【讨论】:

          猜你喜欢
          • 1970-01-01
          • 2013-03-31
          • 1970-01-01
          • 1970-01-01
          • 2022-11-16
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          相关资源
          最近更新 更多