首页 > 解决方案 > 从 S3 还原 Aurora 数据库集群不起作用

问题描述

我正在尝试将 RDS 快照转换为 S3 然后从 S3 恢复 Aurora 数据库集群。在我提交该过程并转换我们的一些生产快照之前,我正在测试将它们转换并恢复回数据库并遇到问题。这是我所在的位置以及所采取的步骤:

1 - 我拍摄了当前运行的 Aurora DB 的快照 - 引擎版本 5.7.mysql_aurora.2.09.1

2 - 创建快照后,我选择它并选择“导出到 Amazon S3”。我选择导出所有数据。

3 - 大约一天后,它完成了到 S3 的导出。这是一个 4TB 的快照,所以需要一段时间。即使在完成之后,我也等了两天才执行接下来的步骤——只是为了确保一切都完成了。

4 - 在 RDS 仪表板中,我单击了“从 S3 还原 Aurora 数据库集群”。a - 我将它指向在步骤 2 中导出快照的 S3 存储桶。 b - 我选择让它创建一个允许它访问此 S3 位置的 IAM 角色。c - 我选择 Aurora 作为类型,并选择了与数据库最初运行时使用的引擎相同的引擎以及原始使用的相同 VPC 和其他参数。

5 - 我点击了创建,片刻之后我收到错误消息: 很抱歉,您创建数据库实例 database-1 的请求失败。无法下载指定 Amazon S3 存储桶中的文件。确保您已创建 AWS Identity and Access Management (IAM) 角色,让 Amazon RDS 为您访问 Amazon S3。

6 - 我修改了创建的 IAM 角色以赋予它所有非常糊状的管理员 S3 权限,重新运行“从 S3 还原 Aurora 数据库集群”,但仍然得到相同的错误。

这个过程看起来很简单——我可能做错了什么?

这是 IAM 角色的 json,我对其进行了修改以允许它访问所有 S3 -

{
    "Version": "2012-10-17",
    "Statement": [
        {
            "Effect": "Allow",
            "Action": [
                "s3:ListBucket",
                "s3:GetBucketLocation",
                "s3:*"
            ],
            "Resource": [
                "*"
            ]
        },
        {
            "Effect": "Allow",
            "Action": [
                "s3:GetObject"
            ],
            "Resource": [
                "*"
            ]
        }
    ]
}

标签: amazon-web-servicesamazon-rdsamazon-aurora

解决方案


正如 Marcin 评论的那样,如果您的 S3 导出已加密,您必须将 KMS 权限授予进行还原的角色。我在 SID 下的 KMS 密钥策略中添加了角色权限:“允许使用密钥”。令人遗憾的是,AWS 控制台没有显示任何有关丢失加密权限的线索。目前,AWS 控制台强制您在将 MySQL 快照导出到 S3 时指定 KMS 密钥。

就我而言,授予密钥权限后,控制台显示一条消息

“来自指定 Amazon S3 存储桶的文件已加密。无法从加密的 S3 对象恢复”

.

S3 只允许在对象级别禁用加密,所以我浏览了快照的 4 个文件并将服务器端加密设置为禁用。然后恢复过程已经开始。

顺便说一句,我无法完成恢复

“不兼容的恢复”

RDS 实例状态。


推荐阅读