

# 复制 Amazon RDS 的数据库快照
<a name="USER_CopySnapshot"></a>

使用 Amazon RDS，您可以复制自动备份或手动数据库快照。在复制快照后，该副本为手动快照。可以创建自动备份或手动快照的多个副本，但每个副本必须具有唯一的标识符。

您可以复制位于同一 AWS 区域中的快照，可以跨 AWS 区域复制快照，也可以复制共享快照。您只需一个步骤即可将快照复制到另一个 AWS 区域或账户。

## 复制数据库快照
<a name="USER_CopyDBSnapshot"></a>

对于每个 AWS 账户，一次最多可以从一个 AWS 区域向另一个区域复制 20 个数据库快照。如果您将数据库快照复制到另一个 AWS 区域，则可创建保留在该 AWS 区域中的手动数据库快照。从源 AWS 区域复制出数据库快照会产生 Amazon RDS 数据传输费用。

有关数据传输定价的更多信息，请参阅 [Amazon RDS 定价](https://aws.amazon.com/rds/pricing/)。

在新 AWS 区域中创建数据库快照副本后，该数据库快照副本的行为与该 AWS 区域中所有其他数据库快照的行为相同。

您可以使用 AWS 管理控制台​、AWS CLI 或 RDS API 复制数据库快照。

### 控制台
<a name="USER_CopySnapshot.CON"></a>

以下过程使用 AWS 管理控制台，在同一 AWS 区域中或跨区域复制加密或未加密数据库快照。

**复制数据库快照**

1. 登录 AWS 管理控制台 并通过以下网址打开 Amazon RDS 控制台：[https://console.aws.amazon.com/rds/](https://console.aws.amazon.com/rds/)。

1. 在导航窗格中，选择**快照**。

1. 选择要复制的数据库快照。

1. 对于 **Actions (操作)**，请选择 **Copy snapshot (复制快照)**。

   会显示 **Copy snapshot (复制快照)** 页面。  
![\[复制数据库快照\]](http://docs.aws.amazon.com/zh_cn/AmazonRDS/latest/UserGuide/images/DBSnapshotCopy1.png)

1. 对于 **Target option group (optional)** [目标选项组（可选）]，如果需要，则选择新的选项组。

   如果将快照从一个 AWS 区域复制到另一个区域，并且数据库实例使用非默认选项组，则指定该选项。

   如果源数据库实例为 Oracle 或 Microsoft SQL Server 使用透明数据加密，则在跨区域复制时必须指定该选项。有关更多信息，请参阅 [选项组的注意事项](#USER_CopySnapshot.Options)。

1. （可选）要将数据库快照复制到其他 AWS 区域，请对 **Destination Region**（目标区域）选择新 AWS 区域。
**注意**  
目标 AWS 区域必须具有与源 AWS 区域相同的可用数据库引擎版本。

1. 对于 **New DB snapshot identifier**（新数据库快照标识符），键入数据库快照副本的名称。

   可以创建自动备份或手动快照的多个副本，但每个副本必须具有唯一的标识符。

1. (可选) 选择 **Copy Tags (复制标签)** 将标签和值从快照复制到快照的副本。

1. （可选）对于**加密**，请执行以下操作：

   1. 如果数据库快照未加密，但需要加密副本，请选择 **Enable Encryption (启用加密)**。
**注意**  
如果数据库快照已加密，则必须对副本进行加密，因此已选中复选框。

   1. 对于 **AWS KMS key**，指定用于加密数据库快照副本的 KMS 密钥标识符。

1. 选择 **Copy snapshot (复制快照)**。

### AWS CLI
<a name="USER_CopySnapshot.CLI"></a>

您可以使用 AWS CLI 命令 [copy-db-snapshot](https://docs.aws.amazon.com/cli/latest/reference/rds/copy-db-snapshot.html) 复制数据库快照。如果您将快照复制到新 AWS 区域，请在新 AWS 区域中运行命令。

以下选项用于复制数据库快照。并非所有情况下都需要所有选项。使用以下说明和示例来确定要使用的选项。
+ `--source-db-snapshot-identifier` – 源数据库快照的标识符。
  + 如果源快照与副本位于同一 AWS 区域中，则指定有效的数据库快照标识符。例如 `rds:mysql-instance1-snapshot-20130805`。
  + 如果源快照与副本位于同一 AWS 区域中，并且已与您的 AWS 账户共享，则指定有效的数据库快照 ARN。例如 `arn:aws:rds:us-west-2:123456789012:snapshot:mysql-instance1-snapshot-20130805`。
  + 如果源快照与副本位于不同 AWS 区域，则指定有效的数据库快照 ARN。例如：`arn:aws:rds:us-west-2:123456789012:snapshot:mysql-instance1-snapshot-20130805`。
  + 如果从共享的手动数据库快照进行复制，则该参数必须为共享的数据库快照的 Amazon Resource Name (ARN)。
  + 如果您复制加密快照，则此参数对于源 AWS 区域必须为 ARN 格式，并且必须匹配 `PreSignedUrl` 参数中的 `SourceDBSnapshotIdentifier`。
+ `--target-db-snapshot-identifier` – 加密数据库快照的新副本的标识符。
+ `--copy-option-group` – 从已与您的 AWS 账户 共享的快照中复制选项组。
+ `--copy-tags` – 包括复制标签选项以将标签和值从快照复制到快照的副本。
+ `--option-group-name` – 与快照的副本关联的选项组。

  如果将快照从一个 AWS 区域复制到另一个区域，并且数据库实例使用非默认选项组，则指定该选项。

  如果源数据库实例为 Oracle 或 Microsoft SQL Server 使用透明数据加密，则在跨区域复制时必须指定该选项。有关更多信息，请参阅 [选项组的注意事项](#USER_CopySnapshot.Options)。
+ `--kms-key-id` – 加密的数据库快照的 KMS 密钥标识符。KMS 密钥标识符是 Amazon Resource Name (ARN)、密钥标识符或 KMS 密钥的密钥别名。
  + 如果您从 AWS 账户复制加密的数据库快照，则可以为该参数指定值来使用新的 KMS 密钥加密副本。如果您不为该参数指定值，则使用与源数据库快照相同的 KMS 密钥来加密数据库快照的副本。
  + 如果您从其他 AWS 账户复制共享的加密数据库快照，则必须为该参数指定值。
  + 如果您在复制未加密快照时指定该参数，则将加密副本。
  + 如果将加密快照复制到不同 AWS 区域，必须为目标 AWS 区域指定 KMS 密钥。KMS 密钥是特定于创建它们的 AWS 区域，您无法将一个 AWS 区域的加密密钥用于另一个 AWS 区域。

**Example 从未加密快照，到同一区域**  
以下代码使用新名称 `mydbsnapshotcopy`，在与源快照相同的 AWS 区域中创建快照的副本。创建副本时，原始快照上的数据库选项组和标签都复制到快照副本。  
对于 Linux、macOS 或 Unix：  

```
aws rds copy-db-snapshot \
    --source-db-snapshot-identifier arn:aws:rds:us-west-2:123456789012:snapshot:mysql-instance1-snapshot-20130805 \
    --target-db-snapshot-identifier mydbsnapshotcopy \
    --copy-option-group \
    --copy-tags
```
对于：Windows  

```
aws rds copy-db-snapshot ^
    --source-db-snapshot-identifier arn:aws:rds:us-west-2:123456789012:snapshot:mysql-instance1-snapshot-20130805 ^
    --target-db-snapshot-identifier mydbsnapshotcopy ^
    --copy-option-group ^
    --copy-tags
```

**Example 从未加密快照，跨区域**  
以下代码使用新名称 `mydbsnapshotcopy`，在运行命令的 AWS 区域中创建快照的副本。  
对于 Linux、macOS 或 Unix：  

```
aws rds copy-db-snapshot \
    --source-db-snapshot-identifier arn:aws:rds:us-east-1:123456789012:snapshot:mysql-instance1-snapshot-20130805 \
    --target-db-snapshot-identifier mydbsnapshotcopy
```
对于：Windows  

```
aws rds copy-db-snapshot ^
    --source-db-snapshot-identifier arn:aws:rds:us-east-1:123456789012:snapshot:mysql-instance1-snapshot-20130805 ^
    --target-db-snapshot-identifier mydbsnapshotcopy
```

**Example 从加密快照，跨区域**  
以下代码示例将加密的数据库快照从美国西部（俄勒冈州）区域复制到美国东部（弗吉尼亚州北部）。在目标 (us-east-1) 区域运行该命令。  
对于 Linux、macOS 或 Unix：  

```
aws rds copy-db-snapshot \
    --source-db-snapshot-identifier arn:aws:rds:us-west-2:123456789012:snapshot:mysql-instance1-snapshot-20161115 \
    --target-db-snapshot-identifier mydbsnapshotcopy \
    --kms-key-id my-us-east-1-key \ 
    --option-group-name custom-option-group-name
```
对于：Windows  

```
aws rds copy-db-snapshot ^
    --source-db-snapshot-identifier arn:aws:rds:us-west-2:123456789012:snapshot:mysql-instance1-snapshot-20161115 ^
    --target-db-snapshot-identifier mydbsnapshotcopy ^
    --kms-key-id my-us-east-1-key ^
    --option-group-name custom-option-group-name
```

在 AWS GovCloud（美国东部）和 AWS GovCloud（美国西部）区域之间复制加密快照时需要 `--source-region` 参数。对于 `--source-region`，指定源数据库实例的 AWS 区域。

如果未指定 `--source-region`，请指定 `--pre-signed-url` 值。*预签名 URL* 包含签名版本 4 签名的请求，该请求用于在源 AWS 区域中调用的 `copy-db-snapshot` 命令。要了解有关 `pre-signed-url` 选项的更多信息，请参阅《AWS CLI 命令参考》**中的 [ copy-db-snapshot](https://docs.aws.amazon.com/cli/latest/reference/rds/copy-db-snapshot.html)。

### RDS API
<a name="USER_CopySnapshot.API"></a>

您可以使用 Amazon RDS API 操作 [CopyDBSnapshot](https://docs.aws.amazon.com/AmazonRDS/latest/APIReference/API_CopyDBSnapshot.html) 复制数据库快照。如果您将快照复制到新 AWS 区域，请在新 AWS 区域中执行操作。

以下参数用于复制数据库快照。并非所有情况下都需要所有参数。使用以下说明和示例来确定要使用的参数。
+ `SourceDBSnapshotIdentifier` – 源数据库快照的标识符。
  + 如果源快照与副本位于同一 AWS 区域中，则指定有效的数据库快照标识符。例如 `rds:mysql-instance1-snapshot-20130805`。
  + 如果源快照与副本位于同一 AWS 区域中，并且已与您的 AWS 账户共享，则指定有效的数据库快照 ARN。例如 `arn:aws:rds:us-west-2:123456789012:snapshot:mysql-instance1-snapshot-20130805`。
  + 如果源快照与副本位于不同 AWS 区域，则指定有效的数据库快照 ARN。例如：`arn:aws:rds:us-west-2:123456789012:snapshot:mysql-instance1-snapshot-20130805`。
  + 如果从共享的手动数据库快照进行复制，则该参数必须为共享的数据库快照的 Amazon Resource Name (ARN)。
  + 如果您复制加密快照，则此参数对于源 AWS 区域必须为 ARN 格式，并且必须匹配 `PreSignedUrl` 参数中的 `SourceDBSnapshotIdentifier`。
+ `TargetDBSnapshotIdentifier` – 加密数据库快照的新副本的标识符。
+ `CopyOptionGroup` – 将该参数设置为 `true` 可将选项组从共享快照复制到快照的副本。默认值为 `false`。
+ `CopyTags` – 将该参数设置为 `true` 可将标签和值从快照复制到快照的副本。默认为 `false`。
+ `OptionGroupName` – 与快照的副本关联的选项组。

  如果将快照从一个 AWS 区域复制到另一个区域，并且数据库实例使用非默认选项组，则指定该参数。

  如果源数据库实例为 Oracle 或 Microsoft SQL Server 使用透明数据加密，则在跨区域复制时必须指定该参数。有关更多信息，请参阅 [选项组的注意事项](#USER_CopySnapshot.Options)。
+ `KmsKeyId` – 加密的数据库快照的 KMS 密钥标识符。KMS 密钥标识符是 Amazon Resource Name (ARN)、密钥标识符或 KMS 密钥的密钥别名。
  + 如果您从 AWS 账户复制加密的数据库快照，则可以为该参数指定值来使用新的 KMS 密钥加密副本。如果您不为该参数指定值，则使用与源数据库快照相同的 KMS 密钥来加密数据库快照的副本。
  + 如果您从其他 AWS 账户复制共享的加密数据库快照，则必须为该参数指定值。
  + 如果您在复制未加密快照时指定该参数，则将加密副本。
  + 如果将加密快照复制到不同 AWS 区域，必须为目标 AWS 区域指定 KMS 密钥。KMS 密钥特定于创建它们的 AWS 区域，您无法将一个 AWS 区域中的加密密钥用于另一个 AWS 区域。
+ `PreSignedUrl` – 在包含要复制的源数据库快照的源 AWS 区域中，`CopyDBSnapshot` API 操作的包含签名版本 4 签名请求的 URL。

  使用 Amazon RDS API 从其他 AWS 区域复制加密数据库快照时，请指定此参数。使用 AWS CLI 从其他 AWS 区域复制加密数据库快照时，必须指定源区域选项而非此参数。

  预签名 URL 必须是对 `CopyDBSnapshot` API 操作的有效请求，该操作能够在包含要复制的加密数据库快照的源 AWS 区域中运行。预签名 URL 请求必须包含以下参数值：
  + `DestinationRegion` – 加密数据库快照将复制到的 AWS 区域。此 AWS 区域与调用包含此预签名 URL 的 `CopyDBSnapshot` 操作的区域为同一区域。

    例如，假设将加密的数据库快照从 us-west-2 区域复制到 us-east-1 区域。然后您在 us-east-1 区域中调用 `CopyDBSnapshot` 操作，并提供预签名 URL，该 URL 中包含在 us-west-2 区域中对 `CopyDBSnapshot` 操作的调用。对于本示例，预签名 URL 中的 `DestinationRegion` 必须设置为 us-east-1 区域。
  + `KmsKeyId` – 要用于对目标 中的数据库快照副本进行加密的密钥的 KMS 密钥标识符。AWS 区域这与在目标 `CopyDBSnapshot`中调用的 AWS 区域 操作以及预签名 URL 中包含的操作所用的标识符相同。
  + `SourceDBSnapshotIdentifier` – 复制的加密快照的数据库快照标识符。对于源 AWS 区域，此标识符必须采用 Amazon 资源名称（ARN）格式。例如，如果您从 us-west-2 区域复制加密数据库快照，则 `SourceDBSnapshotIdentifier` 应类似于以下示例：`arn:aws:rds:us-west-2:123456789012:snapshot:mysql-instance1-snapshot-20161115`。

  有关签名版本 4 签名请求的更多信息，请参阅：
  + Amazon Simple Storage Service API 参考中的对请求进行身份验证：[使用查询参数（AWS 签名版本 4）](https://docs.aws.amazon.com/AmazonS3/latest/API/sigv4-query-string-auth.html)
  + AWS 一般参考 中的[签名版本 4 签名流程](https://docs.aws.amazon.com/general/latest/gr/signature-version-4.html)

**Example 从未加密快照，到同一区域**  
以下代码使用新名称 `mydbsnapshotcopy`，在与源快照相同的 AWS 区域中创建快照的副本。创建副本时，原始快照上的所有标签都将复制到快照副本。  

```
https://rds.us-west-1.amazonaws.com/
	?Action=CopyDBSnapshot
	&CopyTags=true
	&SignatureMethod=HmacSHA256
	&SignatureVersion=4
	&SourceDBSnapshotIdentifier=mysql-instance1-snapshot-20130805
	&TargetDBSnapshotIdentifier=mydbsnapshotcopy
	&Version=2013-09-09
	&X-Amz-Algorithm=AWS4-HMAC-SHA256
	&X-Amz-Credential=AKIADQKE4SARGYLE/20140429/us-west-1/rds/aws4_request
	&X-Amz-Date=20140429T175351Z
	&X-Amz-SignedHeaders=content-type;host;user-agent;x-amz-content-sha256;x-amz-date
	&X-Amz-Signature=9164337efa99caf850e874a1cb7ef62f3cea29d0b448b9e0e7c53b288ddffed2
```

**Example 从未加密快照，跨区域**  
以下代码使用新名称 `mydbsnapshotcopy`，在 美国西部（加利福尼亚北部） 区域中创建快照的副本。  

```
https://rds.us-west-1.amazonaws.com/
	?Action=CopyDBSnapshot
	&SignatureMethod=HmacSHA256
	&SignatureVersion=4
	&SourceDBSnapshotIdentifier=arn%3Aaws%3Ards%3Aus-east-1%3A123456789012%3Asnapshot%3Amysql-instance1-snapshot-20130805
	&TargetDBSnapshotIdentifier=mydbsnapshotcopy
	&Version=2013-09-09
	&X-Amz-Algorithm=AWS4-HMAC-SHA256
	&X-Amz-Credential=AKIADQKE4SARGYLE/20140429/us-west-1/rds/aws4_request
	&X-Amz-Date=20140429T175351Z
	&X-Amz-SignedHeaders=content-type;host;user-agent;x-amz-content-sha256;x-amz-date
	&X-Amz-Signature=9164337efa99caf850e874a1cb7ef62f3cea29d0b448b9e0e7c53b288ddffed2
```

**Example 从加密快照，跨区域**  
以下代码使用新名称 `mydbsnapshotcopy`，在 US East (N. Virginia) 区域中创建快照的副本。  

```
https://rds.us-east-1.amazonaws.com/
    ?Action=CopyDBSnapshot
    &KmsKeyId=my-us-east-1-key
    &OptionGroupName=custom-option-group-name
    &PreSignedUrl=https%253A%252F%252Frds.us-west-2.amazonaws.com%252F
         %253FAction%253DCopyDBSnapshot
         %2526DestinationRegion%253Dus-east-1
         %2526KmsKeyId%253Dmy-us-east-1-key
         %2526SourceDBSnapshotIdentifier%253Darn%25253Aaws%25253Ards%25253Aus-west-2%25253A123456789012%25253Asnapshot%25253Amysql-instance1-snapshot-20161115
         %2526SignatureMethod%253DHmacSHA256
         %2526SignatureVersion%253D4
         %2526Version%253D2014-10-31
         %2526X-Amz-Algorithm%253DAWS4-HMAC-SHA256
         %2526X-Amz-Credential%253DAKIADQKE4SARGYLE%252F20161117%252Fus-west-2%252Frds%252Faws4_request
         %2526X-Amz-Date%253D20161117T215409Z
         %2526X-Amz-Expires%253D3600
         %2526X-Amz-SignedHeaders%253Dcontent-type%253Bhost%253Buser-agent%253Bx-amz-content-sha256%253Bx-amz-date
         %2526X-Amz-Signature%253D255a0f17b4e717d3b67fad163c3ec26573b882c03a65523522cf890a67fca613
    &SignatureMethod=HmacSHA256
    &SignatureVersion=4
    &SourceDBSnapshotIdentifier=arn%3Aaws%3Ards%3Aus-west-2%3A123456789012%3Asnapshot%3Amysql-instance1-snapshot-20161115
    &TargetDBSnapshotIdentifier=mydbsnapshotcopy
    &Version=2014-10-31
    &X-Amz-Algorithm=AWS4-HMAC-SHA256
    &X-Amz-Credential=AKIADQKE4SARGYLE/20161117/us-east-1/rds/aws4_request
    &X-Amz-Date=20161117T221704Z
    &X-Amz-SignedHeaders=content-type;host;user-agent;x-amz-content-sha256;x-amz-date
    &X-Amz-Signature=da4f2da66739d2e722c85fcfd225dc27bba7e2b8dbea8d8612434378e52adccf
```

## 限制
<a name="USER_CopySnapshot.Limitations"></a>

复制快照时，存在以下一些限制：
+ 无法将快照复制到中国（北京）区域或 中国（宁夏）区域或从这两个区域复制快照。
+  您可以在 AWS GovCloud（美国东部）和 AWS GovCloud（美国西部）之间复制快照。但是，您不能在这些 GovCloud（美国）区域和非 GovCloud（美国）区域的区域之间复制快照。
+ 如果您在目标快照可用之前删除了源快照，则快照复制会失败。在删除源快照之前，请确保目标快照的状态为 `AVAILABLE`。
+ 每个账户最多可以同时进行到同一目标区域的 20 个快照复制请求。
+ 当您为同一源数据库实例请求多个快照副本时，它们将在内部排队。在先前的快照副本完成之后，稍后请求的副本才会启动。有关更多信息，请参阅 AWS 知识中心里的[为什么我的 EC2 AMI 或 EBS 快照创建速度很慢？](https://aws.amazon.com/premiumsupport/knowledge-center/ebs-snapshot-ec2-ami-creation-slow/)。
+ 根据所涉及的 AWS 区域和要复制的数据量，可能需要数小时才能完成跨区域快照复制。有时，某一给定的源区域可能会发出大量跨区域快照复制请求。在这种情况下，Amazon RDS 可能会将来自该源区域的新跨区域复制请求排入队列，直至某些区域正在进行的复制完成。当复制请求在队列中时，不显示有关这些复制请求的进度信息。复制开始后即显示进度信息。
+ 如果某个副本在您启动另一个副本时仍处于挂起状态，则第二个副本在第一个副本完成后才开始。
+ 您无法复制多可用区数据库集群的快照
+ 您只能将使用 io2 卷的数据库实例的快照复制到有 io2 Block Express 卷可用的 AWS 区域。有关更多信息，请参阅 [Amazon RDS 数据库实例存储](CHAP_Storage.md)。

## 注意事项
<a name="USER_CopySnapshot.Considerations"></a>

有关复制数据库快照的注意事项，请参阅以下主题。

**Topics**
+ [快照保留](#USER_CopySnapshot.Retention)
+ [共享快照复制注意事项](#USER_CopySnapshot.Shared)
+ [加密快照复制的注意事项](#USER_CopySnapshot.Encryption)
+ [增量快照复制的注意事项](#USER_CopySnapshot.Incremental)
+ [跨区域快照复制的注意事项](#USER_CopySnapshot.AcrossRegions)
+ [选项组的注意事项](#USER_CopySnapshot.Options)
+ [参数组的注意事项](#USER_CopySnapshot.Parameters)

### 快照保留
<a name="USER_CopySnapshot.Retention"></a>

在以下几种情况下，Amazon RDS 会删除自动备份：
+ 在保留期结束时。
+ 对数据库实例禁用自动备份时。
+ 删除数据库实例时。

如果要长期保留自动快照，则可复制它以创建一个手动快照。该快照在您删除之前将会一直保留。如果手动快照超出了默认存储空间，则可能会产生 Amazon RDS 存储成本。

有关备份存储成本的更多信息，请参阅 [Amazon RDS 定价](https://aws.amazon.com/rds/pricing/)。

### 共享快照复制注意事项
<a name="USER_CopySnapshot.Shared"></a>

您可以复制其他 AWS 账户与您共享的快照。在某些情况下，您可以从另一个 AWS 账户复制共享的加密快照。在这些情况下，您必须有权访问用于加密快照的 AWS KMS key。

**注意**  
对于您复制的共享快照，将向您收取 Amazon RDS 存储费用。Amazon RDS 可能会将源数据库实例的 ARN 附加到您复制的快照中。

您可以跨 AWS 区域复制共享数据库快照，前提是该快照未加密。

**注意**  
如果未加密或使用与初始完整快照相同的 KMS 密钥进行加密，则支持在同一 AWS 区域中复制共享增量快照。如果您在复制后续快照时使用其他 KMS 密钥对其进行加密，则这些共享快照是完整快照。有关更多信息，请参阅 [增量快照复制的注意事项](#USER_CopySnapshot.Incremental)。

#### 跨区域和跨账户复制只需一个步骤
<a name="cross-region-cross-account-copy"></a>

 要在单个操作中跨区域和跨账户复制快照，必须先与目标 AWS 账户共享快照。如果快照已加密，则还必须与目标 AWS 账户共享 AWS KMS 密钥。如果快照使用默认 AWS KMS 密钥加密，则必须先复制快照以使用客户管理的密钥对其进行重新加密，然后再与目标账户共享。共享后，您可以从目标账户发起对该账户的复制操作（同区域或跨区域）。

### 加密快照复制的注意事项
<a name="USER_CopySnapshot.Encryption"></a>

您可以复制已使用 KMS 密钥加密的快照。如果您复制加密的快照，则此快照的副本也必须加密。如果在同一 AWS 区域内复制加密的快照，可使用与原始快照相同的 KMS 密钥加密此副本。也可指定不同的 KMS 密钥。

如果跨区域复制加密快照，则必须指定在目标 AWS 区域中有效的 KMS 密钥。该密钥可以是某个区域的专用 KMS 密钥，也可以是多区域密钥。有关多区域 KMS 密钥的更多信息，请参阅[在 AWS KMS 中使用多区域密钥](https://docs.aws.amazon.com/kms/latest/developerguide/multi-region-keys-overview.html)。

源快照在复制过程中保持加密状态。有关更多信息，请参阅“[Amazon RDS 加密的数据库实例的限制](Overview.Encryption.md#Overview.Encryption.Limitations)”。

您还可加密未加密快照的副本。这样，您可以快速为之前未加密的数据库实例增加加密功能。为此，您可在准备好加密数据库实例快照时创建该快照。然后创建该快照的副本并指定一个 KMS 密钥来加密该快照副本。之后您可从加密的快照还原加密的数据库实例。

**重要**  
当您在 Amazon RDS 等托管式服务的 AWS KMS 密钥策略中对所有资源（\$1）使用显式拒绝语句时，您必须指定一个条件来支持拥有资源的账户。如果没有此条件，复制操作可能会失败，即使拒绝规则中包含针对您的 IAM 用户的例外情况也是如此。

有关 Amazon RDS 的 AWS KMS 密钥管理的更多信息，请参阅 [AWS KMS key 管理](Overview.Encryption.Keys.md)。

#### 复制加密快照所需的权限
<a name="USER_CopySnapshot.Encryption.Permissions"></a>

要复制加密的数据库快照，您的用户必须具有以下权限以使用 Amazon RDS 加密。
+ `kms:DescribeKey`
+ `kms:CreateGrant`
+ `kms:Decrypt`
+ `kms:Encrypt`
+ `kms:GenerateDataKey`
+ `kms:GenerateDataKeyWithoutPlaintext`
+ `kms:ReEncrypt`

如果您使用 IAM 策略条件来限制 AWS KMS 授权操作，请确保您的策略包含 Amazon RDS 所需的所有操作。如果您在跨区域复制加密快照时收到 `KMSKeyNotAccessibleFault` 错误，请验证您的 IAM 策略是否包含上述所有必需的 AWS KMS 授权操作。

### 增量快照复制的注意事项
<a name="USER_CopySnapshot.Incremental"></a>

*增量*快照仅包含在同一数据库实例的最近快照后发生更改的数据。与完整快照复制相比，增量快照复制速度更快，产生的存储成本更低。

快照副本是否为增量副本是由最近完成的快照副本和源快照决定的。如果删除了最新的快照副本，则下一个副本是完整副本，而不是增量副本。快照副本的类型将与源快照相同。如果源快照是增量快照，则快照副本将是增量快照。增量还取决于自最近一次快照以来源数据库实例中发生的更改次数。

在跨 AWS 账户复制快照时，仅当满足以下所有条件时，副本才是增量副本：
+ 最新的快照副本是同一个源数据库实例的副本，并且仍位于目标账户中。
+ 目标账户中的所有快照副本均未加密，或者是使用同一 KMS 密钥加密的。如果副本是加密的，则它们必须具有相同的谱系，即在相应级别具有匹配的继承深度和一致的加密密钥。
+ 如果源数据库实例是多可用区实例，则自上次从该实例拍摄快照以来，它从未故障转移到其他可用区。

以下示例说明了完整快照和增量快照之间的区别。同样适用于共享快照和非共享快照。


| 快照 | 加密密钥 | 完整或增量 | 
| --- | --- | --- | 
| S1 | K1 | 完整 | 
| S2 | K1 | S1 的增量 | 
| S3 | K1 | S2 的增量 | 
| S4 | K1 | S3 的增量 | 
| S1 (S1C) 的副本 | K2 | 完整 | 
| S2 (S2C) 的副本 | K3 | 完整 | 
| S3 (S3C) 的副本 | K3 | S2C 的增量 | 
| S4 (S4C) 的副本 | K3 | S3C 的增量 | 
| S4 (S4C2) 的副本 2 | K4 | 完整 | 

**注意**  
在这些示例中，仅当先前的快照仍然存在时，快照 S2、S3 和 S4 才是增量快照。  
这同样适用于副本。仅当先前的副本仍然存在时，快照副本 S3C 和 S4C 才是增量副本。

有关跨 AWS 区域复制增量快照的信息，请参阅[完整和增量拷贝](#USER_CopySnapshot.AcrossRegions.Full)。

### 跨区域快照复制的注意事项
<a name="USER_CopySnapshot.AcrossRegions"></a>

您可以跨 AWS 区域复制数据库快照。跨区域快照复制需要支付数据传输费用。跨区域快照复制具有某些限制和注意事项。

#### 请求跨区域数据库快照复制
<a name="USER_CopySnapshot.AcrossRegions.Policy"></a>

要与源区域通信以请求跨区域数据库快照副复制，请求者（IAM 角色或 IAM 用户）必须有权访问源数据库快照和源区域。

请求者的 IAM 策略中的某些条件可能会导致请求失败。以下示例假定您要将数据库快照从 美国东部（俄亥俄州） 复制到 US East (N. Virginia)。这些示例显示了请求者的 IAM 策略中导致请求失败的条件：
+ 请求者的策略对于 `aws:RequestedRegion` 具有条件限制。

  ```
  ...
  "Effect": "Allow",
  "Action": "rds:CopyDBSnapshot",
  "Resource": "*",
  "Condition": {
      "StringEquals": {
          "aws:RequestedRegion": "us-east-1"
      }
  }
  ```

  请求失败，因为该策略不允许访问源区域。要想请求成功，请指定源区域和目标区域。

  ```
  ...
  "Effect": "Allow",
  "Action": "rds:CopyDBSnapshot",
  "Resource": "*",
  "Condition": {
      "StringEquals": {
          "aws:RequestedRegion": [
              "us-east-1",
              "us-east-2"
          ]
      }
  }
  ```
+ 请求者的策略不允许访问源数据库快照。

  ```
  ...
  "Effect": "Allow",
  "Action": "rds:CopyDBSnapshot",
  "Resource": "arn:aws:rds:us-east-1:123456789012:snapshot:target-snapshot"
  ...
  ```

  要想请求成功，请指定源快照和目标快照。

  ```
  ...
  "Effect": "Allow",
  "Action": "rds:CopyDBSnapshot",
  "Resource": [
      "arn:aws:rds:us-east-1:123456789012:snapshot:target-snapshot",
      "arn:aws:rds:us-east-2:123456789012:snapshot:source-snapshot"
  ]
  ...
  ```
+ 请求者的政策拒绝 `aws:ViaAWSService`。

  ```
  ...
  "Effect": "Allow",
  "Action": "rds:CopyDBSnapshot",
  "Resource": "*",
  "Condition": {
      "Bool": {"aws:ViaAWSService": "false"}
  }
  ```

  与源区域的通信由 RDS 代表请求者进行。要想请求成功，请不要拒绝 AWS 服务发出的调用。
+ 请求者的策略对于 `aws:SourceVpc` 或 `aws:SourceVpce` 具有条件限制。

  这些请求可能会失败，因为 RDS 对远程区域进行调用时，它并非来自指定的 VPC 或 VPC 端点。

如果您需要使用可能导致请求失败的上述某个条件，则可以在策略中包含第二个带有 `aws:CalledVia` 的语句，以便请求成功。例如，您可以使用带有 `aws:CalledVia` 的 `aws:SourceVpce`，如下所示：

```
...
"Effect": "Allow",
"Action": "rds:CopyDBSnapshot",
"Resource": "*",
"Condition": {
    "Condition" : { 
        "ForAnyValue:StringEquals" : {
          "aws:SourceVpce": "vpce-1a2b3c4d"
        }
     }
},
{
    "Effect": "Allow",
    "Action": [
        "rds:CopyDBSnapshot"
    ],
    "Resource": "*",
    "Condition": {
        "ForAnyValue:StringEquals": {
            "aws:CalledVia": [
                "rds.amazonaws.com"
            ]
        }
    }
}
```

有关更多信息，请参阅 *IAM 用户指南*中的 [IAM 中的策略和权限](https://docs.aws.amazon.com/IAM/latest/UserGuide/access_policies.html)。

#### 授权快照副本
<a name="USER_CopySnapshot.AcrossRegions.Auth"></a>

跨区域数据库快照复制请求返回 `success` 后，RDS 将在后台启动副本。已创建 RDS 访问源快照的授权。此授权将源数据库快照链接到目标数据库快照，并允许 RDS 仅复制到指定的目标快照。

 RDS 使用服务链接的 IAM 角色中的 `rds:CrossRegionCommunication` 权限对授权进行验证。如果副本获得授权，RDS 将与源区域通信并完成复制。

 RDS 无权访问之前未经 `CopyDBSnapshot` 请求授权的数据库快照。复制完成后，将撤销授权。

 RDS 使用服务链接的角色来验证源区域中的授权。如果在复制过程中删除了服务链接的角色，则复制将失败。

有关更多信息，请参阅 *IAM 用户指南*中的[使用服务相关角色](https://docs.aws.amazon.com/IAM/latest/UserGuide/using-service-linked-roles.html)。

#### 使用 AWS Security Token Service 凭证
<a name="USER_CopySnapshot.AcrossRegions.assumeRole"></a>

来自全局 AWS Security Token Service (AWS STS) 端点的会话令牌仅在默认启用的 AWS 区域（商业区域）中有效。在 `assumeRole` 中使用来自 AWS STS API 操作的凭证时， 如果源区域是选择加入区域，请使用区域端点。否则，请求将失败。发生这种情况的原因是，您的凭证必须在两个区域都有效，而在使用区域 AWS STS 端点时，仅选择加入区域有效。

要使用全局端点，请确保在操作中为两个区域都启用了该端点。在 AWS STS 账户设置中将全局端点设置为 `Valid in all AWS 区域`。

 同样的规则也适用于预签名 URL 参数中的凭证。

有关更多信息，请参阅《IAM 用户指南》**中的[在 AWS 区域 中管理 AWS STS](https://docs.aws.amazon.com/IAM/latest/UserGuide/id_credentials_temp_enable-regions.html)。

#### 延迟和多个复制请求
<a name="USER_CopySnapshot.AcrossRegions.Latency"></a>

根据所涉及的 AWS 区域和要复制的数据量，可能需要数小时才能完成跨区域快照复制。

有时，某一给定的源 AWS 区域可能会发出大量跨区域快照复制请求。在这种情况下，Amazon RDS 可能会将来自该源 AWS 区域的新跨区域复制请求排入队列，直至某些正在进行的复制完成。当复制请求在队列中时，不显示有关这些复制请求的进度信息。复制开始后即显示进度信息。

#### 完整和增量拷贝
<a name="USER_CopySnapshot.AcrossRegions.Full"></a>

在向与源快照不同的 AWS 区域复制快照时，即使复制增量快照，第一个副本也是完整快照副本。完整快照副本包含还原数据库实例需要的所有数据和元数据。在第一个快照副本后，可将同一数据库实例的增量快照复制到同一个 AWS 账户内的相同目标区域。有关增量快照的更多信息，请参阅[增量快照复制的注意事项](#USER_CopySnapshot.Incremental)。

已加密和未加密快照均支持跨 AWS 区域的增量快照复制。

在跨 AWS 区域复制快照时，如果满足以下条件，则副本为增量副本：
+ 此前已将快照复制到目标区域。
+ 最新的快照副本仍位于目标区域中。
+ 目标区域中的所有快照副本均未加密，或者是使用同一 KMS 密钥加密的。

### 选项组的注意事项
<a name="USER_CopySnapshot.Options"></a>

数据库选项组特定于在其中创建它们的 AWS 区域，您不能将一个 AWS 区域中的选项组用于另一个 AWS 区域。

对于 Oracle 数据库，您可以使用 AWS CLI 或 RDS API 从与您的 AWS 账户共享的快照中复制自定义数据库选项组。您只能在同一 AWS 区域内复制选项组。如果选项组已复制到目标账户，并且在复制后未对其进行任何更改，则不会复制该选项组。如果之前已复制过源选项组，但在复制后发生了变化，则 RDS 会将新版本复制到目标账户。不会复制原定设置选项组。

在您跨区域复制快照时，可以为快照指定新选项组。我们建议您在复制快照之前准备新选项组。在目标 AWS 区域，使用与原始数据库实例相同的设置创建选项组。如果新 AWS 区域中已存在选项组，也可以使用它。

在某些情况下，您可以复制快照而不是为快照指定新的选项组。在这些情况下，还原快照时，数据库实例将获得默认选项组。要为新的数据库实例提供与原始数据库实例相同的选项，请执行以下操作：

1. 在目标 AWS 区域，使用与原始数据库实例相同的设置创建选项组。如果新 AWS 区域中已存在选项组，也可以使用它。

1. 在目标 AWS 区域中还原快照之后，修改新数据库实例，并添加上一步中的新选项组或现有选项组。

### 参数组的注意事项
<a name="USER_CopySnapshot.Parameters"></a>

跨区域复制快照时，复制不包括由原始数据库实例使用的参数组。当您还原快照来创建新数据库实例时，该数据库实例会获得创建该实例的 AWS 区域的默认参数组。要为新的数据库实例提供与源数据库实例相同的参数组，请执行以下操作：

1. 在目标 AWS 区域中，使用与原始数据库实例相同的设置来创建数据库参数组。如果新 AWS 区域中已存在选项组，也可以使用它。

1. 在目标 AWS 区域中还原快照之后，修改新数据库实例，并添加新参数组或上一步中的现有参数组。