复制 Amazon RDS Custom for SQL Server 数据库快照
使用 RDS Custom for SQL Server,可以复制自动备份和手动数据库快照。复制快照后,您创建的副本为手动快照。可以创建自动备份或手动快照的多个副本,但每个副本必须具有唯一的标识符。
只能在 RDS Custom for SQL Server 可用的不同 AWS 区域中复制同一 AWS 账户中的快照。目前不支持以下操作:
在同一个 AWS 区域中复制数据库快照。
跨 AWS 账户复制数据库快照。
RDS Custom for SQL Server 支持增量快照复制。有关更多信息,请参阅 增量快照复制。
限制
以下限制适用于复制 RDS Custom for SQL Server 的数据库快照:
-
如果您在目标快照可用之前删除了源快照,则快照复制会失败。在删除源快照之前,请确保目标快照的状态为
AVAILABLE
。 -
不能在数据库快照复制请求中指定选项组名称或复制选项组。
-
如果在复制过程之前或期间删除源数据库快照的任何相关 AWS 资源,则复制快照请求可能会异步失败。
-
如果您删除源数据库实例的服务主密钥(SMK)备份文件(存储在您账户的 RDS Custom 托管式 S3 存储桶中),则数据库快照复制将异步成功。但是,依赖于 SMK 的 SQL Server 功能(例如启用 TDE 的数据库)会遇到问题。有关更多信息,请参阅 对 RDS Custom for SQL Server 中启用 TDE 的数据库的 PENDING_RECOVERY 状态进行故障排除。
-
目前不支持在同一 AWS 区域中复制数据库快照。
目前不支持跨 AWS 账户复制数据库快照。
复制 Amazon RDS 的数据库快照的限制也适用于 RDS Custom for SQL Server。有关更多信息,请参阅 限制。
处理加密
所有 RDS Custom for SQL Server 数据库实例和数据库快照都使用 KMS 密钥进行加密。只能将加密快照复制到加密快照,因此,必须为数据库快照复制请求指定在目标 AWS 区域中有效的 KMS 密钥。
源快照在复制过程中保持加密状态。Amazon RDS 使用信封加密,来在复制操作期间通过指定的目标 AWS 区域 KMS 密钥保护数据。有关更多信息,请参阅《AWS Key Management Service 开发人员指南》中的信封加密。
跨区域复制
您可以跨 AWS 区域复制数据库快照。但是,跨区域快照复制具有某些限制和注意事项。
授权 RDS 跨 AWS 区域通信以进行快照复制
成功处理跨区域数据库快照复制请求后,RDS 将开始复制。此时将创建供 RDS 访问源快照的授权请求。此授权请求将源数据库快照链接到目标数据库快照。这支持 RDS 仅复制到指定的目标快照。
RDS 使用服务相关的 IAM 角色中的 rds:CrossRegionCommunication
权限对授权进行验证。如果复制操作获得授权,则 RDS 可以与源区域通信并完成复制操作。
RDS 无权访问之前未经 CopyDBSnapshot 请求授权的数据库快照。复制完成后,将撤销授权。
RDS 使用服务链接的角色来验证源区域中的授权。如果在复制过程中删除了服务相关角色,则复制将失败。
有关更多信息,请参阅《AWS Identity and Access Management 用户指南》中的使用服务相关角色。
使用 AWS Security Token Service 凭证
来自全局 AWS Security Token Service (AWS STS) 端点的会话令牌仅在默认启用的 AWS 区域(商业区域)中有效。在 assumeRole
中使用来自 AWS STS API 操作的凭证时, 如果源区域是选择加入区域,请使用区域端点。否则,请求将失败。您的凭证必须在这两个区域中都有效,仅当您使用区域 AWS STS 端点时,这一点才适用于选择加入区域。
要使用全局端点,请确保在操作中为两个区域都启用了该端点。在 AWS STS 账户设置中,将全局端点设置为“在所有 AWS 区域 区域均 Valid
”。
有关更多信息,请参阅《AWS Identity and Access Management 用户指南》中的管理 AWS 区域中的 AWS STS。
使用自定义引擎版本(CEV)创建的数据库实例的快照
对于使用自定义引擎版本(CEV)的数据库实例的数据库快照,RDS 会将 CEV 与数据库快照关联。要跨 AWS 区域复制与 CEV 关联的源数据库快照,RDS 会将 CEV 与源数据库快照一起复制到目标区域。
如果要将与同一 CEV 关联的多个数据库快照复制到同一个目标区域,则第一个复制请求会复制关联的 CEV。后续请求的复制过程会找到最初复制的 CEV,并将其与以下数据库快照副本相关联。现有 CEV 副本必须处于 AVAILABLE
状态,才能与数据库快照副本相关联。
要复制与 CEV 关联的数据库快照,请求者的 IAM 策略必须具有相应的权限,来授权复制数据库快照和复制关联的 CEV。请求者的 IAM 策略中需要以下权限,才能支持复制关联的 CEV:
-
rds:CopyCustomDBEngineVersion
- 请求者 IAM 主体需要具有相应的权限,可将源 CEV 与源数据库快照一起复制到目标区域。如果请求者 IAM 主体未获得复制源 CEV 的授权,则快照复制请求将由于授权错误而失败。 -
ec2:CreateTags
- 源 CEV 的底层 EC2 AMI 将复制到目标区域,以作为 CEV 副本的一部分。在复制 AMI 之前,RDS Custom 会尝试使用AWSRDSCustom
标签来标记 AMI。确保请求者 IAM 主体有权针对源区域中源 CEV 底层的 AMI 创建标签。
有关 CEV 复制权限的信息,请参阅为您的 IAM 主体授予所需的权限。
为您的 IAM 主体授予所需的权限
确保您有足够的访问权限来复制 RDS Custom for SQL Server 数据库快照。使用控制台或 CLI 复制数据库快照的 IAM 角色或用户(称为 IAM 主体)必须具有以下任一策略,才能成功创建数据库实例:
-
AdministratorAccess
策略,或者 -
具有以下其他权限的
AmazonRDSFullAccess
策略:s3:CreateBucket s3:GetBucketPolicy s3:PutBucketPolicy kms:CreateGrant kms:DescribeKey ec2:CreateTags
RDS Custom 在跨 AWS 区域复制快照期间使用这些权限。这些权限在您的账户中配置执行 RDS Custom 操作所需的资源。有关 kms:CreateGrant
权限的更多信息,请参阅 AWS KMS key 管理。
除 AmazonRDSFullAccess
策略外,以下 JSON 策略示例还授予所需的权限。
{ "Version": "2012-10-17", "Statement": [ { "Sid": "CreateS3BucketAndReadWriteBucketPolicy", "Effect": "Allow", "Action": [ "s3:CreateBucket", "s3:PutBucketPolicy", "s3:GetBucketPolicy" ], "Resource": "arn:aws:s3:::do-not-delete-rds-custom-*" }, { "Sid": "CreateKmsGrant", "Effect": "Allow", "Action": [ "kms:CreateGrant", "kms:DescribeKey" ], "Resource": "*" }, { "Sid": "CreateEc2Tags", "Effect": "Allow", "Action": [ "ec2:CreateTags" ], "Resource": "*" } ] }
注意
确保列出的权限不受服务控制策略(SCP)、权限边界或与 IAM 主体关联的会话策略的限制。
如果您在请求者的 IAM 策略中使用带有上下文密钥的条件,则某些条件可能会导致请求失败。有关由于 IAM 策略条件而导致的常见陷阱的更多信息,请参阅请求跨区域数据库快照复制。
复制数据库快照
使用以下过程复制数据库快照。对于每个 AWS 账户,一次最多可以从一个 AWS 区域向另一个区域复制 20 个数据库快照。如果您将数据库快照复制到另一个 AWS 区域,则可创建保留在该 AWS 区域中的手动数据库快照。从源 AWS 区域复制出数据库快照会产生 Amazon RDS 数据传输费用。有关数据传输定价的更多信息,请参阅 Amazon RDS 定价
在新 AWS 区域中创建数据库快照副本后,该数据库快照副本的行为与该 AWS 区域中所有其他数据库快照的行为相同。
可以使用 AWS Management Console、AWS CLI 或 Amazon RDS API 来复制数据库快照。