gpt4 book ai didi

sql-server - 从 S3 存储桶还原 AWS RDS SQL Server 上的备份文件

转载 作者:行者123 更新时间:2023-12-01 22:17:16 33 4
gpt4 key购买 nike

我能够使用以下命令成功地从 AWS 上的 SQL Server 实例获取数据库备份到 S3 存储桶:

-- Backup databases - MyDB
exec msdb.dbo.rds_backup_database
@source_db_name='MyDB',
@s3_arn_to_backup_to='arn:aws:s3:::mybucket/MyDB.bak',
@overwrite_S3_backup_file=1;

虽然使用以下命令将同一备份还原到同一区域内的不同 SQL Server 实例,但它不起作用:

    -- restore databases - MyDB
EXEC msdb.dbo.rds_restore_database
@restore_db_name='MyDB',
@s3_arn_to_restore_from='arn:aws:s3:::mybucket/MyDB.bak';

使用 exec msdb.dbo.rds_task_status @db_name='MyDB' 检查任务状态时出现以下错误

[2017-05-19 19:22:22.127] Aborted the task because of a task failure or a concurrent RESTORE_DB request.
[2017-05-19 19:22:22.150] Error making the request with Error Code Forbidden and Http Status Code Forbidden. No further error information was returned by the service.

到目前为止,我已经在多个数据库实例上完成了备份和恢复,但从未见过这种错误。 S3 bucket和需要恢复.bak文件的SQL Server实例在同一个区域,分配的option group角色也拥有S3 bucket所需的所有权限。以下是选项组角色策略:

{
"Version": "2012-10-17",
"Statement": [
{
"Effect": "Allow",
"Action": [
"s3:ListBucket",
"s3:GetBucketLocation"
],
"Resource": [
"arn:aws:s3:::mybucket"
]
},
{
"Effect": "Allow",
"Action": [
"s3:GetObjectMetaData",
"s3:GetObject",
"s3:PutObject",
"s3:ListMultipartUploadParts",
"s3:AbortMultipartUpload"
],
"Resource": [
"arn:aws:s3:::mybucket/*"
]
}
]
}

最佳答案

问题出在备份 (.bak) 文件上,当它们未正确传输或缺少某些元数据信息时,就会出现此错误。最初我使用命令将文件从一个 AWS 账户 (ap-northeast-1) 传输到不同区域的另一个 AWS 账户 (us-east-1)

aws s3 sync s3://account1bucket s3://account2bucket --source-region ap-northeast-1

但看起来没有正确完成工作。现在,我已经从源 S3 存储桶手动下载文件并上传到目标 S3 存储桶,它现在开始工作了。

这可能会解决使用 AWS CLI 传输存储桶内容的一些问题:https://github.com/aws/aws-cli/pull/1122

关于sql-server - 从 S3 存储桶还原 AWS RDS SQL Server 上的备份文件,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/44077997/

33 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com