

# 备份和还原 Amazon Aurora 数据库集群
备份和还原 Aurora 数据库集群

这些主题提供有关备份和还原 Amazon Aurora 数据库集群的信息。

**提示**  
Aurora 高可用性功能和自动备份功能有助于确保您的数据安全，且无需您进行大量设置。在实施备份策略之前，请了解 Aurora 如何维护数据的多个副本，并帮助您跨多个数据库实例和Amazon区域访问这些副本。有关详细信息，请参阅[Amazon Aurora 的高可用性](Concepts.AuroraHighAvailability.md)。

**Topics**
+ [

# 备份和还原 Aurora 数据库集群的概述
](Aurora.Managing.Backups.md)
+ [

# 保留自动备份
](Aurora.Managing.Backups.Retaining.md)
+ [

# 了解 Amazon Aurora 备份存储使用量
](aurora-storage-backup.md)
+ [

# 创建数据库集群快照
](USER_CreateSnapshotCluster.md)
+ [

# 从数据库集群快照还原
](aurora-restore-snapshot.md)
+ [

# 数据库集群快照复制
](aurora-copy-snapshot.md)
+ [

# 共享数据库集群快照
](aurora-share-snapshot.md)
+ [

# 将数据库集群数据导出到 Amazon S3
](export-cluster-data.md)
+ [

# 将数据库集群快照数据导出到 Amazon S3
](aurora-export-snapshot.md)
+ [

# 将数据库集群还原到指定时间
](aurora-pitr.md)
+ [

# 删除数据库集群快照
](aurora-delete-snapshot.md)
+ [

# 教程：从数据库集群快照中还原 Amazon Aurora 数据库集群
](tut-restore-cluster.md)

# 备份和还原 Aurora 数据库集群的概述
备份和还原概述

以下主题介绍 Aurora 备份以及如何还原 Aurora 数据库集群。

**Contents**
+ [

## 备份
](#Aurora.Managing.Backups.Backup)
  + [

### 使用 Amazon Backup
](#AuroraBackups.BKP)
+ [

## 备份时段
](#Aurora.Managing.Backups.BackupWindow)
+ [

## 还原数据
](#Aurora.Managing.Backups.Restore)
+ [

## 用于 Aurora 的数据库克隆
](#Aurora.Managing.Backups.Restore.Cloning)
+ [

## 回溯
](#Aurora.Managing.Backups.Backtrack)

## 备份


Aurora 自动备份您的集群卷并将还原数据保留*备份保留期*的时长。Aurora 自动备份是连续和递增的，您可以快速还原到备份保留期内的任何时间点。在写入备份数据时，不会发生任何性能影响或数据库服务中断。在创建、修改或还原数据库集群时，可指定备份保留期（1 到 35 天）。Aurora 自动备份存储在 Amazon S3 中。有关保留自动备份的更多信息，请参阅[保留自动备份](Aurora.Managing.Backups.Retaining.md)。

如果希望数据的保留期超出备份保留期，则可为集群卷中的数据创建快照。Aurora 数据库集群快照不会过期。您可以从该快照创建新的数据库集群。有关更多信息，请参阅 [创建数据库集群快照](USER_CreateSnapshotCluster.md)。

在执行还原操作期间，您可以选择为 Amazon Aurora 数据库集群指定备份保留期。如果未明确设置此值，则还原的集群将从源快照或集群继承备份保留期。请注意，这种继承行为是还原操作所特有的，在创建新集群时，系统会改为使用默认保留期。

**注意**  
对于 Amazon Aurora 数据库集群，默认备份保留期为 1 天，不管创建数据库集群的方式如何。
您无法在 Aurora 上禁用自动备份。Aurora 的备份保留期是由数据库集群管理的。

 您的备份存储成本取决于您保存的 Aurora 备份和快照数据的数量以及保存时间。有关与 Aurora 备份和快照关联的存储的信息，请参阅[了解 Amazon Aurora 备份存储使用量](aurora-storage-backup.md)。有关 Aurora 备份存储的定价信息，请参阅 [Amazon RDS for Aurora 定价](https://www.amazonaws.cn/rds/aurora/pricing)。在删除与快照关联的 Aurora 集群后，存储该快照将产生 Aurora 的标准备份存储费用。

### 使用 Amazon Backup


您可以使用 Amazon Backup 来管理 Amazon Aurora 数据库集群的备份。

由 Amazon Backup 管理的快照被视为手动数据库集群快照，但不计入 Aurora 的数据库集群快照限额。使用 Amazon Backup 创建的快照的名称中具有 `awsbackup:job-AWS-Backup-job-number`。有关 Amazon Backup 的更多信息，请参阅 [https://docs.amazonaws.cn/aws-backup/latest/devguide](https://docs.amazonaws.cn/aws-backup/latest/devguide)。

您也可以使用 Amazon Backup 来管理 Amazon Aurora 数据库集群的自动备份。如果您的数据库集群与 Amazon Backup 中的备份计划关联，则可以将该备份计划用于时间点恢复。由 Amazon Backup 管理的自动（连续）备份的名称中具有 `continuous:cluster-AWS-Backup-job-number`。有关更多信息，请参阅 [使用 Amazon Backup 将数据库集群还原到指定时间](aurora-pitr-bkp.md)。

## 备份时段


自动备份在每天的首选备份时段中进行。如果备份所需的时间超过了分配到备份时段的时间，则备份将在该时段结束后继续，直至完成。备份时段不能与数据库集群的每周维护时段重叠。

Aurora 自动备份是连续的增量备份，但备份时段用于创建在备份保留期内保留的每日系统备份。您可以复制此备份，以便在保留期之外保留。

**注意**  
使用 Amazon Web Services 管理控制台 创建数据库集群时，无法指定备份时段。但是，您可以在使用 Amazon CLI 或 RDS API 创建数据库集群时指定备份时段。

如果创建数据库集群时未指定首选备份时段，Aurora 将分配 30 分钟的默认备份时段。此时段是从每个 Amazon Web Services 区域的 8 小时时间段中随机选择出来的。下表列出了已分配默认备份时段的各个 Amazon Web Services 区域的时间块。


****  
[\[See the AWS documentation website for more details\]](http://docs.amazonaws.cn/AmazonRDS/latest/AuroraUserGuide/Aurora.Managing.Backups.html)

## 还原数据


您可以从 Aurora 保留的备份数据、您保存的数据库集群快照或保留的自动备份创建新的 Aurora 数据库集群以恢复数据。您可以将从备份数据创建的新数据库集群副本快速还原到备份保留期内的任何时间点。由于 Aurora 备份在备份保留期内是连续和增量备份，因此，您无需为了缩短还原时间而频繁创建数据快照。

数据库集群的*最近可还原时间*是可以还原数据库集群的最近时间点。对于活动的数据库集群，这通常在当前时间的 5 分钟之内，或者在保留自动备份的集群删除时间的 5 分钟之内。

*最早可还原时间*指定可将集群卷还原到的备份保留期内的最早时间点。

要确定数据库集群的最近或最早的可还原时间，请在 RDS 控制台上查找 `Latest restorable time` 或 `Earliest restorable time` 值。有关查看这些值的信息，请参阅[查看保留的备份](Aurora.Managing.Backups.Retaining.md#Aurora.Managing.Backups.Retaining.Viewing)。

您可以通过检查 `Latest restorable time` 和 `Earliest restorable time` 值来确定数据库集群还原完成的时间。在还原操作完成之前，这些值将返回 NULL。如果 `Latest restorable time` 或 `Earliest restorable time` 返回 NULL，则无法请求备份或还原操作。

有关将数据库集群还原到指定时间的信息，请参阅[将数据库集群还原到指定时间](aurora-pitr.md)。

## 用于 Aurora 的数据库克隆
数据库克隆

您还可以使用数据库克隆将 Aurora 数据库集群的数据库克隆到新的数据库集群，而不是还原数据库集群快照。克隆数据库仅在首次创建时使用很少的额外空间。仅当源数据库上或克隆数据库上的数据发生变化时才复制数据。您可以从同一个数据库集群中进行多次克隆，甚至可以为其他克隆创建额外的克隆。有关更多信息，请参阅 [克隆 Amazon Aurora 数据库集群卷](Aurora.Managing.Clone.md)。

## 回溯


Aurora MySQL 现在支持将数据库集群“倒回”到特定时间，而无需从备份还原数据。有关更多信息，请参阅“[回溯 Aurora 数据库集群](AuroraMySQL.Managing.Backtrack.md)”。

# 保留自动备份


当您删除预调配或 Aurora Serverless v2 数据库集群时，您可以保留自动备份。这允许您将数据库集群还原到备份保留期内的特定时间点，即使在集群被删除之后也是如此。

*保留的自动备份*包含系统快照和来自数据库集群的事务日志。它们还包括数据库集群属性，例如数据库实例类，这些属性是将其还原到活动集群所必需的。

您可以使用 Amazon Web Services 管理控制台、RDS API 和 Amazon CLI 还原或移除保留的自动备份。

**注意**  
您不能保留 Aurora Serverless v1 数据库集群的自动备份。

**Topics**
+ [

## 保留期
](#Aurora.Managing.Backups.Retaining.Period)
+ [

## 查看保留的备份
](#Aurora.Managing.Backups.Retaining.Viewing)
+ [

## 保留成本
](#Aurora.Managing.Backups.Retaining.Costs)
+ [

## 限制
](#Aurora.Managing.Backups.Retaining.Limits)
+ [

## 删除保留的自动备份
](#Aurora.Managing.Backups.Retaining.Deleting)

## 保留期


保留的自动备份中的系统快照和事务日志与源数据库集群的系统快照和事务日志以同样的方式过期。源集群的保留期设置也适用于自动备份。因为没有为此集群创建任何新的快照或日志，所以保留的自动备份最终将完全过期。保留期结束后，您可以继续保留手动数据库集群快照，但所有自动备份都会过期。

您可以使用控制台、Amazon CLI 或 RDS API 操作移除保留的自动备份。有关更多信息，请参阅 [删除保留的自动备份](#Aurora.Managing.Backups.Retaining.Deleting)。

与保留的自动备份不同，最终快照不会过期。我们强烈建议您制作最终快照，即使您保留自动备份也是如此，因为保留的自动备份最终将过期。

## 查看保留的备份


要在 RDS 控制台中查看保留的自动备份，请在导航窗格中选择**自动备份**，然后选择**保留**。要查看与保留的自动备份关联的单个快照，请在导航窗格中选择 **Snapshots (快照)**。或者，您可以通过描述来查看与保留的自动备份关联的各个快照。然后，您可以直接从这些快照之一还原数据库实例。

要使用 Amazon CLI 对保留的自动备份进行描述，请使用以下命令：

```
aws rds describe-db-cluster-automated-backups --db-cluster-resource-id DB_cluster_resource_ID
```

要使用 RDS API 对保留的自动备份进行描述，请使用 `DbClusterResourceId` 参数调用 [https://docs.amazonaws.cn/AmazonRDS/latest/APIReference/API_DescribeDBClusterAutomatedBackups.html](https://docs.amazonaws.cn/AmazonRDS/latest/APIReference/API_DescribeDBClusterAutomatedBackups.html) 操作。

## 保留成本


对于每个 Aurora 数据库集群，备份存储最高可达总 Aurora 数据库存储的 100%，不收取额外费用。如果您在删除数据库集群后保留自动备份，也会有多达一天时间不收取额外费用。保留超过一天的备份需要付费。

事务日志或实例元数据没有额外费用。备份的所有其他定价规则适用于可还原的集群。有关更多信息，请参阅 [Amazon Aurora 定价页面](https://www.amazonaws.cn/rds/aurora/pricing)。

## 限制


以下限制适用于保留的自动备份：
+ 一个 Amazon 区域中保留的自动备份的最大数量为 40。它不包含在数据库集群的限额中。您最多可以同时保留 40 个正在运行的数据库集群、40 个正在运行的数据库实例和 40 个为数据库集群保留的自动备份。

  有关更多信息，请参阅 [Amazon Aurora 中的配额](CHAP_Limits.md#RDS_Limits.Limits)。
+ 保留的自动备份不包含有关参数或选项组的信息。
+ 您可以将已删除的集群还原到删除时保留期内的某个时间点。
+ 您无法修改保留的自动备份，因为它由系统备份、事务日志和删除源集群时存在的数据库集群属性组成。

## 删除保留的自动备份


当不再需要保留的自动备份时，可以删除它们。

### 控制台


**删除保留的自动备份**

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

1. 在导航窗格中，选择 **Automated backups**（自动备份）。

1. 选择**已保留**选项卡。  
![\[\]](http://docs.amazonaws.cn/AmazonRDS/latest/AuroraUserGuide/images/db-cluster-retained-automated-backups.png)

1. 选择要删除的保留自动备份。

1. 对于 **Actions (操作)**，选择 **Delete (删除)**。

1. 在确认页面上，输入 **delete me** 并选择 **Delete (删除)**。

### Amazon CLI


可以通过使用 Amazon CLI 命令 [delete-db-cluster-automated-backup](https://docs.amazonaws.cn/cli/latest/reference/rds/delete-db-cluster-automated-backup.html) 及以下选项删除保留的自动备份：
+ `--db-cluster-resource-id` – 源数据库集群的资源标识符。

  可以通过运行 Amazon CLI 命令 [describe-db-cluster-automated-backups](https://docs.amazonaws.cn/cli/latest/reference/rds/describe-db-cluster-automated-backups.html) 查找保留自动备份的源数据库集群的资源标识符。

**Example**  
此示例删除资源 ID 为 `cluster-123ABCEXAMPLE` 的源数据库集群的保留自动备份。  
对于 Linux、macOS 或 Unix：  

```
1. aws rds delete-db-cluster-automated-backup \
2.     --db-cluster-resource-id cluster-123ABCEXAMPLE
```
对于 Windows：  

```
1. aws rds delete-db-cluster-automated-backup ^
2.     --db-cluster-resource-id cluster-123ABCEXAMPLE
```

### RDS API


可以通过使用 Amazon RDS API 操作 [DeleteDBClusterAutomatedBackup](https://docs.amazonaws.cn/AmazonRDS/latest/APIReference/API_DeleteDBClusterAutomatedBackup.html) 及以下参数删除保留的自动备份。
+ `DbClusterResourceId` – 源数据库集群的资源标识符。

  可以通过使用 Amazon RDS API 操作 [DescribeDBClusterAutomatedBackups](https://docs.amazonaws.cn/AmazonRDS/latest/APIReference/API_DescribeDBClusterAutomatedBackups.html) 查找保留自动备份的源数据库实例的资源标识符。

# 了解 Amazon Aurora 备份存储使用量
备份存储

Amazon Aurora 维护两种类型的备份：自动（连续）备份和快照。

## 自动备份存储


集群的自动（连续）备份以增量方式存储指定保留期内的所有数据库更改，以便能够还原到该保留期内的任何时间点。保留期可以介于 1 到 35 天之间。自动备份是增量备份，根据还原到保留期内的任何时间所需的存储量进行收费。

Aurora 还提供免费备份使用量。此免费使用量等于最新的集群卷大小（由 `VolumeBytesUsed` Amazon CloudWatch 指标表示）。此使用量从计算出的自动备份使用量中扣除。对于保留期仅为 1 天的自动备份，也不会收取任何费用。

例如，您的自动备份的保留期为 7 天，您想要将集群还原到四天前的状态。Aurora 使用存储在自动备份中的增量数据来重新创建四天前这个具体时间的集群状态。

自动备份存储了所有必需的信息，以便能够在保留时段中的任何时间点还原集群。这意味着它会存储保留时段内的所有更改，包括写入新信息或删除现有信息。对于发生许多更改的数据库，自动备份的大小会逐渐增加。数据库停止发生更改后，由于先前存储的更改会退出保留时段，因此您可以预期自动备份的大小会减小。

自动备份的总计费使用量绝不会超过保留期内的累积集群卷大小。例如，如果您的保留期为 7 天，集群卷为每天 100 GB，则计费的自动备份使用量绝不会超过 700 GB（100 GB \$1 7）。

## 快照存储


数据库集群快照始终是完整备份，这些备份会在您创建它们时捕获集群卷的大小。无论您是手动还是通过 [Amazon Backups](https://docs.amazonaws.cn/aws-backup/latest/devguide/about-backup-plans.html) 计划拍摄快照，Aurora 都会将其视为手动快照。Aurora 为自动备份保留期内的快照提供不受限的免费存储空间。手动快照超出此期限后，将按 GB-月计费。自动系统快照将保持免费，除非您复制它们。由于自动备份不涵盖快照副本，因此 Amazon 始终会对其收费。

有关 Aurora 备份的一般信息，请参阅[备份](Aurora.Managing.Backups.md#Aurora.Managing.Backups.Backup)。有关 Aurora 备份存储定价的信息，请参阅 [Amazon Aurora 定价](https://www.amazonaws.cn/rds/aurora/pricing)页面。

## Aurora 备份存储的 Amazon CloudWatch 指标
CloudWatch 备份存储指标

您可以通过 [CloudWatch 控制台](https://console.amazonaws.cn/cloudwatch/)，使用 Amazon CloudWatch 指标来监控 Aurora 集群并创建报告。您可以使用以下 CloudWatch 指标来检查和监控 Aurora 备份使用的存储量。这些指标是为每个 Aurora 数据库集群单独计算的。
+ `BackupRetentionPeriodStorageUsed` – 表示目前用于存储自动备份的备份存储量（以字节为单位）。
  + 该值取决于集群卷的大小以及在保留期内对数据库集群的更改（写入和更新）次数。这是因为自动备份必须存储对集群所做的所有增量更改，才能还原到任何时间点。
  + 此指标并未减去 Aurora 提供的免费备份使用套餐。
  + 该指标针对当天记录的自动备份使用量发出一个每日数据点。
+ `SnapshotStorageUsed` – 表示用于存储超出自动备份保留期的手动快照的备份存储量（以字节为单位）。
  + 该值取决于您在自动备份的保留期之外保留的快照数量以及每个快照的大小。
  + 每个快照的大小是您拍摄快照时的集群卷的大小。
  + 快照是完整备份，不是增量备份。
  + 该指标针对每个收费的快照发出一个每日数据点。要检索您每日的总体快照使用量，请计算一天内该指标的总和。
+ `TotalBackupStorageBilled` – 表示给定集群的所有计费备份使用量的指标（以字节为单位）：

  `BackupRetentionPeriodStorageUsed + SnapshotStorageUsed - free tier`
  + 此指标针对 `BackupRetentionPeriodStorageUsed` 值*减去* Aurora 提供的免费备份使用套餐，发出一个每日数据点。此免费套餐等于数据库集群卷的最新记录大小。此数据点表示自动备份的实际计费使用量。
  + 该指标将针对所有 `SnapshotStorageUsed` 值发出单独的每日数据点。
  + 要检索您每日的总体计费备份使用量，请计算一天内该指标的总和。这将所有计费的快照使用量与计费的自动备份使用量相加，得出您总的计费备份使用量。

有关如何使用 CloudWatch 指标的更多信息，请参阅 [Amazon RDS 控制台中 Aurora 指标的可用性](Aurora.Monitoring.Metrics.RDSAvailability.md)。

## 计算备份存储使用量


自动备份的使用量是通过查看必须存储的所有增量记录来计算的，存储这些增量记录的目的是为了能够还原到备份保留期内的任意时间点。这些更改不仅包括写入操作的数量，还包括数据修改的大小和范围。每种类型的操作（INSERT、UPDATE、DELETE）都会创建更改记录，必须保留这些记录才能进行时间点故障恢复。因此，尽管两个数据库可能具有相同数量的写入操作（IOPS），但它们的备份存储要求可能会因每个事务中所修改的数据量而大相径庭。

例如，您有一个保留期为 7 天的自动备份。保留期之前的集群卷大小为 100 GB，因此这是 Aurora 需要存储的最小容量。然后，您将在接下来的 7 天内进行以下活动，其中增量记录大小是存储数据库写入和更新产生的更改记录所需的存储量。


| 天 | 增量记录大小（GB） | 
| --- | --- | 
| 1 | 10 | 
| 2 | 15 | 
| 3 | 25 | 
| 4 | 20 | 
| 5 | 10 | 
| 6 | 25 | 
| 7 | 30 | 
| 总计 | 135 | 

此数据意味着计算出的备份的自动备份使用量如下：

```
100 GB (volume size before retention period) + 135 GB (size of incremental records) = 235 GB total backup usage
```

然后，计费的使用量减去免费使用量套餐。假设您的卷的最新大小为 200 GB：

```
235 GB total backup usage - 200 GB (latest volume size) = 35 GB billed backup usage
```

## 常见问题解答


**什么时候会向我收取快照费用？**  
对于超出（早于）自动备份保留期的手动快照，将向您收取费用。

**什么是手动快照？**  
手动快照是指适用以下条件之一的快照：  
+ 由您手动请求
+ 由自动备份服务（例如 Amazon Backup）拍摄
+ 从自动系统快照中复制，在保留期之外进行保存

**如果我删除数据库集群，我的手动快照会怎样？**  
手动快照在删除之前不会过期。  
当您删除数据库集群时，您之前拍摄的手动快照将继续存在。如果这些快照以前因为处于自动备份保留期内而不被计费，那么现在它们已不在保留期内，所有快照都开始按其整个使用量计费。

**如何降低备份存储成本？**  
有几种方法可以减少备份使用量相关成本：  
+ 删除超出自动备份保留期的手动快照。其中包括您拍摄的快照，以及您的 Amazon Backup 计划可能会拍摄的快照。请务必检查您的 Amazon Backup 计划，确保其不会在出乎您意料的保留期之外保留快照。
+ 评估您对数据库的写入和更新，看看是否可以减少更改次数。由于我们的自动备份会存储保留期内的所有增量更改，因此减少更新次数也可以减少自动备份费用。
+ 评估缩短自动备份保留期是否合理。缩短保留期意味着备份存储增量数据的天数更少，从而可以降低总体备份成本。但是，缩短保留期也可能会导致某些快照开始计费，因为这些快照现在已超出保留期。在决定缩短保留期是否为正确做法之前，请务必检查可能产生的所有额外快照费用。

**备份存储是如何计费的？**  
备份存储按 GB/月计费。  
这意味着备份存储使用量按给定月份使用量的加权平均值计费。以下是总共 30 天的某个月份的几个示例：  
+ 当月 30 天的计费备份使用量均为 100 GB。您的费用如下：

  ```
  (100 GB * 30) / 30 = 100 GB-month
  ```
+ 当月前 15 天的计费备份使用量为 100 GB，后 15 天的计费备份使用量为 0 GB。您的费用如下：

  ```
  (100 GB * 15 + 0 GB * 15) / 30 = 50 GB-month
  ```
+ 当月前 10 天的计费备份使用量为 50 GB，接下来的 10 天为 100 GB，最后 10 天为 150 GB。您的费用如下：

  ```
  (50 GB * 10 + 100 GB * 10 + 150 GB * 10) / 30 = 100 GB-month
  ```

**我的数据库集群的回溯设置对备份存储使用量有何影响？**  
Aurora 数据库集群的回溯设置不会影响该集群的备份数据量。Amazon 单独对回溯数据存储收费。有关 Aurora 回溯的定价信息，请参阅 [Amazon Aurora 定价页面](https://www.amazonaws.cn/rds/aurora/pricing)。

**共享快照的存储成本如何收费？**  
如果您与另一个用户共享快照，您仍然是该快照的拥有者。存储成本向快照拥有者收取。如果您删除了所拥有的共享快照，没有用户能够再访问它。  
要继续访问其他人所有的共享快照，您可以复制该快照。这样会让您成为新快照的拥有者。所复制快照的所有存储成本都会计入您的账户。  
有关共享快照的更多信息，请参阅[共享数据库集群快照](aurora-share-snapshot.md)。有关复制快照的更多信息，请参阅[数据库集群快照复制](aurora-copy-snapshot.md)。

# 创建数据库集群快照
<a name="create_snapshot"></a>

Amazon RDS 创建数据库集群的存储卷快照，并备份整个数据库集群而不仅仅是单个数据库。创建数据库集群快照时，您需要标识要备份的数据库集群，然后为数据库集群快照命名，以便稍后从此快照还原。创建数据库集群快照所用时间因数据库大小而异。由于快照包含整个存储卷，因此，文件（如临时文件）的大小也会影响创建快照所需的时间。

**注意**  
您的数据库集群必须处于 `available` 状态才能拍摄数据库集群快照。

与自动备份不同，手动快照不受备份保留期的限制。快照不会过期。

对于非常长期的备份，我们建议将快照数据导出到 Amazon S3。如果不再支持数据库引擎的主要版本，则无法从快照还原到该版本。有关更多信息，请参阅 [将数据库集群快照数据导出到 Amazon S3](aurora-export-snapshot.md)。

您可以使用 Amazon Web Services 管理控制台、Amazon CLI 或 RDS API 创建数据库集群快照。

## 控制台


**创建数据库集群快照**

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

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

   将显示**手动快照**列表。

1. 选择**拍摄快照**。

   将显示 **Take DB snapshot (拍摄数据库快照)** 窗口。

1. 对于**快照类型**，请选择**数据库集群**。  
![\[拍摄数据库快照。\]](http://docs.amazonaws.cn/AmazonRDS/latest/AuroraUserGuide/images/take_db_cluster_snapshot.png)

1. 选择要为其拍摄快照的**数据库集群**。

1. 输入**快照名称**。

1. 选择**拍摄快照**。

   将显示**手动快照**列表，其中新的数据库集群快照的状态显示为 `Creating`。在其状态为 `Available` 后，您可以看到其创建时间。

## Amazon CLI


在使用 Amazon CLI 创建数据库集群快照时，您需要指定要备份的数据库集群，然后指定数据库集群快照名称，以便以后从该快照还原。结合以下参数使用 Amazon CLI [https://docs.amazonaws.cn/cli/latest/reference/rds/create-db-cluster-snapshot.html](https://docs.amazonaws.cn/cli/latest/reference/rds/create-db-cluster-snapshot.html) 命令执行该操作：
+ `--db-cluster-identifier`
+ `--db-cluster-snapshot-identifier`

在该示例中，您为名为 *mydbcluster* 的数据库集群创建名为 *mydbclustersnapshot* 的数据库集群快照。

**Example**  
对于 Linux、macOS 或 Unix：  

```
1. aws rds create-db-cluster-snapshot \
2.     --db-cluster-identifier mydbcluster \
3.     --db-cluster-snapshot-identifier mydbclustersnapshot
```
对于：Windows  

```
1. aws rds create-db-cluster-snapshot ^
2.     --db-cluster-identifier mydbcluster ^
3.     --db-cluster-snapshot-identifier mydbclustersnapshot
```

## RDS API


在使用 Amazon RDS API 创建数据库集群快照时，您需要指定要备份的数据库集群，然后指定数据库集群快照名称，以便以后从该快照还原。您可以使用具有以下参数的 Amazon RDS API [https://docs.amazonaws.cn/AmazonRDS/latest/APIReference/API_CreateDBClusterSnapshot.html](https://docs.amazonaws.cn/AmazonRDS/latest/APIReference/API_CreateDBClusterSnapshot.html) 命令执行该操作：
+ DBClusterIdentifier
+ DBClusterSnapshotIdentifier

## 确定数据库集群快照是否可用
确定快照是否可用

您可通过下列方式检查数据库集群快照是否可用：在 Amazon Web Services 管理控制台中的集群详情页面上查看**维护和备份**选项卡下的**快照**，使用 [https://docs.amazonaws.cn/cli/latest/reference/rds/describe-db-cluster-snapshots](https://docs.amazonaws.cn/cli/latest/reference/rds/describe-db-cluster-snapshots) CLI 命令，或者使用 [https://docs.amazonaws.cn/AmazonRDS/latest/APIReference/API_DescribeDBClusterSnapshots.html](https://docs.amazonaws.cn/AmazonRDS/latest/APIReference/API_DescribeDBClusterSnapshots.html) API 操作。

您也可以使用 [https://docs.amazonaws.cn/cli/latest/reference/rds/wait/db-cluster-snapshot-available.html](https://docs.amazonaws.cn/cli/latest/reference/rds/wait/db-cluster-snapshot-available.html) CLI 命令每 30 秒轮询一次 API，直到快照可用。

# 从数据库集群快照还原
从数据库集群快照还原<a name="restore_snapshot"></a>

Amazon RDS 创建数据库集群的存储卷快照，并备份整个数据库集群而不仅仅是单个数据库。您可以通过从数据库快照还原来创建新的数据库集群。您可以提供用于还原的数据库集群快照的名称，然后提供还原后新建的数据库集群的名称。您无法从数据库集群快照还原到现有数据库集群；还原时将新建一个数据库集群。

**重要**  
您无法将快照恢复到已超过 Aurora 标准支持结束日期的数据库引擎版本。只有在数据库成功升级到支持的版本后，您才能访问该数据库。有关支持的 Aurora DB 引擎版本的更多信息，请参阅[Amazon Aurora 的 Amazon RDS 扩展支持](extended-support.md)。  
如果升级到支持的集群版本失败，则集群状态将更改为 `upgrade_failed`，Aurora 会创建带有 `rds-final` 前缀的最终快照。要在升级失败后访问已弃用版本上的已还原数据库，请联系 Amazon 支持人员。

您可以使用已还原的数据库集群，只要其状态为 `available`。

您可以使用 Amazon CloudFormation 从数据库集群快照中还原数据库集群。有关更多信息，请参阅《*Amazon CloudFormation 用户指南*》中的 [AWS::RDS::DBCluster](https://docs.amazonaws.cn/AWSCloudFormation/latest/UserGuide/aws-resource-rds-dbcluster.html)。

**注意**  
共享手动数据库集群快照（无论是否加密）可允许经授权的 Amazon 账户直接从快照还原数据库集群，无需复制数据库集群再从中进行还原。有关更多信息，请参阅 [共享数据库集群快照](aurora-share-snapshot.md)。

有关使用 RDS Extended Support 版本还原 Aurora 数据库集群或全局集群的信息，请参阅[使用 Amazon RDS 扩展支持还原Aurora 数据集群或全局集群](extended-support-restoring-db-instance.md)。

## 参数组注意事项
参数组

建议您保留所创建的任何数据库集群快照的数据库参数组和数据库集群参数组，以便还原的数据库集群可以与正确的参数组关联。

除非选择不同的实例，否则默认数据库参数组和数据库集群参数组将与还原的实例关联。默认参数组中没有可用的自定义参数设置。

您可以在还原数据库集群时指定参数组。

有关数据库参数组和数据库集群参数组的更多信息，请参阅[Amazon Aurora 的参数组](USER_WorkingWithParamGroups.md)。

## 安全组注意事项
安全组

还原数据库时集群时，除非选择不同的值，否则默认的虚拟私有云（VPC）、数据库子网组和 VPC 安全组将与还原的实例关联。
+ 如果您使用 Amazon RDS 控制台，则可以指定要与集群关联的自定义 VPC 安全组，或者创建新的 VPC 安全组。
+ 如果您使用的是 Amazon CLI，则可以在 `restore-db-cluster-from-snapshot` 命令中包括 `--vpc-security-group-ids` 选项，从而指定要与集群关联的自定义 VPC 安全组。
+ 如果您使用的是 Amazon RDS API，则可以在 `VpcSecurityGroupIds.VpcSecurityGroupId.N` 操作中包括 `RestoreDBClusterFromSnapshot` 参数。

一旦完成还原，并且您的新数据库集群可用，您还可以通过修改数据库集群来更改 VPC 设置。有关更多信息，请参阅 [修改 Amazon Aurora 数据库集群](Aurora.Modifying.md)。

## Amazon Aurora 注意事项
Aurora 注意事项

利用 Aurora，可将数据库集群快照还原为数据库集群。

利用 Aurora MySQL 和 Aurora PostgreSQL，也可以将数据库集群快照还原为 Aurora Serverless 数据库集群。有关更多信息，请参阅 [还原 Aurora Serverless v1 数据库集群](aurora-serverless.restorefromsnapshot.md)。

利用 Aurora MySQL，可以将数据库集群快照从没有并行查询的集群恢复到具有并行查询的集群。因为并行查询通常用于非常大型的表，所以快照机制是向支持 Aurora MySQL 并行查询的集群引入大量数据的最快方式。有关更多信息，请参阅 [Amazon Aurora MySQL 的并行查询](aurora-mysql-parallel-query.md)。

## 从快照还原


您可以使用 Amazon Web Services 管理控制台、Amazon CLI 或 RDS API 从数据库集群快照还原数据库集群。

### 控制台


**从数据库集群快照还原数据库集群**

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

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

1. 选择要从其还原的数据库集群快照。

1. 对于**操作**，选择**还原快照**。

   将显示**还原快照**页面。

1. 选择您要将数据库集群还原到的数据库引擎版本。

   默认情况下，快照还原到与源数据库集群相同的数据库引擎版本（如果该版本可用）。

1. 对于 **DB instance identifier**（数据库实例标识符），请输入还原后的数据库实例的名称。请注意，Amazon RDS 从您指定的数据库实例标识符派生数据库集群标识符。

1. 指定其他设置，如数据库集群存储配置。

   有关每项设置的信息，请参阅[Aurora 数据库集群的设置](Aurora.CreateInstance.md#Aurora.CreateInstance.Settings)。

1. 选择 **Restore DB cluster**（还原数据库集群）。

### Amazon CLI


要从数据库集群快照还原数据库集群实例，请使用 Amazon CLI 命令 [restore-db-cluster-from-snapshot](https://awscli.amazonaws.com/v2/documentation/api/latest/reference/rds/restore-db-cluster-from-snapshot.html)。

在该示例中，您将从先前创建的名为 `mydbclustersnapshot` 的数据库集群快照中进行还原。还原为名为 `mynewdbcluster` 的新数据库集群。

您可以指定其它设置，例如数据库引擎版本。如果您未指定引擎版本，则数据库集群将还原到默认引擎版本。

有关每项设置的信息，请参阅[Aurora 数据库集群的设置](Aurora.CreateInstance.md#Aurora.CreateInstance.Settings)。

**Example**  
对于 Linux、macOS 或 Unix：  
   

```
1. aws rds restore-db-cluster-from-snapshot \
2.     --db-cluster-identifier mynewdbcluster \
3.     --snapshot-identifier mydbclustersnapshot \
4.     --engine aurora-mysql|aurora-postgresql
```
对于：Windows  
   

```
1. aws rds restore-db-cluster-from-snapshot ^
2.     --db-cluster-identifier mynewdbcluster ^
3.     --snapshot-identifier mydbclustersnapshot ^
4.     --engine aurora-mysql|aurora-postgresql
```

在还原数据库集群后，如果您需要具有与以前的数据库集群相同的功能，则必须将数据库集群添加到用于创建数据库快照的数据库集群使用的安全组中。

**重要**  
如果您使用控制台还原数据库集群，则 Amazon RDS 为您的数据库集群自动创建主数据库实例（写入器）。如果您使用 Amazon CLI 还原数据库集群，则必须明确为数据库集群创建主实例。主实例是在数据库集群中创建的第一个实例。如果您未创建主数据库实例，则数据库集群端点将保持 `creating` 状态。  
调用 [create-db-instance](https://docs.amazonaws.cn/cli/latest/reference/rds/create-db-instance.html) Amazon CLI 命令，以便为数据库集群创建主实例。包括数据库集群名称以作为 `--db-cluster-identifier` 选项值。

### RDS API


要从数据库集群快照还原数据库集群，请使用以下参数调用 RDS API 操作 [RestoreDBClusterFromSnapshot](https://docs.amazonaws.cn/AmazonRDS/latest/APIReference/API_RestoreDBClusterFromSnapshot.html)：
+ `DBClusterIdentifier` 
+ `SnapshotIdentifier` 

**重要**  
如果您使用控制台还原数据库集群，则 Amazon RDS 为您的数据库集群自动创建主数据库实例（写入器）。如果您使用 RDS API 还原数据库集群，则必须明确为数据库集群创建主实例。主实例是在数据库集群中创建的第一个实例。如果您未创建主数据库实例，则数据库集群端点将保持 `creating` 状态。  
调用 RDS API 操作 [CreateDBInstance](https://docs.amazonaws.cn/AmazonRDS/latest/APIReference/API_CreateDBInstance.html) 以创建数据库集群的主实例。包括数据库集群的名称作为 `DBClusterIdentifier` 参数值。

# 数据库集群快照复制


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

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

**注意**  
Amazon 根据您保留的 Amazon Aurora 备份和快照数据量以及您保留的时间对您进行收费。有关与 Aurora 备份和快照关联的存储的信息，请参阅[了解 Amazon Aurora 备份存储使用量](aurora-storage-backup.md)。有关 Aurora 存储的定价信息，请参阅 [Amazon RDS for Aurora 定价](https://www.amazonaws.cn/rds/aurora/pricing)。

查看数据库集群快照复制的限制和注意事项。要复制数据库集群快照，请参阅以下主题之一。
+ [使用 Amazon Web Services 管理控制台复制数据库集群快照](USER_CopyDBClusterSnapshot.CrossRegion.md)
+ [使用 Amazon CLI 或 Amazon RDS API 复制未加密的数据库集群快照](USER_CopyDBClusterSnapshot.Unencrypted.CrossRegion.md)
+ [使用 Amazon CLI 或 Amazon RDS API 复制加密的数据库集群快照](USER_CopyDBClusterSnapshot.Encrypted.CrossRegion.md)
+ [跨账户复制数据库集群快照](USER_CopyDBClusterSnapshot.CrossAccount.md)

# 使用 Amazon Web Services 管理控制台复制数据库集群快照
使用 Amazon Web Services 管理控制台复制数据库集群快照

使用此主题中的过程复制数据库集群快照。如果源数据库引擎为 Aurora，则您的快照是数据库集群快照。

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

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

此程序可用于在同一 Amazon Web Services 区域或跨区域复制加密和未加密的数据库集群快照。

要在正在进行复制时取消操作，请在数据库集群快照处于**正在复制**状态时删除目标数据库集群快照。

在复制数据库集群快照之前，请查看[限制](aurora-copy-snapshot.md#aurora-copy-snapshot.Limitations)和[快照复制注意事项](aurora-copy-snapshot.md#aurora-copy-snapshot.Considerations)。

**复制数据库集群快照**

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

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

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

1. 选择**操作**，然后选择**复制快照**。  
![\[带有源和目标配置选项的数据库集群快照复制界面。\]](http://docs.amazonaws.cn/AmazonRDS/latest/AuroraUserGuide/images/action-copy-db-cluster-snapshot.png)

1. （可选）要将数据库集群快照复制到其他 Amazon Web Services 区域，请为 **Destination Region**（目标区域）选择该 Amazon Web Services 区域。

1. 在 **New DB Snapshot Identifier (新数据库实例标识符)** 中输入数据库集群快照副本的名称。

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

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

## 限制


复制快照时，存在以下一些限制：
+ 您不能向或者从以下 Amazon Web Services 区域复制快照：
  + 中国（北京）
  + China (Ningxia)
+ 您可以在 Amazon GovCloud（美国东部）和 Amazon GovCloud（美国西部）之间复制快照。但是，您不能在这些 Amazon GovCloud (US) 区域和商业 Amazon Web Services 区域之间复制快照。
+ 如果您在目标快照可用之前删除了源快照，则快照复制会失败。在删除源快照之前，请确保目标快照的状态为 `AVAILABLE`。
+ 每个账户最多可以同时进行到同一目标区域的五个快照复制请求。
+ 当您为同一源数据库实例请求多个快照副本时，它们将在内部排队。在先前的快照副本完成之后，稍后请求的副本才会启动。有关更多信息，请参阅 Amazon 知识中心里的[为什么我的 EC2 AMI 或 EBS 快照创建速度很慢？](https://www.amazonaws.cn/premiumsupport/knowledge-center/ebs-snapshot-ec2-ami-creation-slow/)。
+ 根据所涉及的 Amazon Web Services 区域和要复制的数据量，可能需要数小时才能完成跨区域快照复制。有时，某一给定的源区域可能会发出大量跨区域快照复制请求。在这种情况下，Amazon RDS 可能会将来自该源区域的新跨区域复制请求排入队列，直至某些区域正在进行的复制完成。当复制请求在队列中时，不显示有关这些复制请求的进度信息。复制开始后即显示进度信息。
+ Aurora 不支持增量快照。Aurora 数据库集群快照副本始终存储为完整副本。完整快照副本包含还原数据库集群需要的所有数据和元数据。

## 快照复制注意事项
注意事项

以下是复制快照时的注意事项。

**Topics**
+ [

### 共享快照复制注意事项
](#aurora-copy-snapshot.Shared)
+ [

### 加密的数据库集群快照复制注意事项
](#aurora-copy-snapshot.Encryption)
+ [

### 跨区域快照复制注意事项
](#aurora-copy-snapshot.AcrossRegions)
+ [

### 参数组注意事项
](#aurora-copy-snapshot.Parameters)

### 共享快照复制注意事项
共享快照复制

您可以复制其他 Amazon 账户与您共享的快照。在某些情况下，您可以从另一个 Amazon 账户复制共享的加密快照。在这些情况下，您必须有权访问用于加密快照的 Amazon KMS key。有关更多信息，请参阅 [共享加密的快照](share-encrypted-snapshot.md)。

#### 跨区域和跨账户复制只需一个步骤


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

### 加密的数据库集群快照复制注意事项
加密的数据库集群快照

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

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

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

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

**注意**  
对于 Amazon Aurora 数据库集群快照，在复制快照时，您无法对未加密的数据库集群快照进行加密。

要复制加密的数据库集群快照，请参阅以下主题。
+ [使用 Amazon CLI 或 Amazon RDS API 复制加密的数据库集群快照](USER_CopyDBClusterSnapshot.Encrypted.CrossRegion.md)
+ [跨账户复制数据库集群快照](USER_CopyDBClusterSnapshot.CrossAccount.md)

### 跨区域快照复制注意事项
跨区域复制

您可以跨 Amazon Web Services 区域复制数据库集群快照。但是，跨区域快照复制具有某些限制和注意事项。

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

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

跨区域快照复制需要支付数据传输费用。跨区域快照复制会在目标数据中创建完整副本，但数据传输费用是递增的。增量数据包括自上次复制以来添加到客户数据库中的新数据，以及对现有数据所做的任何更改。有关更多信息，请参阅《Amazon Backup 开发人员指南》**中的 [Creating backup copies across Amazon Web Services 区域](https://docs.amazonaws.cn/aws-backup/latest/devguide/cross-region-backup.html)。

**注意**  
Aurora 复制在目标区域中创建快照的完整副本所需的最低数据量。在区域之间复制快照时会收取数据传输费用。

### 参数组注意事项
参数组注意事项

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

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

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

# 使用 Amazon CLI 或 Amazon RDS API 复制未加密的数据库集群快照
复制未加密的数据库集群快照

使用以下各节中的过程，通过 Amazon Web Services 管理控制台、Amazon CLI 或 Amazon RDS API 复制未加密的数据库集群快照。

要在正在进行复制时取消操作，请在数据库集群快照处于**正在复制**状态时删除由 `--target-db-cluster-snapshot-identifier` 或 `TargetDBClusterSnapshotIdentifier` 标识的目标数据库集群快照。

## 控制台


要使用 Amazon Web Services 管理控制台复制数据库集群快照，请参阅[使用 Amazon Web Services 管理控制台复制数据库集群快照](USER_CopyDBClusterSnapshot.CrossRegion.md)。

## Amazon CLI


要复制数据库快照，请使用 Amazon CLI [copy-db-cluster-snapshot](https://docs.amazonaws.cn/cli/latest/reference/rds/copy-db-cluster-snapshot.html) 命令。如果您将快照复制到其他 Amazon Web Services 区域，请在要将快照复制到其中的 Amazon Web Services 区域运行命令。

以下选项用于复制未加密的数据库集群快照：
+ `--source-db-cluster-snapshot-identifier` – 要复制的加密数据库集群快照的标识符。如果您正在将快照复制到另一个 Amazon Web Services 区域，源 Amazon Web Services 区域中的此标识符必须为 ARN 格式。
+ `--target-db-cluster-snapshot-identifier` – 加密数据库集群快照的新副本的标识符。

以下代码在运行命令的 Amazon Web Services 区域中创建名为 `myclustersnapshotcopy` 的数据库集群快照 `arn:aws:rds:us-east-1:123456789012:cluster-snapshot:aurora-cluster1-snapshot-20130805` 的副本。创建副本时，原始快照上的所有标签都将复制到快照副本。

**Example**  
对于 Linux、macOS 或 Unix：  

```
aws rds copy-db-cluster-snapshot \
  --source-db-cluster-snapshot-identifier arn:aws:rds:us-east-1:123456789012:cluster-snapshot:aurora-cluster1-snapshot-20130805 \
  --target-db-cluster-snapshot-identifier myclustersnapshotcopy \
  --copy-tags
```
对于 Windows：  

```
aws rds copy-db-cluster-snapshot ^
  --source-db-cluster-snapshot-identifier arn:aws:rds:us-east-1:123456789012:cluster-snapshot:aurora-cluster1-snapshot-20130805 ^
  --target-db-cluster-snapshot-identifier myclustersnapshotcopy ^
  --copy-tags
```

## RDS API


要复制数据库集群快照，请使用 Amazon RDS API [CopyDBClusterSnapshot](https://docs.amazonaws.cn/AmazonRDS/latest/APIReference/API_CopyDBClusterSnapshot.html) 操作。如果您将快照复制到其他 Amazon Web Services 区域，请在要将快照复制到其中的 Amazon Web Services 区域执行操作。

以下参数用于复制未加密的数据库集群快照：
+ `SourceDBClusterSnapshotIdentifier` – 要复制的加密数据库集群快照的标识符。如果您正在将快照复制到另一个 Amazon Web Services 区域，源 Amazon Web Services 区域中的此标识符必须为 ARN 格式。
+ `TargetDBClusterSnapshotIdentifier` – 加密数据库集群快照的新副本的标识符。

以下代码在 美国西部（加利福尼亚北部） 区域中创建名为 `arn:aws:rds:us-east-1:123456789012:cluster-snapshot:aurora-cluster1-snapshot-20130805` 的快照 `myclustersnapshotcopy` 的副本。创建副本时，原始快照上的所有标签都将复制到快照副本。

**Example**  

```
https://rds.us-west-1.amazonaws.com/
   ?Action=CopyDBClusterSnapshot
   &CopyTags=true
   &SignatureMethod=HmacSHA256
   &SignatureVersion=4
   &SourceDBSnapshotIdentifier=arn%3Aaws%3Ards%3Aus-east-1%3A123456789012%3Acluster-snapshot%3Aaurora-cluster1-snapshot-20130805
   &TargetDBSnapshotIdentifier=myclustersnapshotcopy
   &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
```

# 使用 Amazon CLI 或 Amazon RDS API 复制加密的数据库集群快照
复制加密的数据库集群快照

使用以下各节中的过程，通过 Amazon Web Services 管理控制台、Amazon CLI 或 Amazon RDS API 复制加密的数据库集群快照。

要在正在进行复制时取消操作，请在数据库集群快照处于**正在复制**状态时删除由 `--target-db-cluster-snapshot-identifier` 或 `TargetDBClusterSnapshotIdentifier` 标识的目标数据库集群快照。

## 控制台


要使用 Amazon Web Services 管理控制台复制数据库集群快照，请参阅[使用 Amazon Web Services 管理控制台复制数据库集群快照](USER_CopyDBClusterSnapshot.CrossRegion.md)。

## Amazon CLI


要复制数据库快照，请使用 Amazon CLI [copy-db-cluster-snapshot](https://docs.amazonaws.cn/cli/latest/reference/rds/copy-db-cluster-snapshot.html) 命令。如果您将快照复制到其他 Amazon Web Services 区域，请在要将快照复制到其中的 Amazon Web Services 区域运行命令。

以下选项用于复制加密的数据库集群快照：
+ `--source-db-cluster-snapshot-identifier` – 要复制的加密数据库集群快照的标识符。如果您正在将快照复制到另一个 Amazon Web Services 区域，源 Amazon Web Services 区域中的此标识符必须为 ARN 格式。
+ `--target-db-cluster-snapshot-identifier` – 加密数据库集群快照的新副本的标识符。
+ `--kms-key-id` - 用于对数据库集群快照副本进行加密的密钥的 KMS 密钥标识符。

  如果数据库集群快照已加密，要在同一 Amazon Web Services 区域中复制快照，并且希望指定新的 KMS 密钥用于加密副本，则可以选择使用该选项。否则，数据库集群快照副本将使用与源数据库集群快照相同的 KMS 密钥进行加密。

  如果数据库集群快照已加密，并且您要将该快照复制到另一 Amazon Web Services 区域，则必须使用该选项。在这种情况下，必须为目标 Amazon Web Services 区域指定 KMS 密钥。

以下代码示例将加密的数据库快照从美国西部（俄勒冈）区域复制到美国东部（弗吉尼亚北部）区域。在美国东部（弗吉尼亚北部）区域调用命令。

**Example**  
对于 Linux、macOS 或 Unix：  

```
aws rds copy-db-cluster-snapshot \
  --source-db-cluster-snapshot-identifier arn:aws:rds:us-west-2:123456789012:cluster-snapshot:aurora-cluster1-snapshot-20161115 \
  --target-db-cluster-snapshot-identifier myclustersnapshotcopy \
  --kms-key-id my-us-east-1-key
```
对于 Windows：  

```
aws rds copy-db-cluster-snapshot ^
  --source-db-cluster-snapshot-identifier arn:aws:rds:us-west-2:123456789012:cluster-snapshot:aurora-cluster1-snapshot-20161115 ^
  --target-db-cluster-snapshot-identifier myclustersnapshotcopy ^
  --kms-key-id my-us-east-1-key
```

## RDS API


要复制数据库集群快照，请使用 Amazon RDS API [CopyDBClusterSnapshot](https://docs.amazonaws.cn/AmazonRDS/latest/APIReference/API_CopyDBClusterSnapshot.html) 操作。如果您将快照复制到其他 Amazon Web Services 区域，请在要将快照复制到其中的 Amazon Web Services 区域执行操作。

以下参数用于复制加密的数据库集群快照：
+ `SourceDBClusterSnapshotIdentifier` – 要复制的加密数据库集群快照的标识符。如果您正在将快照复制到另一个 Amazon Web Services 区域，源 Amazon Web Services 区域中的此标识符必须为 ARN 格式。
+ `TargetDBClusterSnapshotIdentifier` – 加密数据库集群快照的新副本的标识符。
+ `KmsKeyId` - 用于对数据库集群快照副本进行加密的密钥的 KMS 密钥标识符。

  如果数据库集群快照已加密，要在同一 Amazon Web Services 区域中复制快照，并且指定新的 KMS 密钥用于加密副本，则可以选择使用该参数。否则，数据库集群快照副本将使用与源数据库集群快照相同的 KMS 密钥进行加密。

  如果数据库集群快照已加密，并且您要将该快照复制到另一 Amazon Web Services 区域，则必须使用该参数。在这种情况下，必须为目标 Amazon Web Services 区域指定 KMS 密钥。
+ `PreSignedUrl` – 如果您将快照复制到其他 Amazon Web Services 区域，必须指定 `PreSignedUrl` 参数。`PreSignedUrl` 值必须是一个 URL，包含要在源 Amazon Web Services 区域（从中复制数据库集群快照）中调用的 `CopyDBClusterSnapshot` 操作的签名版本 4 签名的请求。要了解有关使用预签名 URL 的更多信息，请参阅 [CopyDBClusterSnapshot](https://docs.amazonaws.cn/AmazonRDS/latest/APIReference/API_CopyDBClusterSnapshot.html)。

以下代码示例将加密的数据库快照从 美国西部（俄勒冈） 区域复制到 US East (N. Virginia) 区域。在 US East (N. Virginia) 区域中调用操作。

**Example**  

```
https://rds.us-east-1.amazonaws.com/
    ?Action=CopyDBClusterSnapshot
    &KmsKeyId=my-us-east-1-key
    &PreSignedUrl=https%253A%252F%252Frds.us-west-2.amazonaws.com%252F
         %253FAction%253DCopyDBClusterSnapshot
         %2526DestinationRegion%253Dus-east-1
         %2526KmsKeyId%253Dmy-us-east-1-key
         %2526SourceDBClusterSnapshotIdentifier%253Darn%25253Aaws%25253Ards%25253Aus-west-2%25253A123456789012%25253Acluster-snapshot%25253Aaurora-cluster1-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
    &SourceDBClusterSnapshotIdentifier=arn%3Aaws%3Ards%3Aus-west-2%3A123456789012%3Acluster-snapshot%3Aaurora-cluster1-snapshot-20161115
    &TargetDBClusterSnapshotIdentifier=myclustersnapshotcopy
    &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
```

# 跨账户复制数据库集群快照
跨账户复制数据库集群快照

您可以允许其他 Amazon 账户通过使用 Amazon RDS API `ModifyDBClusterSnapshotAttribute` 和 `CopyDBClusterSnapshot` 操作来复制您指定的数据库集群快照。您只能在同一 Amazon Web Services 区域中跨账户复制数据库集群快照。跨账户复制的流程如下，其中账户 A 提供可复制的快照，账户 B 复制该快照。

1. 使用账户 A，调用 `ModifyDBClusterSnapshotAttribute`，为 **restore** 参数指定 `AttributeName`，并为 `ValuesToAdd` 参数指定账户 B 的 ID。

1. (如果快照已加密) 使用账户 A，更新 KMS 密钥的密钥策略，首先将账户 B 的 ARN 添加为 `Principal`，然后允许 `kms:CreateGrant` 操作。

1. （如果快照已加密）使用账户 B，选择或创建用户，然后将允许它使用 KMS 密钥复制加密数据库集群快照的 IAM policy 附加到该用户。

1. 使用账户 B，调用 `CopyDBClusterSnapshot` 并使用 `SourceDBClusterSnapshotIdentifier` 参数指定要复制的数据库集群快照的 ARN，其中必须包括账户 A 的 ID。

要列出允许还原数据库集群快照的所有 Amazon 账户，请使用 [ DescribeDBSnapshotAttributes](https://docs.amazonaws.cn/AmazonRDS/latest/APIReference/API_DescribeDBSnapshotAttributes.html) 或 [ DescribeDBClusterSnapshotAttributes](https://docs.amazonaws.cn/AmazonRDS/latest/APIReference/API_DescribeDBClusterSnapshotAttributes.html) API 操作。

要取消 Amazon 账户的共享权限，请使用 `ModifyDBSnapshotAttribute` 或 `ModifyDBClusterSnapshotAttribute` 操作并将 `AttributeName` 设置为 `restore`，然后在 `ValuesToRemove` 参数中删除账户的 ID。

## 将未加密的数据库集群快照复制到另一账户
将未加密的数据库集群快照复制到另一账户

使用以下步骤将未加密的数据库集群快照复制到同一 Amazon Web Services 区域中的另一账户。

1. 在数据库集群快照的源账户中，调用 `ModifyDBClusterSnapshotAttribute`，为 **restore** 参数指定 `AttributeName`，并为 `ValuesToAdd` 参数指定目标账户的 ID。

   使用账户 `987654321` 运行以下示例将允许两个 Amazon 账户标识符（`123451234512` 和 `123456789012`）恢复名为 `manual-snapshot1` 的数据库集群快照。

   ```
   https://rds.us-west-2.amazonaws.com/
   	?Action=ModifyDBClusterSnapshotAttribute
   	&AttributeName=restore
   	&DBClusterSnapshotIdentifier=manual-snapshot1
   	&SignatureMethod=HmacSHA256&SignatureVersion=4
   	&ValuesToAdd.member.1=123451234512
   	&ValuesToAdd.member.2=123456789012
   	&Version=2014-10-31
   	&X-Amz-Algorithm=AWS4-HMAC-SHA256
   	&X-Amz-Credential=AKIADQKE4SARGYLE/20150922/us-west-2/rds/aws4_request
   	&X-Amz-Date=20150922T220515Z
   	&X-Amz-SignedHeaders=content-type;host;user-agent;x-amz-content-sha256;x-amz-date
   	&X-Amz-Signature=ef38f1ce3dab4e1dbf113d8d2a265c67d17ece1999ffd36be85714ed36dddbb3
   ```

1. 在目标账户中，调用 `CopyDBClusterSnapshot` 并使用 `SourceDBClusterSnapshotIdentifier` 参数指定要复制的数据库集群快照的 ARN，其中必须包括源账户的 ID。

   使用账户 `123451234512` 运行以下示例将从账户 `aurora-cluster1-snapshot-20130805` 复制数据库集群快照 `987654321`，然后创建名为 `dbclustersnapshot1` 的数据库集群快照。

   ```
   https://rds.us-west-2.amazonaws.com/
      ?Action=CopyDBClusterSnapshot
      &CopyTags=true
      &SignatureMethod=HmacSHA256
      &SignatureVersion=4
      &SourceDBClusterSnapshotIdentifier=arn:aws:rds:us-west-2:987654321:cluster-snapshot:aurora-cluster1-snapshot-20130805
      &TargetDBClusterSnapshotIdentifier=dbclustersnapshot1
      &Version=2013-09-09
      &X-Amz-Algorithm=AWS4-HMAC-SHA256
      &X-Amz-Credential=AKIADQKE4SARGYLE/20150922/us-west-2/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
   ```

## 将加密的数据库集群快照复制到另一账户
将加密的数据库集群快照复制到另一账户

使用以下步骤将加密的数据库集群快照复制到同一 Amazon Web Services 区域中的另一账户。

1. 在数据库集群快照的源账户中，调用 `ModifyDBClusterSnapshotAttribute`，为 **restore** 参数指定 `AttributeName`，并为 `ValuesToAdd` 参数指定目标账户的 ID。

   使用账户 `987654321` 运行以下示例将允许两个 Amazon 账户标识符（`123451234512` 和 `123456789012`）恢复名为 `manual-snapshot1` 的数据库集群快照。

   ```
   https://rds.us-west-2.amazonaws.com/
   	?Action=ModifyDBClusterSnapshotAttribute
   	&AttributeName=restore
   	&DBClusterSnapshotIdentifier=manual-snapshot1
   	&SignatureMethod=HmacSHA256&SignatureVersion=4
   	&ValuesToAdd.member.1=123451234512
   	&ValuesToAdd.member.2=123456789012
   	&Version=2014-10-31
   	&X-Amz-Algorithm=AWS4-HMAC-SHA256
   	&X-Amz-Credential=AKIADQKE4SARGYLE/20150922/us-west-2/rds/aws4_request
   	&X-Amz-Date=20150922T220515Z
   	&X-Amz-SignedHeaders=content-type;host;user-agent;x-amz-content-sha256;x-amz-date
   	&X-Amz-Signature=ef38f1ce3dab4e1dbf113d8d2a265c67d17ece1999ffd36be85714ed36dddbb3
   ```

1. 在数据库集群快照的源账户中，在加密数据库集群快照所在的同一个 Amazon Web Services 区域中创建自定义 KMS 密钥。在创建客户自主管理型密钥时，您可以为目标 Amazon Web Services 账户提供对该密钥的访问权限。有关更多信息，请参阅 [创建客户自主管理型密钥并授予对它的访问权限](share-encrypted-snapshot.md#share-encrypted-snapshot.cmk)。

1. 将快照复制到目标 Amazon Web Services 账户并与其共享。有关更多信息，请参阅 [从源账户复制和共享快照](share-encrypted-snapshot.md#share-encrypted-snapshot.share)。

1. 在目标账户中，调用 `CopyDBClusterSnapshot` 并使用 `SourceDBClusterSnapshotIdentifier` 参数指定要复制的数据库集群快照的 ARN，其中必须包括源账户的 ID。

   使用账户 `123451234512` 运行以下示例将从账户 `aurora-cluster1-snapshot-20130805` 复制数据库集群快照 `987654321`，然后创建名为 `dbclustersnapshot1` 的数据库集群快照。

   ```
   https://rds.us-west-2.amazonaws.com/
      ?Action=CopyDBClusterSnapshot
      &CopyTags=true
      &SignatureMethod=HmacSHA256
      &SignatureVersion=4
      &SourceDBClusterSnapshotIdentifier=arn:aws:rds:us-west-2:987654321:cluster-snapshot:aurora-cluster1-snapshot-20130805
      &TargetDBClusterSnapshotIdentifier=dbclustersnapshot1
      &Version=2013-09-09
      &X-Amz-Algorithm=AWS4-HMAC-SHA256
      &X-Amz-Credential=AKIADQKE4SARGYLE/20150922/us-west-2/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
   ```

# 共享数据库集群快照


使用 Amazon RDS，您可以按以下方式共享手动数据库集群快照：
+ 共享手动数据库集群快照（无论是否加密）可允许经授权的 Amazon 账户复制快照。
+ 共享手动数据库集群快照（无论是否加密）可允许经授权的 Amazon 账户直接从快照还原数据库集群，无需复制数据库集群再从中进行还原。

**注意**  
要共享自动数据库集群快照，请通过复制自动快照来创建手动数据库集群快照，然后共享该副本。此过程也适用于 Amazon Backup 生成的资源。

有关复制快照的更多信息，请参阅[数据库集群快照复制](aurora-copy-snapshot.md)。有关从数据库集群快照还原数据库实例的更多信息，请参阅[从数据库集群快照还原](aurora-restore-snapshot.md)。

有关从数据库群集快照还原数据库群集的更多信息，请参阅 [备份和还原 Aurora 数据库集群的概述](Aurora.Managing.Backups.md)。

您可以与最多 20 个其他 Amazon Web Services 账户共享手动快照。

与其它 Amazon Web Services 账户共享手动快照时存在以下限制：
+ 当使用 Amazon Command Line Interface (Amazon CLI) 或 Amazon RDS API 从共享的快照还原数据库集群时，您必须指定共享快照的 Amazon 资源名称（ARN）作为快照标识符。

在以下各节中学习共享快照、公有快照和加密快照。还可以学习如何停止共享快照。

**Topics**
+ [

## 共享快照
](#aurora-share-snapshot.Sharing)
+ [

# 共享公有快照
](aurora-share-snapshot.public.md)
+ [

# 共享加密的快照
](share-encrypted-snapshot.md)
+ [

# 停止快照共享
](share-snapshot-stop.md)

## 共享快照


您可以使用 Amazon Web Services 管理控制台、Amazon CLI 或 RDS API 共享数据库集群快照。

### 控制台


使用 Amazon RDS 控制台，可以与多达 20 个 Amazon Web Services 账户共享手动数据库集群快照。您还可以使用该控制台停止与一个或多个账户共享手动快照。

**使用 Amazon RDS 控制台共享手动数据库集群快照**

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

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

1. 选择要共享的手动快照。

1. 对于 **Actions**（操作），请选择 **Share snapshot**（共享快照）。

1. 为 **DB snapshot visibility (数据库快照可见性)** 选择以下一个选项。
   + 如果源未加密，则选择**公有**以允许所有 Amazon Web Services 账户从您的手动数据库集群快照还原数据库集群，或选择**私有**以仅允许您指定的 Amazon Web Services 账户从手动数据库集群快照还原数据库集群。
**警告**  
如果将**数据库快照可见性**设置为**公有**，则所有 Amazon Web Services 账户均可从您的手动数据库集群快照还原数据库集群，并且可访问您的数据。请勿将包含私密信息的任何手动数据库集群快照以**公开**形式共享。  
有关更多信息，请参阅 [共享公有快照](aurora-share-snapshot.public.md)。
   + 如果源已加密，由于已加密的快照无法公开共享，**DB snapshot visibility (数据库快照可见性)** 将设为 **Private (私密)**。
**注意**  
无法共享已使用默认 Amazon KMS key 加密的快照。有关如何解决此问题的信息，请参阅[共享加密的快照](share-encrypted-snapshot.md)。

1. 对于 **Amazon 账户 ID**，输入您想要允许从您的手动快照还原数据库集群的账户的 Amazon Web Services 账户标识符，然后选择**添加**。重复操作以加入其它 Amazon Web Services 账户标识符，最多可包含 20 个 Amazon Web Services 账户。

   如果您在许可账户列表中错加了某个 Amazon Web Services 账户标识符，可以选择错误 Amazon Web Services 账户标识符右侧的**删除**将其从列表中删除。  
![\[允许 Amazon Web Services 账户还原手动数据库集群快照\]](http://docs.amazonaws.cn/AmazonRDS/latest/AuroraUserGuide/images/ShareSnapshot_add.png)

1. 为您想要允许还原手动快照的所有 Amazon Web Services 账户添加标识符以后，选择**保存**以保存您的更改。

### Amazon CLI


要共享数据库集群快照，请使用 `aws rds modify-db-cluster-snapshot-attribute` 命令。使用 `--values-to-add` 参数添加有权还原手动快照的 Amazon Web Services 账户的 ID 列表。

**Example 与单个账户共享快照**  
以下示例使 Amazon Web Services 账户标识符 `123456789012` 能够还原名为 `cluster-3-snapshot` 的数据库集群快照。  
对于 Linux、macOS 或 Unix：  

```
aws rds modify-db-cluster-snapshot-attribute \
--db-cluster-snapshot-identifier cluster-3-snapshot \
--attribute-name restore \
--values-to-add 123456789012
```
对于：Windows  

```
aws rds modify-db-cluster-snapshot-attribute ^
--db-cluster-snapshot-identifier cluster-3-snapshot ^
--attribute-name restore ^
--values-to-add 123456789012
```

**Example 与多个账户共享快照**  
以下示例使两个 Amazon Web Services 账户标识符（`111122223333` 和 `444455556666`）能够还原名为 `manual-cluster-snapshot1` 的数据库集群快照。  
对于 Linux、macOS 或 Unix：  

```
aws rds modify-db-cluster-snapshot-attribute \
--db-cluster-snapshot-identifier manual-cluster-snapshot1 \
--attribute-name restore \
--values-to-add {"111122223333","444455556666"}
```
对于：Windows  

```
aws rds modify-db-cluster-snapshot-attribute ^
--db-cluster-snapshot-identifier manual-cluster-snapshot1 ^
--attribute-name restore ^
--values-to-add "[\"111122223333\",\"444455556666\"]"
```
使用 Windows 命令提示符时，必须在 JSON 代码中转义双引号 (")，方法是使用反斜杠 (\$1) 作为其前缀。

要列出能够用于还原快照的 Amazon Web Services 账户，请使用 [https://docs.amazonaws.cn/cli/latest/reference/rds/describe-db-cluster-snapshot-attributes.html](https://docs.amazonaws.cn/cli/latest/reference/rds/describe-db-cluster-snapshot-attributes.html) Amazon CLI 命令。

### RDS API


您还可以使用 Amazon RDS API 与其它 Amazon Web Services 账户共享手动数据库集群快照。为此，请调用 [https://docs.amazonaws.cn/AmazonRDS/latest/APIReference/API_ModifyDBClusterSnapshotAttribute.html](https://docs.amazonaws.cn/AmazonRDS/latest/APIReference/API_ModifyDBClusterSnapshotAttribute.html) 操作。为 `AttributeName` 指定 `restore`，并使用 `ValuesToAdd` 参数添加有权还原手动快照的 Amazon Web Services 账户的 ID 列表。

要将手动快照设为公有并允许所有 Amazon Web Services 账户进行还原，请使用值 `all`。但请注意，若任何手动快照包含您不想向所有 Amazon Web Services 账户公开的私有信息，则不要添加 `all` 值。此外，由于此类快照不支持公开共享，请不要为已加密的快照指定 `all`。

要列出有权还原快照的所有 Amazon Web Services 账户，请使用 [https://docs.amazonaws.cn/AmazonRDS/latest/APIReference/API_DescribeDBClusterSnapshotAttributes.html](https://docs.amazonaws.cn/AmazonRDS/latest/APIReference/API_DescribeDBClusterSnapshotAttributes.html) API 操作。

# 共享公有快照


您可以将未加密的手动快照作为公有快照进行共享，这样所有 Amazon Web Services 账户均可使用此快照。当以公有快照形式共享快照时，确保不要将您的私有信息包含在公有快照之中。

公开共享快照时，它会授予所有 Amazon Web Services 账户复制快照并从中创建数据库集群的权限。

您不需要为其他账户拥有的公有快照的备份存储付费。您只需为您拥有的快照付费。

如果您复制公有快照，则您拥有该副本。您需要为快照副本的备份存储付费。如果您从公有快照创建数据库集群，则需要为该数据库集群付费。有关 Amazon Aurora 定价信息，请参阅 [Aurora 定价页面](https://www.amazonaws.cn/rds/aurora/pricing)。

您只能删除您拥有的公有快照。要删除共享或公有快照，务必登录到拥有快照的 Amazon Web Services 账户。

## 查看其它 Amazon Web Services 账户拥有的公有快照


您可以在 Amazon RDS 控制台的**快照**页面的**公有**选项卡上查看特定 Amazon Web Services 区域中其它账户拥有的公有快照。您的快照（由您账户拥有的快照）不会显示在此选项卡上。

**要查看公有快照**

1. 通过以下网址打开 Amazon RDS 控制台：[https://console.aws.amazon.com/rds/](https://console.amazonaws.cn/rds/)。

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

1. 选择 **Public (公有)** 选项卡。

   此时将显示公有快照。您可以在 **Owner (拥有者)** 列中查看哪个账户拥有公有快照。
**注意**  
您可能需要通过选择 **Public snapshots (公有快照)** 列表右上角的齿轮图标来修改页面首选项，才能看到此列。

## 查看您拥有的公有快照


您可以使用以下 Amazon CLI 命令（仅限 Unix）查看您的 Amazon Web Services 账户在特定 Amazon Web Services 区域中拥有的公有快照。

```
aws rds describe-db-cluster-snapshots --snapshot-type public --include-public | grep account_number
```

如果您有公共快照，则返回的输出与以下示例类似。

```
"DBClusterSnapshotArn": "arn:aws:rds:us-west-2:123456789012:cluster-snapshot:myclustersnapshot1",
"DBClusterSnapshotArn": "arn:aws:rds:us-west-2:123456789012:cluster-snapshot:myclustersnapshot2",
```

## 共享来自已弃用数据库引擎版本的公有快照


不支持从已弃用的数据库引擎版本还原或复制公有快照。要使现有的不受支持的公有快照可供还原或复制，请执行以下步骤：

1. 将快照标记为私有。

1. 还原快照。

1. 将还原的数据库集群升级到受支持的引擎版本。

1. 创建新的快照。

1. 公开重新共享快照。

# 共享加密的快照
共享加密的快照

您可共享使用 AES-256 加密算法“静态”加密的数据库集群快照，如[加密 Amazon Aurora 资源](Overview.Encryption.md)中所述。

以下限制适用于共享加密快照：
+ 您无法公开共享加密的快照。
+ 如果某个快照已使用共享该快照的 Amazon Web Services 账户的默认 KMS 密钥进行加密，则您无法共享该快照。

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

要解决默认 KMS 密钥问题，请执行以下任务：

1. [创建客户自主管理型密钥并授予对它的访问权限](#share-encrypted-snapshot.cmk).

1. [从源账户复制和共享快照](#share-encrypted-snapshot.share).

1. [复制目标账户中的共享快照](#share-encrypted-snapshot.target).

## 创建客户自主管理型密钥并授予对它的访问权限


首先，在加密数据库集群快照所在的同一个 Amazon Web Services 区域中创建一个自定义 KMS 密钥。在创建客户自主管理型密钥时，您可以为另一个 Amazon Web Services 账户提供对它的访问权限。

**创建客户自主管理型密钥并授予对它的访问权限**

1. 从源 Amazon Web Services 账户登录 Amazon Web Services 管理控制台。

1. 从 [https://console.aws.amazon.com/kms](https://console.amazonaws.cn/kms) 打开 Amazon KMS 控制台。

1. 要更改 Amazon Web Services 区域，请使用页面右上角的区域选择器。

1. 在导航窗格中，选择**客户托管密钥**。

1. 选择 **Create key**。

1. 在**配置密钥**页面上：

   1. 对于**密钥类型**，选择**对称**。

   1. 对于**密钥用途**，选择**加密和解密**。

   1. 展开 **Advanced options (高级选项)**。

   1. 对于**密钥材料来源**，选择 **KMS**。

   1. 对于**区域性**，请选择**单区域密钥**。

   1. 选择**下一步**。

1. 在**添加标签**页面上：

   1. 对于**别名**，输入您的 KMS 密钥的显示名称，例如 **share-snapshot**。

   1. （可选）为 KMS 密钥输入描述。

   1. （可选）向 KMS 密钥添加标签。

   1. 选择**下一步**。

1. 在**定义密钥管理权限**页面上，选择**下一步**。

1. 在**定义密钥使用权限**页面上：

   1. 对于**其他 Amazon Web Services 账户**，选择**添加另一个 Amazon Web Services 账户**。

   1. 输入您要向其授予访问权限的 Amazon Web Services 账户的 ID。

      您可以向多个 Amazon Web Services 账户授予访问权限。

   1. 选择**下一步**。

1. 查看您的 KMS 密钥，然后选择**完成**。

## 从源账户复制和共享快照


接下来，使用客户自主管理型密钥将源数据库集群快照复制到新快照。然后，您将与目标 Amazon Web Services 账户共享它。

**复制和共享快照**

1. 从源 Amazon Web Services 账户登录 Amazon Web Services 管理控制台。

1. 通过以下网址打开 Amazon RDS 控制台：[https://console.aws.amazon.com/rds/](https://console.amazonaws.cn/rds/)

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

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

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

1. 在**复制快照**页面上：

   1. 对于**目标区域**，选择您在上一个过程中创建客户自主管理型密钥的 Amazon Web Services 区域。

   1. 在 **New DB Snapshot Identifier (新数据库实例标识符)** 中输入数据库集群快照副本的名称。

   1. 对于 **Amazon KMS key**，选择您创建的客户自主管理型密钥。  
![\[选择客户自主管理型密钥。\]](http://docs.amazonaws.cn/AmazonRDS/latest/AuroraUserGuide/images/copy-encrypted-snapshot.png)

   1. 选择**复制快照**。

1. 当快照副本可用时，将其选中。

1. 对于 **Actions**（操作），请选择 **Share snapshot**（共享快照）。

1. 在**快照权限**页面上：

   1. 输入您要与之共享快照副本的 **Amazon Web Services 账户 ID**，然后选择**添加**。

   1. 选择**保存**。

   共享此快照。

## 复制目标账户中的共享快照


现在，您可以复制目标 Amazon Web Services 账户中的共享快照。

**复制共享快照**

1. 从目标 Amazon Web Services 账户登录 Amazon Web Services 管理控制台。

1. 通过以下网址打开 Amazon RDS 控制台：[https://console.aws.amazon.com/rds/](https://console.amazonaws.cn/rds/)

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

1. 选择**与我共享**选项卡。

1. 选择共享快照。

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

1. 按照前面的过程选择用于复制快照的设置，但要使用属于目标账户的 Amazon KMS key。

   选择**复制快照**。

# 停止快照共享


要停止共享数据库集群快照，请删除目标 Amazon Web Services 账户的权限。

## 控制台


**停止与 Amazon Web Services 账户共享手动数据库集群快照**

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

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

1. 选择要停止共享的手动快照。

1. 选择 **Actions**（操作），然后选择 **Share snapshot**（共享快照）。

1. 要移除 Amazon Web Services 账户的权限，请从授权账户列表中选择该账户的 Amazon 账户标识符所对应的**删除**。

1. 选择**保存**以保存您的更改。

## CLI


要从列表中删除 Amazon Web Services 账户标识符，请使用 `--values-to-remove` 参数。

**Example 停止共享快照**  
以下示例禁止 Amazon Web Services 账户 ID 444455556666 还原快照。  
对于 Linux、macOS 或 Unix：  

```
aws rds modify-db-cluster-snapshot-attribute \
--db-cluster-snapshot-identifier manual-cluster-snapshot1 \
--attribute-name restore \
--values-to-remove 444455556666
```
对于：Windows  

```
aws rds modify-db-cluster-snapshot-attribute ^
--db-cluster-snapshot-identifier manual-cluster-snapshot1 ^
--attribute-name restore ^
--values-to-remove 444455556666
```

## RDS API


要移除 Amazon Web Services 账户的共享权限，请使用 [https://docs.amazonaws.cn/AmazonRDS/latest/APIReference/API_ModifyDBClusterSnapshotAttribute.html](https://docs.amazonaws.cn/AmazonRDS/latest/APIReference/API_ModifyDBClusterSnapshotAttribute.html) 操作（`AttributeName` 设置为 `restore`）和 `ValuesToRemove` 参数。要将手动快照标记为私有，请将值 `all` 从 `restore` 属性的值列表中删除。

# 将数据库集群数据导出到 Amazon S3


您可以将数据从实时 Amazon Aurora 数据库集群导出到 Amazon S3 桶。导出过程在后台运行，不会影响活动数据库集群的性能。

原定设置情况下，将导出数据库集群中的所有数据。但是，您可以选择导出特定的一组数据库、方案或表。

Amazon Aurora 克隆数据库集群，从克隆中提取数据，并将数据存储在 Amazon S3 桶中。数据以压缩和一致的 Apache Parquet 格式存储。各个 Parquet 文件的大小通常约为 1-10MB。

导出 Aurora MySQL 版本 2 和版本 3 的快照数据所能获得的更快的性能不适用于导出数据库集群数据。有关更多信息，请参阅 [将数据库集群快照数据导出到 Amazon S3](aurora-export-snapshot.md)。

无论是导出全部数据还是部分数据，您都需要为导出整个数据库集群付费。有关更多信息，请参阅 [Amazon Aurora 定价页面](https://www.amazonaws.cn/rds/aurora/pricing/)。

导出数据后，您可以通过 Amazon Athena 或 Amazon Redshift Spectrum 等工具直接分析导出的数据。有关使用 Athena 读取 Parque 数据的更多信息，请参阅 *Amazon Athena 用户指南*中的 [Parquet SerDe](https://docs.amazonaws.cn/athena/latest/ug/parquet-serde.html)。有关使用 Redshift Spectrum 读取 Parquet 数据的更多信息，请参阅《Amazon Redshift 数据库开发人员指南》中的[从列式数据格式执行 COPY 操作](https://docs.amazonaws.cn/redshift/latest/dg/copy-usage_notes-copy-from-columnar.html)。

功能可用性和支持因每个数据库引擎的特定版本以及 Amazon Web Services 区域而异。有关将数据库集群数据导出到 S3 的版本和区域可用性的更多信息，请参阅 [支持将集群数据导出到 Amazon S3 的区域和 Aurora 数据库引擎](Concepts.Aurora_Fea_Regions_DB-eng.Feature.ExportClusterToS3.md)。

您可以使用以下过程将数据库集群数据导出到 Amazon S3 桶。有关更多详细信息，请参阅以下部分。

**导出数据库集群数据概述**

1. 标识要导出其数据的数据库集群。

1. 设置对 Amazon S3 存储桶的访问权限。

   *存储桶*是 Amazon S3 对象或文件的容器。要提供访问存储桶的信息，请执行以下步骤：

   1. 标识要将数据库集群数据导出到的 S3 桶。S3 桶和数据库集群必须位于同一 Amazon 区域中。有关更多信息，请参阅 [标识要导出到的 Amazon S3 存储桶](export-cluster-data.Setup.md#export-cluster-data.SetupBucket)。

   1. 创建一个 Amazon Identity and Access Management（IAM）角色，用于授予数据库集群导出任务对 S3 桶的访问权限。有关更多信息，请参阅 [使用 IAM 角色提供对 Amazon S3 存储桶的访问权限](export-cluster-data.Setup.md#export-cluster-data.SetupIAMRole)。

1. 创建对称加密 Amazon KMS key 以进行服务器端加密。集群导出任务使用 KMS 密钥在将导出数据写入 S3 时设置 Amazon KMS 服务器端加密。

   KMS 密钥策略必须同时包含 `kms:CreateGrant` 和 `kms:DescribeKey` 权限。有关在 Amazon Aurora 中使用 KMS 密钥的更多信息，请参阅 [Amazon KMS key 管理](Overview.Encryption.Keys.md)。

   如果 KMS 密钥策略中有拒绝语句，则确保显式排除 Amazon 服务主体 `export.rds.amazonaws.com`。

   您可以在您的 Amazon 账户内使用 KMS 密钥，或者您可以使用跨账户 KMS 密钥。有关更多信息，请参阅 [使用跨账户 Amazon KMS key](aurora-export-snapshot.Setup.md#aurora-export-snapshot.CMK)。

1. 使用控制台或 `start-export-task` CLI 命令将数据库集群导出到 Amazon S3。有关更多信息，请参阅 [创建数据库集群导出任务](export-cluster-data.Exporting.md)。

1. 要访问 Amazon S3 存储桶中导出的数据，请参阅 *Amazon Simple Storage Service 用户指南*中的[上传、下载和管理对象](https://docs.amazonaws.cn/AmazonS3/latest/user-guide/upload-download-objects.html)。

在以下各节中，学习设置、导出、监控、取消数据库集群导出任务并对其进行故障排除。

**Topics**
+ [

# 数据库集群导出注意事项
](export-cluster-data.Considerations.md)
+ [

# 设置 Amazon S3 存储桶的访问权限
](export-cluster-data.Setup.md)
+ [

# 创建数据库集群导出任务
](export-cluster-data.Exporting.md)
+ [

# 监控数据库集群导出任务
](export-cluster-data.Monitoring.md)
+ [

# 取消数据库集群导出任务
](export-cluster-data.Canceling.md)
+ [

# 数据库集群导出故障排除
](export-cluster-data.Troubleshooting.md)

# 数据库集群导出注意事项
注意事项

使用以下各节来了解将数据库集群数据导出到 Amazon S3 时的限制、文件命名约定以及数据转换和存储。

**Topics**
+ [

## 限制
](#export-cluster-data.Limits)
+ [

## 文件命名约定
](#export-cluster-data.FileNames)
+ [

## 数据转换和存储格式
](#export-cluster-data.data-types)

## 限制


将数据库集群数据导出到 Amazon S3 有以下限制：
+ 您不能同时为同一个数据库集群运行多个导出任务。这同时适用于完全导出和部分导出。
+ 每个 Amazon Web Services 账户 最多可以执行五个并发数据库快照导出任务。
+ Aurora Serverless v1 数据库集群不支持导出到 S3。
+ Aurora MySQL 和 Aurora PostgreSQL 仅对于预调配的引擎模式支持导出到 S3。
+ 导出到 S3 不支持包含冒号（:）的 S3 前缀。
+ 在导出过程中，S3 文件路径中的以下字符将转换为下划线 (\$1)：

  ```
  \ ` " (space)
  ```
+ 如果数据库、架构或表的名称中包含以下字符以外的字符，则不支持部分导出。但是，您可以导出整个数据库集群。
  + 拉丁字母 (A–Z)
  + 数字 (0–9)
  + 美元符号 (\$1)
  + 下划线 (\$1)
+ 数据库表列名不支持空格 ( ) 和某些字符。在导出过程中会跳过列名中包含以下字符的表：

  ```
  , ; { } ( ) \n \t = (space)
  ```
+ 在导出过程中会跳过其名称中包含斜杠 (/) 的表。
+ 在导出期间，将跳过 Aurora PostgreSQL 临时表和未记录的表。
+ 如果数据包含接近或大于 500MB 的大型对象（例如 BLOB 或 CLOB），则导出失败。
+ 如果表中某个大行的大小接近或大于 2GB，则会在导出过程中略过该表。
+ 对于部分导出，`ExportOnly` 列表的最大大小为 200 KB。
+ 强烈建议您为每个导出任务使用唯一的名称。如果您没有使用唯一的任务名称，可能会收到以下错误消息：

  ExportTaskAlreadyExistsFault：调用 StartExportTask 操作时发生错误 (ExportTaskAlreadyExists)：ID 为 *xxxxx* 的导出任务已存在。
+ 由于某些表可能会被跳过，因此建议您在导出后验证数据中的行数和表数。

## 文件命名约定


特定表的导出数据以 `base_prefix/files` 格式存储，基本前缀如下：

```
export_identifier/database_name/schema_name.table_name/
```

例如：

```
export-1234567890123-459/rdststcluster/mycluster.DataInsert_7ADB5D19965123A2/
```

输出文件使用以下命名约定，其中 *partition\$1index* 是字母数字：

```
partition_index/part-00000-random_uuid.format-based_extension
```

例如：

```
1/part-00000-c5a881bb-58ff-4ee6-1111-b41ecff340a3-c000.gz.parquet
    a/part-00000-d7a881cc-88cc-5ab7-2222-c41ecab340a4-c000.gz.parquet
```

文件命名约定可能会更改。因此，在读取目标表时，我们建议您读取表的基本前缀内的所有内容。

## 数据转换和存储格式
数据转换

将数据库集群导出到 Amazon S3 存储桶时，Amazon Aurora 以 Parquet 格式转换、导出并存储数据。有关更多信息，请参阅 [导出到 Amazon S3 存储桶时的数据转换](aurora-export-snapshot.Considerations.md#aurora-export-snapshot.data-types)。

# 设置 Amazon S3 存储桶的访问权限
设置对 S3 存储桶的访问权限

您标识 AmazonS3 桶，然后授予数据库集群导出任务访问它的权限。

**Topics**
+ [

## 标识要导出到的 Amazon S3 存储桶
](#export-cluster-data.SetupBucket)
+ [

## 使用 IAM 角色提供对 Amazon S3 存储桶的访问权限
](#export-cluster-data.SetupIAMRole)
+ [

## 使用跨账户 Amazon S3 存储桶
](#export-cluster-data.Setup.XAcctBucket)

## 标识要导出到的 Amazon S3 存储桶
标识 S3 桶

标识要将数据库集群数据导出到的 Amazon S3 桶。使用现有 S3 存储桶或创建新的 S3 存储桶。

**注意**  
S3 桶和数据库集群必须位于同一 Amazon 区域中。

有关使用 Amazon S3 存储桶的详细信息，请参阅 *Amazon Simple Storage Service 用户指南*中的以下主题：
+ [如何查看 S3 存储桶的属性？](https://docs.amazonaws.cn/AmazonS3/latest/user-guide/view-bucket-properties.html)
+ [如何为 Amazon S3 存储桶启用默认加密？](https://docs.amazonaws.cn/AmazonS3/latest/user-guide/default-bucket-encryption.html)
+ [如何创建 S3 存储桶？](https://docs.amazonaws.cn/AmazonS3/latest/user-guide/create-bucket.html)

## 使用 IAM 角色提供对 Amazon S3 存储桶的访问权限
使用 IAM 角色提供对 S3 桶的访问权限

将数据库集群数据导出到 Amazon S3 之前，请授予导出任务对 Amazon S3 桶的写入访问权限。

要授予此权限，请创建 IAM 策略以提供对桶的访问权限，然后创建一个 IAM 角色并将该策略附加到该角色。稍后，您可以将此 IAM 角色分配给数据库集群导出任务。

**重要**  
如果计划使用 Amazon Web Services 管理控制台导出数据库集群，则可以选择在导出数据库集群时自动创建 IAM 策略和角色。有关说明，请参阅[创建数据库集群导出任务](export-cluster-data.Exporting.md)。

**授予任务访问 Amazon S3 的权限**

1. 创建一个 IAM 策略。此策略提供允许数据库集群导出任务访问 Amazon S3 的桶和对象权限。

   在策略中，包含以下必需操作，以允许将文件从 Amazon Aurora 桶传输到 S3 桶：
   + `s3:PutObject*`
   + `s3:GetObject*` 
   + `s3:ListBucket` 
   + `s3:DeleteObject*`
   +  `s3:GetBucketLocation`

   在策略中，包含以下资源以标识 S3 桶以及该桶中的对象。以下资源列表显示用于访问 Amazon S3 的 Amazon Resource Name (ARN) 格式。
   + `arn:aws:s3:::amzn-s3-demo-bucket`
   + `arn:aws:s3:::amzn-s3-demo-bucket/*`

   有关为 Amazon Aurora 创建 IAM 策略的更多信息，请参阅 [创建和使用适用于 IAM 数据库访问的 IAM 策略](UsingWithRDS.IAMDBAuth.IAMPolicy.md)。另请参阅 *IAM 用户指南*中的[教程：创建和附加您的第一个客户托管式策略](https://docs.amazonaws.cn//IAM/latest/UserGuide/tutorial_managed-policies.html)。

   以下 Amazon CLI 命令使用这些选项创建一个名为 `ExportPolicy` 的 IAM 策略。该策略授予对名为 *amzn-s3-demo-bucket* 的存储桶的访问权限。
**注意**  
创建策略后，请记下策略的 ARN。在将策略附加到 IAM 角色时，您在后面的步骤中需要使用 ARN。

   ```
   aws iam create-policy  --policy-name ExportPolicy --policy-document '{
       "Version": "2012-10-17",		 	 	 
       "Statement": [
           {
               "Sid": "ExportPolicy",
               "Effect": "Allow",
               "Action": [
                   "s3:PutObject*",
                   "s3:ListBucket",
                   "s3:GetObject*",
                   "s3:DeleteObject*",
                   "s3:GetBucketLocation"
               ],
               "Resource": [
                   "arn:aws:s3:::amzn-s3-demo-bucket",
                   "arn:aws:s3:::amzn-s3-demo-bucket/*"
               ]
           }
       ]
   }'
   ```

1. 创建一个 IAM 角色，以便 Aurora 可以代入该 IAM 角色，代表您访问 Amazon S3 桶。有关更多信息，请参阅 *IAM 用户指南*中的[创建向 IAM 用户委派权限的角色](https://docs.amazonaws.cn//IAM/latest/UserGuide/id_roles_create_for-user.html)。

   以下示例说明了如何使用 Amazon CLI 命令创建一个名为 `rds-s3-export-role` 的角色。

   ```
   aws iam create-role  --role-name rds-s3-export-role  --assume-role-policy-document '{
        "Version": "2012-10-17",		 	 	 
        "Statement": [
          {
            "Effect": "Allow",
            "Principal": {
               "Service": "export.rds.amazonaws.com"
             },
            "Action": "sts:AssumeRole"
          }
        ] 
      }'
   ```

1. 将您创建的 IAM 策略附加到您创建的 IAM 角色。

   以下 Amazon CLI 命令将之前创建的策略附加到名为 `rds-s3-export-role` 的角色。将 `your-policy-arn` 替换为您在先前步骤中记下的策略 ARN。

   ```
   aws iam attach-role-policy  --policy-arn your-policy-arn  --role-name rds-s3-export-role
   ```

## 使用跨账户 Amazon S3 存储桶
使用跨账户 S3 存储桶

您可以跨 Amazon 账户使用 S3 桶。有关更多信息，请参阅 [使用跨账户 Amazon S3 存储桶](aurora-export-snapshot.Setup.md#aurora-export-snapshot.Setup.XAcctBucket)。

# 创建数据库集群导出任务


创建导出任务，来将数据从 Aurora 数据库集群导出到 Amazon S3 存储桶。每个 Amazon Web Services 账户 最多可以执行五个并发数据库集群导出任务。

**注意**  
导出数据库集群数据可能需要一段时间，具体取决于您的数据库类型和大小。导出任务首先克隆并扩展整个数据库，然后再将数据提取到 Amazon S3。此阶段的任务进度显示为**正在启动**。当任务切换到将数据导出到 S3 时，进度显示为**正在进行**。  
完成导出所需的时间取决于数据库中存储的数据。例如，具有分布良好的数字主键或索引列的表导出速度最快。不包含适用于分区的列的表，以及只有基于字符串的列上的一个索引的表需要更长时间，因为导出使用较慢的单线程进程。

您可以使用 Amazon Web Services 管理控制台、Amazon CLI 或 RDS API 将数据库集群数据导出到 Amazon S3。

如果您使用 Lambda 函数导出数据库集群数据，请将 `kms:DescribeKey` 操作添加到 Lambda 函数策略中。有关更多信息，请参阅 [Amazon Lambda 权限](https://docs.amazonaws.cn/lambda/latest/dg/lambda-permissions.html)。

## 控制台


仅为可导出到 Amazon S3 的数据库集群显示 **Export to Amazon S3**（导出到 Amazon S3）控制台选项。由于以下原因，数据库集群可能无法导出：
+ 此数据库引擎不支持 S3 导出。
+ 数据库集群版本不支持 S3 导出。
+ 创建了数据库集群的 Amazon 区域不支持 S3 导出。

**导出数据库集群数据**

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

1. 在导航窗格中，选择 **Databases（数据库）**。

1. 选择要导出其数据的数据库集群。

1. 对于 **Actions (操作)**，选择 **Export to Amazon S3 (导出到 Amazon S3)**。

   此时将显示 **Export to Amazon S3 (导出到 Amazon S3)** 窗口。

1. 对于 **Export identifier (导出标识符)**，输入用于标识导出任务的名称。此值也用于在 S3 存储桶中创建的文件的名称。

1. 选择要导出的数据：
   + 选择 **All**（全部）可导出数据库集群中的所有数据。
   + 选择 **Partial**（部分）可导出数据库集群的特定部分。如需标识要导出集群的哪些部分，请为 **Identifiers**（标识符）输入一个或多个数据库、模式或表，以空格分隔。

     使用以下格式：

     ```
     database[.schema][.table] database2[.schema2][.table2] ... databasen[.scheman][.tablen]
     ```

     例如：

     ```
     mydatabase mydatabase2.myschema1 mydatabase2.myschema2.mytable1 mydatabase2.myschema2.mytable2
     ```

1. 对于 **S3 bucket (S3 存储桶)**，选择要导出到的存储桶。

   要将导出的数据分配给 S3 存储桶中的文件夹路径，请为 **S3 prefix (S3 前缀)** 输入可选路径。

1. 对于 **IAM role (IAM 角色)**，请选择一个角色以授予您对所选 S3 存储桶的写入访问权限，或创建新角色。
   + 如果您按照 [使用 IAM 角色提供对 Amazon S3 存储桶的访问权限](export-cluster-data.Setup.md#export-cluster-data.SetupIAMRole)中的步骤创建了角色，请选择该角色。
   + 如果您没有创建授予您对所选 S3 桶的写入访问权限的角色，则选择 **Create a new role**（创建新角色）来自动创建该角色。接下来，在 **IAM role name (IAM 角色名称)** 中输入角色的名称。

1. 对于 **KMS key**（KMS 密钥），输入要用于加密导出数据的密钥的 ARN。

1. 选择 **Export to Amazon S3 (导出到 Amazon S3)**。

## Amazon CLI


要使用 Amazon CLI 将数据库集群数据导出到 Amazon S3，请使用包含以下所需选项的 [start-export-task](https://docs.amazonaws.cn/cli/latest/reference/rds/start-export-task.html) 命令：
+ `--export-task-identifier`
+ `--source-arn` – 数据库集群的 Amazon 资源名称（ARN）
+ `--s3-bucket-name`
+ `--iam-role-arn`
+ `--kms-key-id`

在以下示例中，导出任务名为 *my-cluster-export*，该任务将数据导出到名为 *amzn-s3-demo-destination-bucket* 的 S3 存储桶。

**Example**  
对于 Linux、macOS 或 Unix：  

```
1. aws rds start-export-task \
2.     --export-task-identifier my-cluster-export \
3.     --source-arn arn:aws:rds:us-west-2:123456789012:cluster:my-cluster \
4.     --s3-bucket-name amzn-s3-demo-destination-bucket \
5.     --iam-role-arn iam-role \
6.     --kms-key-id my-key
```
对于 Windows：  

```
1. aws rds start-export-task ^
2.     --export-task-identifier my-DB-cluster-export ^
3.     --source-arn arn:aws:rds:us-west-2:123456789012:cluster:my-cluster ^
4.     --s3-bucket-name amzn-s3-demo-destination-bucket ^
5.     --iam-role-arn iam-role ^
6.     --kms-key-id my-key
```
示例输出如下。  

```
{
    "ExportTaskIdentifier": "my-cluster-export",
    "SourceArn": "arn:aws:rds:us-west-2:123456789012:cluster:my-cluster",
    "S3Bucket": "amzn-s3-demo-destination-bucket",
    "IamRoleArn": "arn:aws:iam:123456789012:role/ExportTest",
    "KmsKeyId": "my-key",
    "Status": "STARTING",
    "PercentProgress": 0,
    "TotalExtractedDataInGB": 0,
}
```
要在 S3 桶中为数据库集群导出提供文件夹路径，请在 [start-export-task](https://docs.amazonaws.cn/cli/latest/reference/rds/start-export-task.html) 命令中包含 `--s3-prefix` 选项。

## RDS API


要使用 Amazon RDS API 将数据库集群数据导出到 Amazon S3，请使用包含以下所需参数的 [StartExportTask](https://docs.amazonaws.cn/AmazonRDS/latest/APIReference/API_StartExportTask.html) 操作：
+ `ExportTaskIdentifier`
+ `SourceArn` – 数据库集群的 ARN
+ `S3BucketName`
+ `IamRoleArn`
+ `KmsKeyId`

# 监控数据库集群导出任务
监控数据库集群导出

您可以使用 Amazon Web Services 管理控制台、Amazon CLI 或 RDS API 监控数据库集群导出。

## 控制台


**监控数据库集群导出**

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

1. 在导航窗格中，选择 **Exports in Amazon S3**（Amazon S3 中的导出）。

   数据库集群导出在 **Source type**（源类型）列中指示。导出状态显示在 **Status**（状态）列中。

1. 要查看有关特定数据库集群导出的详细信息，请选择导出任务。

## Amazon CLI


要使用 Amazon CLI 监控数据库集群导出任务，请使用 [describe-export-tasks](https://docs.amazonaws.cn/cli/latest/reference/rds/describe-export-tasks.html) 命令。

以下示例说明如何显示有关所有数据库集群导出的当前信息。

**Example**  

```
 1. aws rds describe-export-tasks
 2. 
 3. {
 4.     "ExportTasks": [
 5.         {
 6.             "Status": "CANCELED",
 7.             "TaskEndTime": "2022-11-01T17:36:46.961Z",
 8.             "S3Prefix": "something",
 9.             "S3Bucket": "amzn-s3-demo-bucket",
10.             "PercentProgress": 0,
11.             "KmsKeyId": "arn:aws:kms:us-west-2:123456789012:key/K7MDENG/bPxRfiCYEXAMPLEKEY",
12.             "ExportTaskIdentifier": "anewtest",
13.             "IamRoleArn": "arn:aws:iam::123456789012:role/export-to-s3",
14.             "TotalExtractedDataInGB": 0,
15.             "SourceArn": "arn:aws:rds:us-west-2:123456789012:cluster:parameter-groups-test"
16.         },
17. {
18.             "Status": "COMPLETE",
19.             "TaskStartTime": "2022-10-31T20:58:06.998Z",
20.             "TaskEndTime": "2022-10-31T21:37:28.312Z",
21.             "WarningMessage": "{\"skippedTables\":[],\"skippedObjectives\":[],\"general\":[{\"reason\":\"FAILED_TO_EXTRACT_TABLES_LIST_FOR_DATABASE\"}]}",
22.             "S3Prefix": "",
23.             "S3Bucket": "amzn-s3-demo-bucket1",
24.             "PercentProgress": 100,
25.             "KmsKeyId": "arn:aws:kms:us-west-2:123456789012:key/2Zp9Utk/h3yCo8nvbEXAMPLEKEY",
26.             "ExportTaskIdentifier": "thursday-events-test", 
27.             "IamRoleArn": "arn:aws:iam::123456789012:role/export-to-s3",
28.             "TotalExtractedDataInGB": 263,
29.             "SourceArn": "arn:aws:rds:us-west-2:123456789012:cluster:example-1-2019-10-31-06-44"
30.         },
31.         {
32.             "Status": "FAILED",
33.             "TaskEndTime": "2022-10-31T02:12:36.409Z",
34.             "FailureCause": "The S3 bucket amzn-s3-demo-bucket2 isn't located in the current Amazon Region. Please, review your S3 bucket name and retry the export.",
35.             "S3Prefix": "",
36.             "S3Bucket": "amzn-s3-demo-bucket2",
37.             "PercentProgress": 0,
38.             "KmsKeyId": "arn:aws:kms:us-west-2:123456789012:key/2Zp9Utk/h3yCo8nvbEXAMPLEKEY",
39.             "ExportTaskIdentifier": "wednesday-afternoon-test",
40.             "IamRoleArn": "arn:aws:iam::123456789012:role/export-to-s3",
41.             "TotalExtractedDataInGB": 0,
42.             "SourceArn": "arn:aws:rds:us-west-2:123456789012:cluster:example-1-2019-10-30-06-45"
43.         }
44.     ]
45. }
```
要显示有关特定导出任务的信息，请在 `describe-export-tasks` 命令中包含 `--export-task-identifier` 选项。要筛选输出，请包括 `--Filters` 选项。有关更多选项，请参阅 [describe-export-tasks](https://docs.amazonaws.cn/cli/latest/reference/rds/describe-export-tasks.html) 命令。

## RDS API


要使用 Amazon RDS API 显示有关数据库集群导出的信息，请使用 [DescribeExportTasks](https://docs.amazonaws.cn/AmazonRDS/latest/APIReference/API_DescribeExportTasks.html) 操作。

要跟踪导出工作流的完成情况或启动其他工作流，您可以订阅 Amazon Simple Notification Service 主题。有关 Amazon SNS 的更多信息，请参阅 [使用 Amazon RDS 事件通知](USER_Events.md)。

# 取消数据库集群导出任务
取消数据库集群导出

您可以使用 Amazon Web Services 管理控制台、Amazon CLI 或 RDS API 取消数据库集群导出任务。

**注意**  
取消导出任务不会删除导出到 Amazon S3 的任何数据。有关如何使用控制台删除数据的信息，请参阅[如何从 S3 存储桶删除对象？](https://docs.amazonaws.cn/AmazonS3/latest/user-guide/delete-objects.html) 要使用 CLI 删除数据，请使用 [delete-object](https://docs.amazonaws.cn/cli/latest/reference/s3api/delete-object.html) 命令。

## 控制台


**取消数据库集群导出任务**

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

1. 在导航窗格中，选择 **Exports in Amazon S3**（Amazon S3 中的导出）。

   数据库集群导出在 **Source type**（源类型）列中指示。导出状态显示在 **Status**（状态）列中。

1. 选择要取消的导出任务。

1. 选择 **Cancel (取消)**。

1. 在确认页面上选择 **Cancel export task (取消导出任务)**。

 

## Amazon CLI


要使用 Amazon CLI 取消导出任务，请使用 [cancel-export-task](https://docs.amazonaws.cn/cli/latest/reference/rds/cancel-export-task.html) 命令。该命令需要 `--export-task-identifier` 选项。

**Example**  

```
 1. aws rds cancel-export-task --export-task-identifier my-export
 2. {
 3.     "Status": "CANCELING",
 4.     "S3Prefix": "",
 5.     "S3Bucket": "amzn-s3-demo-bucket",
 6.     "PercentProgress": 0,
 7.     "KmsKeyId": "arn:aws:kms:us-west-2:123456789012:key/K7MDENG/bPxRfiCYEXAMPLEKEY",
 8.     "ExportTaskIdentifier": "my-export",
 9.     "IamRoleArn": "arn:aws:iam::123456789012:role/export-to-s3",
10.     "TotalExtractedDataInGB": 0,
11.     "SourceArn": "arn:aws:rds:us-west-2:123456789012:cluster:export-example-1"
12. }
```

## RDS API


要使用 Amazon RDS API 取消导出任务，请使用带 `ExportTaskIdentifier` 参数的 [CancelExportTask](https://docs.amazonaws.cn/AmazonRDS/latest/APIReference/API_CancelExportTask.html) 操作。

# 数据库集群导出故障排除
故障排除

使用以下各节来协助排查将数据库集群导出到 Amazon S3 的任务的失败消息和 PostgreSQL 权限错误。

## Amazon S3 导出任务的失败消息
失败消息

下表描述了 Amazon S3 导出任务失败时返回的消息。


| 失败消息 | 描述 | 
| --- | --- | 
| 无法找到或访问源数据库集群：[集群名称] | 无法克隆源数据库集群。 | 
| 出现未知的内部错误。 |  由于未知错误、异常或故障导致任务失败。  | 
| 将导出任务的元数据写入 S3 存储桶 [存储桶名称] 时出现未知的内部错误。 |  由于未知错误、异常或故障导致任务失败。  | 
| RDS 导出无法编写导出任务的元数据，因为它无法担任 IAM 角色 [角色 ARN]。 |  导出任务将担任您的 IAM 角色来验证是否允许向 S3 存储桶写入元数据。如果任务无法担任您的 IAM 角色，它将失败。  | 
| RDS 导出未能使用带有 KMS 密钥 [密钥 ID] 的 IAM 角色 [角色 ARN] 将导出任务的元数据写入 S3 存储桶 [存储桶名称]。错误代码：[错误代码] |  缺少一个或多个权限，因此导出任务无法访问 S3 存储桶。收到以下错误代码之一时，会引发此失败消息： [\[See the AWS documentation website for more details\]](http://docs.amazonaws.cn/AmazonRDS/latest/AuroraUserGuide/export-cluster-data.Troubleshooting.html) 这些错误代码表示 IAM 角色、S3 桶或 KMS 密钥的设置出现配置错误。  | 
| IAM 角色 [角色 ARN] 无权在 S3 存储桶 [存储桶名称] 上调用 [S3 操作]。查看您的权限并重试导出。 |  IAM 策略配置错误。缺少对 S3 桶执行特定 S3 操作的权限，这会导致导出任务失败。  | 
| KMS 密钥检查失败。检查 KMS 密钥上的凭证然后重试。 | KMS 密钥凭证检查失败。 | 
| S3 凭证检查失败。检查 S3 存储桶和 IAM 策略的权限。 | S3 凭证检查失败。 | 
| S3 存储桶 [存储桶名称] 无效。它不在当前 Amazon Web Services 区域 中，或者它不存在。检查 S3 存储桶名称，然后重试导出。 | S3 存储桶无效。 | 
| S3 桶 [桶名称] 不在当前 Amazon Web Services 区域 中。检查 S3 存储桶名称，然后重试导出。 | S3 桶处于错误的 Amazon Web Services 区域 中。 | 

## 排查 PostgreSQL 权限错误


将 PostgreSQL 数据库导出到 Amazon S3 时，您可能会看到 `PERMISSIONS_DO_NOT_EXIST` 错误，指出已跳过某些表。当您在创建数据库集群时指定的超级用户无权访问这些表时，通常会发生此错误。

要修复此错误，请运行以下命令：

```
GRANT ALL PRIVILEGES ON ALL TABLES IN SCHEMA schema_name TO superuser_name
```

有关超级用户权限的更多信息，请参阅 [主用户账户权限](UsingWithRDS.MasterAccounts.md)。

# 将数据库集群快照数据导出到 Amazon S3


您可以将数据库集群快照数据导出到 Amazon S3 存储桶。导出过程在后台运行，不会影响活动数据库集群的性能。

导出数据库集群快照时，Amazon Aurora 从快照中提取数据并将其存储在 Amazon S3 存储桶中。您可以导出手动快照和自动系统快照。默认情况下，将导出快照中的所有数据。但是，您可以选择导出特定的一组数据库、方案或表。

**注意**  
从数据库集群快照导出数据要求还原快照。还原时间受多种因素的影响，例如 Amazon Web Services 区域相对于其可用带宽接收的网络流量。当流量突然增加时，完成时间可能比预期更长。  
缩短 Aurora 数据库的 S3 导出时间的另一种方法是将数据库集群实时导出到 S3。数据库集群导出的开始时间比数据库快照导出更短，因为无需还原快照。有关更多信息，请参阅 [将数据库集群数据导出到 Amazon S3](export-cluster-data.md)。

数据以压缩和一致的 Apache Parquet 格式存储。各个 Parquet 文件的大小通常约为 1-10MB。

导出数据后，您可以通过 Amazon Athena 或 Amazon Redshift Spectrum 等工具直接分析导出的数据。有关使用 Athena 读取 Parque 数据的更多信息，请参阅 *Amazon Athena 用户指南*中的 [Parquet SerDe](https://docs.amazonaws.cn/athena/latest/ug/parquet-serde.html)。有关使用 Redshift Spectrum 读取 Parquet 数据的更多信息，请参阅《Amazon Redshift 数据库开发人员指南》中的[从列式数据格式执行 COPY 操作](https://docs.amazonaws.cn/redshift/latest/dg/copy-usage_notes-copy-from-columnar.html)。

功能可用性和支持因每个数据库引擎的特定版本以及 Amazon Web Services 区域而异。有关将数据库集群快照数据导出到 S3 的版本和区域可用性的更多信息，请参阅 [支持将快照数据导出到 Amazon S3 的区域和 Aurora 数据库引擎](Concepts.Aurora_Fea_Regions_DB-eng.Feature.ExportSnapshotToS3.md)。

您可以使用以下过程将数据库快照数据导出到 Amazon S3 存储桶。有关更多详细信息，请参阅以下部分。

**导出快照数据概述**

1. 确定要导出的快照。

   使用现有的自动快照或手动快照，或创建数据库实例的手动快照。

1. 设置对 Amazon S3 存储桶的访问权限。

   *存储桶*是 Amazon S3 对象或文件的容器。要提供访问存储桶的信息，请执行以下步骤：

   1. 标识要将快照导出到的 S3 存储桶。S3 存储桶必须与快照位于同一 Amazon 区域。有关更多信息，请参阅 [标识要导出到的 Amazon S3 存储桶](aurora-export-snapshot.Setup.md#aurora-export-snapshot.SetupBucket)。

   1. 创建一个 Amazon Identity and Access Management (IAM) 角色，用于授予快照导出任务对 S3 存储桶的访问权限。有关更多信息，请参阅 [使用 IAM 角色提供对 Amazon S3 存储桶的访问权限](aurora-export-snapshot.Setup.md#aurora-export-snapshot.SetupIAMRole)。

1. 创建对称加密 Amazon KMS key 以进行服务器端加密。快照导出任务使用 KMS 密钥在将导出数据写入 S3 时设置 Amazon KMS 服务器端加密。

   KMS 密钥策略必须同时包含 `kms:CreateGrant` 和 `kms:DescribeKey` 权限。有关在 Amazon Aurora 中使用 KMS 密钥的更多信息，请参阅 [Amazon KMS key 管理](Overview.Encryption.Keys.md)。

   如果 KMS 密钥策略中有拒绝语句，则确保显式排除 Amazon 服务主体 `export.rds.amazonaws.com`。

   您可以在您的 Amazon 账户内使用 KMS 密钥，或者您可以使用跨账户 KMS 密钥。有关更多信息，请参阅 [使用跨账户 Amazon KMS key](aurora-export-snapshot.Setup.md#aurora-export-snapshot.CMK)。

1. 使用控制台或 `start-export-task` CLI 命令将快照导出到 Amazon S3。有关更多信息，请参阅 [创建快照导出任务](aurora-export-snapshot.Exporting.md)。

1. 要访问 Amazon S3 存储桶中导出的数据，请参阅 *Amazon Simple Storage Service 用户指南*中的[上传、下载和管理对象](https://docs.amazonaws.cn/AmazonS3/latest/user-guide/upload-download-objects.html)。

在以下各节中，学习设置、导出、监控、取消数据库集群快照导出任务并对其进行故障排除。

**Topics**
+ [

# 数据库集群快照导出注意事项
](aurora-export-snapshot.Considerations.md)
+ [

# 设置 Amazon S3 存储桶的访问权限
](aurora-export-snapshot.Setup.md)
+ [

# 创建快照导出任务
](aurora-export-snapshot.Exporting.md)
+ [

# 监控快照导出
](aurora-export-snapshot.Monitoring.md)
+ [

# 取消快照导出任务
](aurora-export-snapshot.Canceling.md)
+ [

# Aurora MySQL 中的导出性能
](aurora-export-snapshot.parallel.md)
+ [

# 快照导出故障排除
](aurora-export-snapshot.Troubleshooting.md)

# 数据库集群快照导出注意事项
注意事项

## 限制


将数据库快照数据导出到 Amazon S3 有以下限制：
+ 您不能为同一个数据库集群快照同时运行多个导出任务。这同时适用于完全导出和部分导出。
+ 每个 Amazon Web Services 账户 最多可以执行五个并发数据库快照导出任务。
+ 您不能将快照数据从 Aurora Serverless v1 数据库集群导出到 S3。
+ 导出到 S3 不支持包含冒号（:）的 S3 前缀。
+ 在导出过程中，S3 文件路径中的以下字符将转换为下划线 (\$1)：

  ```
  \ ` " (space)
  ```
+ 如果数据库、架构或表的名称中包含以下字符以外的字符，则不支持部分导出。但是，您可以导出整个数据库快照。
  + 拉丁字母 (A–Z)
  + 数字 (0–9)
  + 美元符号 (\$1)
  + 下划线 (\$1)
+ 数据库表列名不支持空格 ( ) 和某些字符。在导出过程中会跳过列名中包含以下字符的表：

  ```
  , ; { } ( ) \n \t = (space)
  ```
+ 在导出过程中会跳过其名称中包含斜杠 (/) 的表。
+ 在导出期间，将跳过 Aurora PostgreSQL 临时表和未记录的表。
+ 如果数据包含接近或大于 500MB 的大型对象（例如 BLOB 或 CLOB），则导出失败。
+ 如果表中某个大行的大小接近或大于 2GB，则会在导出过程中略过该表。
+ 对于部分导出，`ExportOnly` 列表的最大大小为 200 KB。
+ 强烈建议您为每个导出任务使用唯一的名称。如果您没有使用唯一的任务名称，可能会收到以下错误消息：

  ExportTaskAlreadyExistsFault：调用 StartExportTask 操作时发生错误 (ExportTaskAlreadyExists)：ID 为 *xxxxx* 的导出任务已存在。
+ 您可以在将快照数据导出到 S3 时删除快照，但是在导出任务完成之前，仍需支付该快照的存储成本。
+ 您无法将从 S3 导出的快照数据恢复到新的数据库集群。

## 文件命名约定


特定表的导出数据以 `base_prefix/files` 格式存储，基本前缀如下：

```
export_identifier/database_name/schema_name.table_name/
```

例如：

```
export-1234567890123-459/rdststdb/rdststdb.DataInsert_7ADB5D19965123A2/
```

文件的命名方式有两种约定。
+ 当前约定：

  ```
  batch_index/part-partition_index-random_uuid.format-based_extension
  ```

  批量索引是一个序列号，表示从表中读取的一批数据。如果我们无法将您的表分区成小块以并行导出，则会有多个批量索引。如果表分区成多个表，也会发生同样的情况。这会出现多个批量索引，主表的每个表分区对应一个。

  如果我们可以将表分区成小块以并行读取，那么就只有批量索引 `1` 文件夹。

  在批量索引文件夹中，有一个或多个包含表数据的 Parquet 文件。Parquet 文件名的前缀是 `part-partition_index`。如果您的表已分区，则会有多个以分区索引 `00000` 开头的文件。

  分区索引序列中可能存在间隙。之所以发生这种情况，是因为每个分区都是从表中的范围查询中获得的。如果该分区的范围内没有数据，则跳过该序列号。

  例如，假设 `id` 列是表的主键，其最小值和最大值为 `100` 和 `1000`。当我们尝试导出这个带有九个分区的表时，我们会使用并行查询读取它，如下所示：

  ```
  SELECT * FROM table WHERE id <= 100 AND id < 200
  	SELECT * FROM table WHERE id <= 200 AND id < 300
  ```

  这应该生成九个文件，从 `part-00000-random_uuid.gz.parquet` 到 `part-00008-random_uuid.gz.parquet`。但是，如果没有 ID 介于 `200` 和 `350` 之间的行，则其中一个已完成的分区为空，并且不会为其创建任何文件。在前面的示例中，未创建 `part-00001-random_uuid.gz.parquet`。
+ 较早的约定：

  ```
  part-partition_index-random_uuid.format-based_extension
  ```

  这与当前约定相同，但没有 `batch_index` 前缀，例如：

  ```
  part-00000-c5a881bb-58ff-4ee6-1111-b41ecff340a3-c000.gz.parquet
  	part-00001-d7a881cc-88cc-5ab7-2222-c41ecab340a4-c000.gz.parquet
  	part-00002-f5a991ab-59aa-7fa6-3333-d41eccd340a7-c000.gz.parquet
  ```

文件命名约定可能会更改。因此，在读取目标表时，我们建议您读取表的基本前缀内的所有内容。

## 导出到 Amazon S3 存储桶时的数据转换
数据转换

将数据库快照导出到 Amazon S3 存储桶时，Amazon Aurora 以 Parquet 格式转换数据、导出数据并存储数据。有关 Parquet 的更多信息，请参阅 [Apache Parquet](https://parquet.apache.org/docs/) 网站。

Parquet 将所有数据存储为以下原始类型之一：
+ BOOLEAN
+ INT32
+ INT64
+ INT96
+ FLOAT
+ DOUBLE
+ BYTE\$1ARRAY – 一个可变长度的字节数组，也称为二进制
+ FIXED\$1LEN\$1BYTE\$1ARRAY – 当值具有恒定大小时使用的固定长度字节数组

Parquet 数据类型很少能减少读取和写入格式的复杂性。Parquet 提供了用于扩展原始类型的逻辑类型。*逻辑类型*实现为具有 `LogicalType` 元数据字段中数据的注释。逻辑类型注释说明如何解释原始类型。

当 `STRING` 逻辑类型注释 `BYTE_ARRAY` 类型时，它表示字节数组应被解释为 UTF-8 编码的字符串。导出任务完成后，如果发生了任何字符串转换，则 Amazon Aurora 会通知您。导出的基础数据始终与源中的数据相同。但是，由于 UTF-8 中的编码差异，在工具（如 Athena）中读取时，某些字符可能会显示与源不同。

有关更多信息，请参阅 Parquet 文档中的 [Parquet 逻辑类型定义](https://github.com/apache/parquet-format/blob/master/LogicalTypes.md)。

**Topics**
+ [

### MySQL 数据类型到 Parquet 的映射
](#aurora-export-snapshot.data-types.MySQL)
+ [

### PostgreSQL 数据类型到 Parquet 的映射
](#aurora-export-snapshot.data-types.PostgreSQL)

### MySQL 数据类型到 Parquet 的映射
MySQL 数据类型映射

下表显示在将数据转换并导出到 Amazon S3 时从 MySQL 数据类型到 Parquet 数据类型的映射。

[\[See the AWS documentation website for more details\]](http://docs.amazonaws.cn/AmazonRDS/latest/AuroraUserGuide/aurora-export-snapshot.Considerations.html)

### PostgreSQL 数据类型到 Parquet 的映射
PostgreSQL 数据类型映射

下表显示在将数据转换并导出到 Amazon S3 时从 PostgreSQL 数据类型到 Parquet 数据类型的映射。


| PostgreSQL 数据类型 | Parquet 原始类型 | 逻辑类型注释 | 映射注释 | 
| --- | --- | --- | --- | 
| 数字数据类型 | 
| BIGINT | INT64 |  |   | 
| BIGSERIAL | INT64 |  |   | 
| DECIMAL | BYTE\$1ARRAY | STRING | DECIMAL 类型转换为 BYTE\$1ARRAY 类型的字符串，并编码为 UTF8。此转换是为了避免由于数据精度和非数字 (NaN) 的数据值而引起的复杂性。 | 
| DOUBLE PRECISION | DOUBLE |  |   | 
| INTEGER | INT32 |  |   | 
| MONEY | BYTE\$1ARRAY | STRING |   | 
| REAL | FLOAT |  |   | 
| SERIAL | INT32 |  |   | 
| SMALLINT | INT32 | INT(16, true) |   | 
| SMALLSERIAL | INT32 | INT(16, true) |   | 
| 字符串和相关数据类型 | 
| ARRAY | BYTE\$1ARRAY | STRING |  数组转换为字符串并编码为 BINARY (UTF8)。 此转换是为了避免因数据精度、非数字 (NaN) 的数据值和时间数据值而产生的复杂性。  | 
| BIT | BYTE\$1ARRAY | STRING |   | 
| BIT VARYING | BYTE\$1ARRAY | STRING |   | 
| BYTEA | BINARY |  |   | 
| CHAR | BYTE\$1ARRAY | STRING |   | 
| CHAR(N) | BYTE\$1ARRAY | STRING |   | 
| ENUM | BYTE\$1ARRAY | STRING |   | 
| NAME | BYTE\$1ARRAY | STRING |   | 
| TEXT | BYTE\$1ARRAY | STRING |   | 
| 文本搜索 | BYTE\$1ARRAY | STRING |   | 
| VARCHAR(N) | BYTE\$1ARRAY | STRING |   | 
| XML | BYTE\$1ARRAY | STRING |   | 
| 日期和时间数据类型 | 
| DATE | BYTE\$1ARRAY | STRING |   | 
| INTERVAL | BYTE\$1ARRAY | STRING |   | 
| TIME | BYTE\$1ARRAY | STRING |  | 
| 带时区的时间 | BYTE\$1ARRAY | STRING |  | 
| TIMESTAMP | BYTE\$1ARRAY | STRING |  | 
| TIMESTAMP（有时区） | BYTE\$1ARRAY | STRING |  | 
| 几何数据类型 | 
| BOX | BYTE\$1ARRAY | STRING |   | 
| CIRCLE | BYTE\$1ARRAY | STRING |   | 
| LINE | BYTE\$1ARRAY | STRING |   | 
| LINESEGMENT | BYTE\$1ARRAY | STRING |   | 
| 路径 | BYTE\$1ARRAY | STRING |   | 
| POINT | BYTE\$1ARRAY | STRING |   | 
| POLYGON | BYTE\$1ARRAY | STRING |   | 
| JSON 数据类型 | 
| JSON | BYTE\$1ARRAY | STRING |   | 
| JSONB | BYTE\$1ARRAY | STRING |   | 
| 其他数据类型 | 
| BOOLEAN | BOOLEAN |  |   | 
| CIDR | BYTE\$1ARRAY | STRING |  网络数据类型 | 
| COMPOSITE | BYTE\$1ARRAY | STRING |   | 
| DOMAIN | BYTE\$1ARRAY | STRING |   | 
| INET | BYTE\$1ARRAY | STRING |  网络数据类型 | 
| MACADDR | BYTE\$1ARRAY | STRING |   | 
| 对象标识符 | 不适用 |  |  | 
| PG\$1LSN | BYTE\$1ARRAY | STRING |   | 
| RANGE | BYTE\$1ARRAY | STRING |   | 
| UUID | BYTE\$1ARRAY | STRING |   | 

# 设置 Amazon S3 存储桶的访问权限
设置对 S3 存储桶的访问权限

您识别 AmazonS3 桶，然后授予快照访问它的权限。

**Topics**
+ [

## 标识要导出到的 Amazon S3 存储桶
](#aurora-export-snapshot.SetupBucket)
+ [

## 使用 IAM 角色提供对 Amazon S3 存储桶的访问权限
](#aurora-export-snapshot.SetupIAMRole)
+ [

## 使用跨账户 Amazon S3 存储桶
](#aurora-export-snapshot.Setup.XAcctBucket)
+ [

## 使用跨账户 Amazon KMS key
](#aurora-export-snapshot.CMK)

## 标识要导出到的 Amazon S3 存储桶
标识 Amazon S3 存储桶

标识要将数据库快照导出到的 Amazon S3 存储桶。使用现有 S3 存储桶或创建新的 S3 存储桶。

**注意**  
要导出到的 S3 存储桶必须与快照位于同一 Amazon 区域中。

有关使用 Amazon S3 存储桶的详细信息，请参阅 *Amazon Simple Storage Service 用户指南*中的以下主题：
+ [如何查看 S3 存储桶的属性？](https://docs.amazonaws.cn/AmazonS3/latest/user-guide/view-bucket-properties.html)
+ [如何为 Amazon S3 存储桶启用默认加密？](https://docs.amazonaws.cn/AmazonS3/latest/user-guide/default-bucket-encryption.html)
+ [如何创建 S3 存储桶？](https://docs.amazonaws.cn/AmazonS3/latest/user-guide/create-bucket.html)

## 使用 IAM 角色提供对 Amazon S3 存储桶的访问权限
使用 IAM 角色提供对存储桶的访问权限

将数据库快照数据导出到 Amazon S3 之前，请授予快照导出任务对 Amazon S3 存储桶的写入访问权限。

要授予此权限，请创建一个 IAM 策略以提供对桶的访问权限，然后创建一个 IAM 角色并将该策略附加到该角色。稍后，您可以将此 IAM 角色分配给快照导出任务。

**重要**  
如果计划使用Amazon Web Services 管理控制台导出快照，则可以选择在导出快照时自动创建 IAM 策略和角色。有关说明，请参阅[创建快照导出任务](aurora-export-snapshot.Exporting.md)。

**授予数据库快照任务访问 Amazon S3 的权限**

1. 创建一个 IAM 策略。此策略提供允许快照导出任务访问 Amazon S3 的存储桶和对象权限。

   在策略中，包含以下必需操作，以允许将文件从 Amazon Aurora 桶传输到 S3 桶：
   + `s3:PutObject*`
   + `s3:GetObject*` 
   + `s3:ListBucket` 
   + `s3:DeleteObject*`
   +  `s3:GetBucketLocation`

   在策略中，包含以下资源以标识 S3 桶以及该桶中的对象。以下资源列表显示用于访问 Amazon S3 的 Amazon Resource Name (ARN) 格式。
   + `arn:aws:s3:::amzn-s3-demo-bucket`
   + `arn:aws:s3:::amzn-s3-demo-bucket/*`

   有关为 Amazon Aurora 创建 IAM 策略的更多信息，请参阅[创建和使用适用于 IAM 数据库访问的 IAM 策略](UsingWithRDS.IAMDBAuth.IAMPolicy.md)。另请参阅 *IAM 用户指南*中的[教程：创建和附加您的第一个客户托管式策略](https://docs.amazonaws.cn//IAM/latest/UserGuide/tutorial_managed-policies.html)。

   以下 Amazon CLI 命令使用这些选项创建一个名为 `ExportPolicy` 的 IAM 策略。该策略授予对名为 *amzn-s3-demo-bucket* 的存储桶的访问权限。
**注意**  
创建策略后，请记下策略的 ARN。在将策略附加到 IAM 角色时，您在后面的步骤中需要使用 ARN。

   ```
   aws iam create-policy  --policy-name ExportPolicy --policy-document '{
       "Version": "2012-10-17",		 	 	 
       "Statement": [
           {
               "Sid": "ExportPolicy",
               "Effect": "Allow",
               "Action": [
                   "s3:PutObject*",
                   "s3:ListBucket",
                   "s3:GetObject*",
                   "s3:DeleteObject*",
                   "s3:GetBucketLocation"
               ],
               "Resource": [
                   "arn:aws:s3:::amzn-s3-demo-bucket",
                   "arn:aws:s3:::amzn-s3-demo-bucket/*"
               ]
           }
       ]
   }'
   ```

1. 创建一个 IAM 角色，以便 Aurora 可以代入该 IAM 角色，代表您访问 Amazon S3 桶。有关更多信息，请参阅 *IAM 用户指南*中的[创建向 IAM 用户委派权限的角色](https://docs.amazonaws.cn//IAM/latest/UserGuide/id_roles_create_for-user.html)。

   以下示例说明了如何使用 Amazon CLI 命令创建一个名为 `rds-s3-export-role` 的角色。

   ```
   aws iam create-role  --role-name rds-s3-export-role  --assume-role-policy-document '{
        "Version": "2012-10-17",		 	 	 
        "Statement": [
          {
            "Effect": "Allow",
            "Principal": {
               "Service": "export.rds.amazonaws.com"
             },
            "Action": "sts:AssumeRole"
          }
        ] 
      }'
   ```

1. 将您创建的 IAM 策略附加到您创建的 IAM 角色。

   以下 Amazon CLI 命令将之前创建的策略附加到名为 `rds-s3-export-role` 的角色。将 `your-policy-arn` 替换为您在先前步骤中记下的策略 ARN。

   ```
   aws iam attach-role-policy  --policy-arn your-policy-arn  --role-name rds-s3-export-role
   ```

## 使用跨账户 Amazon S3 存储桶
使用跨账户 S3 存储桶

您可以跨 Amazon 账户使用 Amazon S3 存储桶。要使用跨账户存储桶，请添加存储桶策略以允许访问您用于 S3 导出的 IAM 角色。有关更多信息，请参阅[示例 2：存储桶拥有者授予跨账户存储桶权限](https://docs.amazonaws.cn/AmazonS3/latest/userguide/example-walkthroughs-managing-access-example2.html)。添加存储桶策略
+ 将存储桶策略附加到存储桶，如下面的示例所示。

------
#### [ JSON ]

****  

  ```
  {
      "Version":"2012-10-17",		 	 	 
      "Statement": [
          {
              "Effect": "Allow",
              "Principal": {
                  "AWS": "arn:aws:iam::123456789012:role/Admin"
              },
              "Action": [
                  "s3:PutObject*",
                  "s3:ListBucket",
                  "s3:GetObject*",
                  "s3:DeleteObject*",
                  "s3:GetBucketLocation"
              ],
              "Resource": [
                  "arn:aws:s3:::amzn-s3-demo-destination-bucket",
                  "arn:aws:s3:::amzn-s3-demo-destination-bucket/*"
              ]
          }
      ]
  }
  ```

------

## 使用跨账户 Amazon KMS key
使用跨账户 KMS 密钥

您可以使用跨账户 Amazon KMS key 以加密 Amazon S3 导出的内容。首先，向本地账户添加密钥策略，然后在外部账户中添加 IAM 策略。有关更多信息，请参阅[允许其他账户中的用户使用 KMS 密钥](https://docs.amazonaws.cn/kms/latest/developerguide/key-policy-modifying-external-accounts.html)。

**要使用跨账户 KMS 密钥**

1. 向本地账户添加密钥策略。

   以下示例为外部账户 444455556666 中的 `ExampleRole` 和 `ExampleUser` 提供了内部账户 123456789012 中的权限。

   ```
   {
       "Sid": "Allow an external account to use this KMS key",
       "Effect": "Allow",
       "Principal": {
           "AWS": [
               "arn:aws:iam::444455556666:role/ExampleRole",
               "arn:aws:iam::444455556666:user/ExampleUser"
           ]
       },
       "Action": [
           "kms:Encrypt",
           "kms:Decrypt",
           "kms:ReEncrypt*",
           "kms:GenerateDataKey*",
           "kms:CreateGrant",
           "kms:DescribeKey",
           "kms:RetireGrant"
       ],
       "Resource": "*"
   }
   ```

1. 在外部账户中添加 IAM 策略。

   以下示例 IAM 策略允许主体使用账户 123456789012 中的 KMS 密钥执行加密操作。要向账户 444455556666 中的 `ExampleRole` 和 `ExampleUser` 授予此权限，[请将策略附加](https://docs.amazonaws.cn/IAM/latest/UserGuide/access_policies_managed-using.html#attach-managed-policy-console)到该账户中的用户或角色。

   ```
   {
       "Sid": "Allow use of KMS key in account 123456789012",
       "Effect": "Allow",
       "Action": [
           "kms:Encrypt",
           "kms:Decrypt",
           "kms:ReEncrypt*",
           "kms:GenerateDataKey*",
           "kms:CreateGrant",
           "kms:DescribeKey",
           "kms:RetireGrant"
       ],
       "Resource": "arn:aws:kms:us-west-2:123456789012:key/1234abcd-12ab-34cd-56ef-1234567890ab"
   }
   ```

# 创建快照导出任务


创建快照导出任务，来将数据从快照导出到 Amazon S3 存储桶。每个 Amazon Web Services 账户 最多可以执行五个并发数据库快照导出任务。

**注意**  
导出 RDS 快照可能需要一段时间，具体取决于您的数据库类型和大小。导出任务首先还原并扩展整个数据库，然后再将数据提取到 Amazon S3。此阶段的任务进度显示为**正在启动**。当任务切换到将数据导出到 S3 时，进度显示为**正在进行**。  
完成导出所需的时间取决于数据库中存储的数据。例如，具有分布良好的数字主键或索引列的表导出速度最快。不包含适用于分区的列的表，以及只有基于字符串的列上的一个索引的表将需要更长时间。导出时间之所以更长，是因为导出使用较慢的单线程进程。

您可以使用Amazon Web Services 管理控制台、Amazon CLI 或 RDS API 将数据库快照导出到 Amazon S3。

如果您使用 Lambda 函数导出快照，请将 `kms:DescribeKey` 操作添加到 Lambda 函数策略中。有关更多信息，请参阅 [Amazon Lambda 权限](https://docs.amazonaws.cn/lambda/latest/dg/lambda-permissions.html)。

## 控制台


仅为可导出到 Amazon S3 的快照显示**导出到 Amazon S3** 控制台选项。由于以下原因，快照可能无法导出：
+ 不支持数据库引擎的 S3 导出。
+ 不支持数据库实例版本的 S3 导出。
+ 创建了快照的 Amazon 区域不支持 S3 导出。

**导出数据库快照**

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

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

1. 从选项卡中，选择要导出的快照类型。

1. 在快照列表中，选择要导出的快照。

1. 对于 **Actions (操作)**，选择 **Export to Amazon S3 (导出到 Amazon S3)**。

   此时将显示 **Export to Amazon S3 (导出到 Amazon S3)** 窗口。

1. 对于 **Export identifier (导出标识符)**，输入用于标识导出任务的名称。此值也用于在 S3 存储桶中创建的文件的名称。

1. 选择要导出的数据：
   + 选择 **All (全部)** 可导出快照中的所有数据。
   + 选择 **Partial (部分)** 可导出快照的特定部分。如需标识要导出快照的哪些部分，请为 **Identifiers (标识符)**（以空格分隔）输入一个或多个数据库、架构或表。

     使用以下格式：

     ```
     database[.schema][.table] database2[.schema2][.table2] ... databasen[.scheman][.tablen]
     ```

     例如：

     ```
     mydatabase mydatabase2.myschema1 mydatabase2.myschema2.mytable1 mydatabase2.myschema2.mytable2
     ```

1. 对于 **S3 bucket (S3 存储桶)**，选择要导出到的存储桶。

   要将导出的数据分配给 S3 存储桶中的文件夹路径，请为 **S3 prefix (S3 前缀)** 输入可选路径。

1. 对于 **IAM role (IAM 角色)**，请选择一个角色以授予您对所选 S3 存储桶的写入访问权限，或创建新角色。
   + 如果您按照 [使用 IAM 角色提供对 Amazon S3 存储桶的访问权限](aurora-export-snapshot.Setup.md#aurora-export-snapshot.SetupIAMRole)中的步骤创建了角色，请选择该角色。
   + 如果您没有创建授予您对所选 S3 桶的写入访问权限的角色，则选择 **Create a new role**（创建新角色）来自动创建该角色。接下来，在 **IAM role name (IAM 角色名称)** 中输入角色的名称。

1. 对于 **Amazon KMS key**，输入要用于加密导出数据的密钥的 ARN。

1. 选择 **Export to Amazon S3 (导出到 Amazon S3)**。

## Amazon CLI


要使用 Amazon CLI 将数据库快照导出到 Amazon S3，请使用包含以下所需选项的 [start-export-task](https://docs.amazonaws.cn/cli/latest/reference/rds/start-export-task.html) 命令：
+ `--export-task-identifier` 
+ `--source-arn` 
+ `--s3-bucket-name` 
+ `--iam-role-arn` 
+ `--kms-key-id` 

在以下示例中，快照导出任务名为 *my-snapshot-export*，该任务将快照导出到名为 *amzn-s3-demo-destination-bucket* 的 S3 存储桶。

**Example**  
对于 Linux、macOS 或 Unix：  

```
1. aws rds start-export-task \
2.     --export-task-identifier my-snapshot-export \
3.     --source-arn arn:aws:rds:Amazon_Region:123456789012:snapshot:snapshot-name \
4.     --s3-bucket-name amzn-s3-demo-destination-bucket \
5.     --iam-role-arn iam-role \
6.     --kms-key-id my-key
```
对于 Windows：  

```
1. aws rds start-export-task ^
2.     --export-task-identifier my-snapshot-export ^
3.     --source-arn arn:aws:rds:Amazon_Region:123456789012:snapshot:snapshot-name ^
4.     --s3-bucket-name amzn-s3-demo-destination-bucket ^
5.     --iam-role-arn iam-role ^
6.     --kms-key-id my-key
```
示例输出如下。  

```
{
    "Status": "STARTING", 
    "IamRoleArn": "iam-role", 
    "ExportTime": "2019-08-12T01:23:53.109Z", 
    "S3Bucket": "amzn-s3-demo-destination-bucket", 
    "PercentProgress": 0, 
    "KmsKeyId": "my-key", 
    "ExportTaskIdentifier": "my-snapshot-export", 
    "TotalExtractedDataInGB": 0, 
    "TaskStartTime": "2019-11-13T19:46:00.173Z", 
    "SourceArn": "arn:aws:rds:Amazon_Region:123456789012:snapshot:snapshot-name"
}
```
要在 S3 存储桶中为快照导出提供文件夹路径，请在 [start-export-task](https://docs.amazonaws.cn/cli/latest/reference/rds/start-export-task.html) 命令中包含 `--s3-prefix` 选项。

## RDS API


要使用 Amazon RDS API 将数据库快照导出到 Amazon S3，请使用包含以下所需参数的 [StartExportTask](https://docs.amazonaws.cn/AmazonRDS/latest/APIReference/API_StartExportTask.html) 操作：
+ `ExportTaskIdentifier`
+ `SourceArn`
+ `S3BucketName`
+ `IamRoleArn`
+ `KmsKeyId`

# 监控快照导出
监控快照导出

您可以使用 Amazon Web Services 管理控制台、Amazon CLI 或 RDS API 监控数据库快照导出。

## 控制台


**监视数据库快照导出**

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

1. 在导航窗格中，选择 **Exports in Amazon S3**（Amazon S3 中的导出）。

   数据库快照导出在 **Source type**（源类型）列中指示。导出状态显示在 **Status**（状态）列中。

1. 要查看有关特定快照导出的详细信息，请选择导出任务。

## Amazon CLI


要使用 Amazon CLI 监控数据库快照导出，请使用 [describe-export-tasks](https://docs.amazonaws.cn/cli/latest/reference/rds/describe-export-tasks.html) 命令。

以下示例说明如何显示有关所有快照导出的当前信息。

**Example**  

```
 1. aws rds describe-export-tasks
 2. 
 3. {
 4.     "ExportTasks": [
 5.         {
 6.             "Status": "CANCELED",
 7.             "TaskEndTime": "2019-11-01T17:36:46.961Z",
 8.             "S3Prefix": "something",
 9.             "ExportTime": "2019-10-24T20:23:48.364Z",
10.             "S3Bucket": "amzn-s3-demo-bucket",
11.             "PercentProgress": 0,
12.             "KmsKeyId": "arn:aws:kms:Amazon_Region:123456789012:key/K7MDENG/bPxRfiCYEXAMPLEKEY",
13.             "ExportTaskIdentifier": "anewtest",
14.             "IamRoleArn": "arn:aws:iam::123456789012:role/export-to-s3",
15.             "TotalExtractedDataInGB": 0,
16.             "TaskStartTime": "2019-10-25T19:10:58.885Z",
17.             "SourceArn": "arn:aws:rds:Amazon_Region:123456789012:snapshot:parameter-groups-test"
18.         },
19. {
20.             "Status": "COMPLETE",
21.             "TaskEndTime": "2019-10-31T21:37:28.312Z",
22.             "WarningMessage": "{\"skippedTables\":[],\"skippedObjectives\":[],\"general\":[{\"reason\":\"FAILED_TO_EXTRACT_TABLES_LIST_FOR_DATABASE\"}]}",
23.             "S3Prefix": "",
24.             "ExportTime": "2019-10-31T06:44:53.452Z",
25.             "S3Bucket": "amzn-s3-demo-bucket1",
26.             "PercentProgress": 100,
27.             "KmsKeyId": "arn:aws:kms:Amazon_Region:123456789012:key/2Zp9Utk/h3yCo8nvbEXAMPLEKEY",
28.             "ExportTaskIdentifier": "thursday-events-test", 
29.             "IamRoleArn": "arn:aws:iam::123456789012:role/export-to-s3",
30.             "TotalExtractedDataInGB": 263,
31.             "TaskStartTime": "2019-10-31T20:58:06.998Z",
32.             "SourceArn": "arn:aws:rds:Amazon_Region:123456789012:snapshot:rds:example-1-2019-10-31-06-44"
33.         },
34.         {
35.             "Status": "FAILED",
36.             "TaskEndTime": "2019-10-31T02:12:36.409Z",
37.             "FailureCause": "The S3 bucket my-exports isn't located in the current Amazon Region. Please, review your S3 bucket name and retry the export.",
38.             "S3Prefix": "",
39.             "ExportTime": "2019-10-30T06:45:04.526Z",
40.             "S3Bucket": "amzn-s3-demo-bucket2",
41.             "PercentProgress": 0,
42.             "KmsKeyId": "arn:aws:kms:Amazon_Region:123456789012:key/2Zp9Utk/h3yCo8nvbEXAMPLEKEY",
43.             "ExportTaskIdentifier": "wednesday-afternoon-test",
44.             "IamRoleArn": "arn:aws:iam::123456789012:role/export-to-s3",
45.             "TotalExtractedDataInGB": 0,
46.             "TaskStartTime": "2019-10-30T22:43:40.034Z",
47.             "SourceArn": "arn:aws:rds:Amazon_Region:123456789012:snapshot:rds:example-1-2019-10-30-06-45"
48.         }
49.     ]
50. }
```
要显示有关特定快照导出的信息，请在 `--export-task-identifier` 命令中包含 `describe-export-tasks` 选项。要筛选输出，请包括 `--Filters` 选项。有关更多选项，请参阅 [describe-export-tasks](https://docs.amazonaws.cn/cli/latest/reference/rds/describe-export-tasks.html) 命令。

## RDS API


要使用 Amazon RDS API 显示有关数据库快照导出的信息，请使用 [DescribeExportTasks](https://docs.amazonaws.cn/AmazonRDS/latest/APIReference/API_DescribeExportTasks.html) 操作。

要跟踪导出工作流的完成情况或启动其他工作流，您可以订阅 Amazon Simple Notification Service 主题。有关 Amazon SNS 的更多信息，请参阅 [使用 Amazon RDS 事件通知](USER_Events.md)。

# 取消快照导出任务
取消快照导出

您可以使用 Amazon Web Services 管理控制台、Amazon CLI 或 RDS API 取消数据库快照导出任务。

**注意**  
取消快照导出任务不会删除导出到 Amazon S3 的任何数据。有关如何使用控制台删除数据的信息，请参阅[如何从 S3 存储桶删除对象？](https://docs.amazonaws.cn/AmazonS3/latest/user-guide/delete-objects.html) 要使用 CLI 删除数据，请使用 [delete-object](https://docs.amazonaws.cn/cli/latest/reference/s3api/delete-object.html) 命令。

## 控制台


**取消快照导出任务**

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

1. 在导航窗格中，选择 **Exports in Amazon S3**（Amazon S3 中的导出）。

   数据库快照导出在 **Source type**（源类型）列中指示。导出状态显示在 **Status**（状态）列中。

1. 选择要取消的快照导出任务。

1. 选择 **Cancel (取消)**。

1. 在确认页面上选择 **Cancel export task (取消导出任务)**。

 

## Amazon CLI


要使用 Amazon CLI 取消快照导出任务，请使用 [cancel-export-task](https://docs.amazonaws.cn/cli/latest/reference/rds/cancel-export-task.html) 命令。该命令需要 `--export-task-identifier` 选项。

**Example**  

```
 1. aws rds cancel-export-task --export-task-identifier my_export
 2. {
 3.     "Status": "CANCELING", 
 4.     "S3Prefix": "", 
 5.     "ExportTime": "2019-08-12T01:23:53.109Z", 
 6.     "S3Bucket": "amzn-s3-demo-bucket", 
 7.     "PercentProgress": 0, 
 8.     "KmsKeyId": "arn:aws:kms:Amazon_Region:123456789012:key/K7MDENG/bPxRfiCYEXAMPLEKEY", 
 9.     "ExportTaskIdentifier": "my_export", 
10.     "IamRoleArn": "arn:aws:iam::123456789012:role/export-to-s3", 
11.     "TotalExtractedDataInGB": 0, 
12.     "TaskStartTime": "2019-11-13T19:46:00.173Z", 
13.     "SourceArn": "arn:aws:rds:Amazon_Region:123456789012:snapshot:export-example-1"
14. }
```

## RDS API


要使用 Amazon RDS API 取消快照导出任务，请使用带 `ExportTaskIdentifier` 参数的 [CancelExportTask](https://docs.amazonaws.cn/AmazonRDS/latest/APIReference/API_CancelExportTask.html) 操作。

# Aurora MySQL 中的导出性能


Aurora MySQL 版本 2 和版本 3 数据库集群快照使用高级导出机制来提高性能并缩短导出时间。该机制包括诸如多个导出线程和 Aurora MySQL 并行查询等优化措施，以利用 Aurora 共享存储架构。优化措施以自适应方式应用，具体取决于数据集的大小和结构。

您不需要开启并行查询来使用更快的导出过程，但该过程确实具有与并行查询相同的限制。此外，不支持某些数据值，例如月中的某天为 `0` 或年份为 `0000` 的日期。有关更多信息，请参阅 [Amazon Aurora MySQL 的并行查询](aurora-mysql-parallel-query.md)。

应用性能优化后，您可能还会看到用于 Aurora MySQL 版本 2 和 3 导出的 Parquet 文件要大得多（大约 200GB）。

如果无法使用更快的导出流程，例如由于数据类型或值不兼容，Aurora 会自动切换到单线程导出模式而无需并行查询。根据使用的流程和要导出的数据量，导出性能可能会有所不同。

# 快照导出故障排除
问题排查

使用以下各节来协助排查将数据库集群导出到 Amazon S3 的任务的失败消息和 PostgreSQL 权限错误。

## Amazon S3 导出任务的失败消息
失败消息

下表描述了 Amazon S3 导出任务失败时返回的消息。


| 失败消息 | 说明 | 
| --- | --- | 
| 出现未知的内部错误。 |  由于未知错误、异常或故障导致任务失败。  | 
| 将导出任务的元数据写入 S3 存储桶 [存储桶名称] 时出现未知的内部错误。 |  由于未知错误、异常或故障导致任务失败。  | 
| RDS 导出无法编写导出任务的元数据，因为它无法担任 IAM 角色 [角色 ARN]。 |  导出任务将担任您的 IAM 角色来验证是否允许向 S3 存储桶写入元数据。如果任务无法担任您的 IAM 角色，它将失败。  | 
| RDS 导出未能使用带有 KMS 密钥 [密钥 ID] 的 IAM 角色 [角色 ARN] 将导出任务的元数据写入 S3 存储桶 [存储桶名称]。错误代码：[错误代码] |  缺少一个或多个权限，因此导出任务无法访问 S3 存储桶。收到以下错误代码之一时，会引发此失败消息： [\[See the AWS documentation website for more details\]](http://docs.amazonaws.cn/AmazonRDS/latest/AuroraUserGuide/aurora-export-snapshot.Troubleshooting.html) 这些错误代码表示 IAM 角色、S3 桶或 KMS 密钥的设置出现配置错误。  | 
| IAM 角色 [角色 ARN] 无权在 S3 存储桶 [存储桶名称] 上调用 [S3 操作]。查看您的权限并重试导出。 |  IAM 策略配置错误。缺少对 S3 桶执行特定 S3 操作的权限，这会导致导出任务失败。  | 
| KMS 密钥检查失败。检查 KMS 密钥上的凭证然后重试。 | KMS 密钥凭证检查失败。 | 
| S3 凭证检查失败。检查 S3 存储桶和 IAM 策略的权限。 | S3 凭证检查失败。 | 
| S3 存储桶 [存储桶名称] 无效。它不在当前 Amazon Web Services 区域 中，或者它不存在。检查 S3 存储桶名称，然后重试导出。 | S3 存储桶无效。 | 
| S3 桶 [桶名称] 不在当前 Amazon Web Services 区域 中。检查 S3 存储桶名称，然后重试导出。 | S3 桶处于错误的 Amazon Web Services 区域 中。 | 

## 排查 PostgreSQL 权限错误


将 PostgreSQL 数据库导出到 Amazon S3 时，您可能会看到 `PERMISSIONS_DO_NOT_EXIST` 错误，指出已跳过某些表。当您在创建数据库实例时指定的超级用户无权访问这些表时，通常会发生此错误。

要修复此错误，请运行以下命令：

```
GRANT ALL PRIVILEGES ON ALL TABLES IN SCHEMA schema_name TO superuser_name
```

有关超级用户权限的更多信息，请参阅 [主用户账户权限](UsingWithRDS.MasterAccounts.md)。

# 将数据库集群还原到指定时间
时间点故障恢复

您可以将数据库集群还原到特定时间点，从而创建新的数据库集群。

将数据库集群还原到某个时间点时，您可以选择默认的 Virtual Private Cloud (VPC) 安全组，也可以将自定义 VPC 安全组应用于数据库集群。

还原的数据库集群自动与默认数据库集群和数据库参数组关联。但是，您可以通过在还原期间指定自定义参数组来应用它们。

Amazon Aurora 不断将数据库集群的日志记录上传到 Amazon S3。要查看某个数据库集群的最晚可还原时间，请使用 Amazon CLI [describe-db-clusters](https://docs.amazonaws.cn/cli/latest/reference/rds/describe-db-clusters.html) 命令，并查看该数据库集群的 `LatestRestorableTime` 字段中返回的值。

您可以还原至备份保留期内的任何时间点。要查看某个数据库集群的最早可还原时间，请使用 Amazon CLI [describe-db-clusters](https://docs.amazonaws.cn/cli/latest/reference/rds/describe-db-clusters.html) 命令，并查看该数据库集群的 `EarliestRestorableTime` 字段中返回的值。

还原的数据库集群的备份保留期与源数据库集群的备份保留期相同。

**注意**  
本主题中的信息适用于 Amazon Aurora。有关还原 Amazon RDS 数据库实例的信息，请参阅[将数据库实例还原到指定时间](https://docs.amazonaws.cn/AmazonRDS/latest/UserGuide/USER_PIT.html)。  
有关备份和还原 Aurora 数据库集群的更多信息，请参阅[备份和还原 Aurora 数据库集群的概述](Aurora.Managing.Backups.md)。  
对于 Aurora MySQL，可以将预置的数据库集群还原为 Aurora Serverless 数据库集群。有关更多信息，请参阅 [还原 Aurora Serverless v1 数据库集群](aurora-serverless.restorefromsnapshot.md)。  
您也可以使用 Amazon Backup 来管理 Amazon Aurora 数据库集群的备份。如果您的数据库集群与 Amazon Backup 中的备份计划关联，则该备份计划用于时间点恢复。有关信息，请参阅[使用 Amazon Backup 将数据库集群还原到指定时间](aurora-pitr-bkp.md)。

有关使用 RDS 扩展支持版本还原 Aurora 数据库集群或全局集群的信息，请参阅[使用 Amazon RDS 扩展支持还原Aurora 数据集群或全局集群](extended-support-restoring-db-instance.md)。

通过自动备份、保留的自动备份或使用 Amazon Backup 将数据库集群还原到指定时间。

**Topics**
+ [

## 将数据库集群还原到某个时间点
](#aurora-pitr.restore)
+ [

# 将数据库集群从保留的自动备份还原到指定时间
](aurora-pitr-retained.md)
+ [

# 使用 Amazon Backup 将数据库集群还原到指定时间
](aurora-pitr-bkp.md)

## 将数据库集群还原到某个时间点


您可以使用 Amazon Web Services 管理控制台、Amazon CLI 或 RDS API 将数据库集群还原到某个时间点。

### 控制台


**将数据库集群还原到指定时间**

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

1. 在导航窗格中，选择 **Automated backups (自动备份)**。

   自动备份便会显示在 **Current Region**（当前区域）选项卡上。  
![\[自动备份配置面板，显示保留期设置和备份时段选项。\]](http://docs.amazonaws.cn/AmazonRDS/latest/AuroraUserGuide/images/db-cluster-automated-backups.png)

1. 选择要还原的 数据库集群。

1. 对于 **Actions (操作)**，选择 **Restore to point in time (还原到时间点)**。

   此时会显示**还原到时间点**窗口。

1. 选择**最近可还原时间**以还原到可能的最近时间，或选择**自定义**来选择时间。

   如果选择 **Custom**（自定义），请输入要还原集群的指定日期和时间。
**注意**  
时间以您的本地时区显示，表示为协调世界时 (UTC) 的偏移量。例如，UTC-5 是东部标准时间/中部夏令时。

1. 对于**数据库集群标识符**，请输入还原后的目标数据库集群的名称。名称必须唯一。

1. 根据需要选择其他选项，例如数据库实例类和数据库集群存储配置。

   有关每项设置的信息，请参阅 [Aurora 数据库集群的设置](Aurora.CreateInstance.md#Aurora.CreateInstance.Settings)。

1. 选择**还原到时间点**。

### Amazon CLI


要将数据库集群还原到指定时间，请使用 Amazon CLI 命令 [restore-db-cluster-to-point-in-time](https://docs.amazonaws.cn/cli/latest/reference/rds/restore-db-cluster-to-point-in-time.html) 创建新的数据库集群。

您可以指定其他设置。有关每项设置的信息，请参阅 [Aurora 数据库集群的设置](Aurora.CreateInstance.md#Aurora.CreateInstance.Settings)。

如果请求中提供了标签，则所提供的标签将应用于还原的数据库集群。如果请求中未提供标签，并且源数据库集群在区域内处于活动状态并具有标签，则 Aurora 会将源数据库集群中的最新标签添加到还原的数据库集群。

**Example**  
对于 Linux、macOS 或 Unix：  

```
1. aws rds restore-db-cluster-to-point-in-time \
2.        --source-db-cluster-identifier mysourcedbcluster \
3.        --db-cluster-identifier mytargetdbcluster \
4.        --restore-to-time 2017-10-14T23:45:00.000Z
```
对于：Windows  

```
1. aws rds restore-db-cluster-to-point-in-time ^
2.        --source-db-cluster-identifier mysourcedbcluster ^
3.        --db-cluster-identifier mytargetdbcluster ^
4.        --restore-to-time 2017-10-14T23:45:00.000Z
```

**重要**  
如果您使用控制台将数据库集群还原到指定时间，则 Amazon RDS 会为您的数据库集群自动创建主实例（写入器）。如果您使用 Amazon CLI 将数据库集群还原到指定时间，则必须明确为数据库集群创建主实例。主实例是在数据库集群中创建的第一个实例。  
要为数据库集群创建主实例，请调用 [create-db-instance](https://docs.amazonaws.cn/cli/latest/reference/rds/create-db-instance.html) Amazon CLI 命令。包括数据库集群名称以作为 `--db-cluster-identifier` 选项值。

### RDS API


要将数据库集群还原到指定时间，请结合以下参数调用 Amazon RDS API [https://docs.amazonaws.cn/AmazonRDS/latest/APIReference/API_RestoreDBClusterToPointInTime.html](https://docs.amazonaws.cn/AmazonRDS/latest/APIReference/API_RestoreDBClusterToPointInTime.html) 操作：
+ `SourceDBClusterIdentifier`
+ `DBClusterIdentifier`
+ `RestoreToTime`

**重要**  
如果您使用控制台将数据库集群还原到指定时间，则 Amazon RDS 会为您的数据库集群自动创建主实例（写入器）。如果使用 RDS API 将数据库集群还原到指定时间，请确保为数据库集群明确创建主实例。主实例是在数据库集群中创建的第一个实例。  
要为数据库集群创建主实例，请调用 RDS API 操作 [CreateDBInstance](https://docs.amazonaws.cn/AmazonRDS/latest/APIReference/API_CreateDBInstance.html)。包括数据库集群的名称作为 `DBClusterIdentifier` 参数值。

# 将数据库集群从保留的自动备份还原到指定时间
从保留的自动备份中进行时间点恢复

如果备份在源集群的保留期内，则可以在删除源数据库集群后，从保留的自动备份中还原数据库集群。该过程类似于从自动备份中还原数据库集群。

**注意**  
您无法使用此过程还原 Aurora Serverless v1 数据库集群，因为不会保留 Aurora Serverless v1 集群的自动备份。

## 控制台


**将数据库集群还原到指定时间**

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

1. 在导航窗格中，选择 **Automated backups**（自动备份）。

1. 选择**已保留**选项卡。  
![\[\]](http://docs.amazonaws.cn/AmazonRDS/latest/AuroraUserGuide/images/db-cluster-retained-automated-backups.png)

1. 选择要还原的 数据库集群。

1. 对于 **Actions (操作)**，选择 **Restore to point in time (还原到时间点)**。

   此时会显示**还原到时间点**窗口。

1. 选择**最近可还原时间**以还原到可能的最近时间，或选择**自定义**来选择时间。

   如果选择 **Custom**（自定义），请输入要还原集群的指定日期和时间。
**注意**  
时间以您的本地时区显示，表示为协调世界时 (UTC) 的偏移量。例如，UTC-5 是东部标准时间/中部夏令时。

1. 对于**数据库集群标识符**，请输入还原后的目标数据库集群的名称。名称必须唯一。

1. 根据需要选择其他选项，例如数据库实例类。

   有关每项设置的信息，请参阅 [Aurora 数据库集群的设置](Aurora.CreateInstance.md#Aurora.CreateInstance.Settings)。

1. 选择**还原到时间点**。

## Amazon CLI


要将数据库集群还原到指定时间，请使用 Amazon CLI 命令 [restore-db-cluster-to-point-in-time](https://docs.amazonaws.cn/cli/latest/reference/rds/restore-db-cluster-to-point-in-time.html) 创建新的数据库集群。

您可以指定其他设置。有关每项设置的信息，请参阅 [Aurora 数据库集群的设置](Aurora.CreateInstance.md#Aurora.CreateInstance.Settings)。

此操作支持资源标记。使用 `--tags` 选项时，将忽略源数据库集群标签，并使用提供的标签。否则，将使用源集群中的最新标签。

**Example**  
对于 Linux、macOS 或 Unix：  

```
1. aws rds restore-db-cluster-to-point-in-time \
2.     --source-db-cluster-resource-id cluster-123ABCEXAMPLE \
3.     --db-cluster-identifier mytargetdbcluster \
4.     --restore-to-time 2017-10-14T23:45:00.000Z
```
对于 Windows：  

```
1. aws rds restore-db-cluster-to-point-in-time ^
2.     --source-db-cluster-resource-id cluster-123ABCEXAMPLE ^
3.     --db-cluster-identifier mytargetdbcluster ^
4.     --restore-to-time 2017-10-14T23:45:00.000Z
```

**重要**  
如果您使用控制台将数据库集群还原到指定时间，则 Amazon RDS 会为您的数据库集群自动创建主实例（写入器）。如果您使用 Amazon CLI 将数据库集群还原到指定时间，则必须明确为数据库集群创建主实例。主实例是在数据库集群中创建的第一个实例。  
要为数据库集群创建主实例，请调用 [create-db-instance](https://docs.amazonaws.cn/cli/latest/reference/rds/create-db-instance.html) Amazon CLI 命令。包括数据库集群名称以作为 `--db-cluster-identifier` 选项值。

## RDS API


要将数据库集群还原到指定时间，请结合以下参数调用 Amazon RDS API [https://docs.amazonaws.cn/AmazonRDS/latest/APIReference/API_RestoreDBClusterToPointInTime.html](https://docs.amazonaws.cn/AmazonRDS/latest/APIReference/API_RestoreDBClusterToPointInTime.html) 操作：
+ `SourceDbClusterResourceId`
+ `DBClusterIdentifier`
+ `RestoreToTime`

**重要**  
如果您使用控制台将数据库集群还原到指定时间，则 Amazon RDS 会为您的数据库集群自动创建主实例（写入器）。如果使用 RDS API 将数据库集群还原到指定时间，请确保为数据库集群明确创建主实例。主实例是在数据库集群中创建的第一个实例。  
要为数据库集群创建主实例，请调用 RDS API 操作 [CreateDBInstance](https://docs.amazonaws.cn/AmazonRDS/latest/APIReference/API_CreateDBInstance.html)。包括数据库群集的名称作为 `DBClusterIdentifier` 参数值。

# 使用 Amazon Backup 将数据库集群还原到指定时间
使用 Amazon Backup 的时间点恢复

您可以使用 Amazon Backup 管理您的自动备份，然后将其还原到指定时间。为此，您需要在 Amazon Backup 中创建备份计划，并将您的数据库集群分配为资源。然后，您可以在备份规则中为 PITR 启用连续备份。有关备份计划和备份规则的更多信息，请参阅 [https://docs.amazonaws.cn/aws-backup/latest/devguide](https://docs.amazonaws.cn/aws-backup/latest/devguide)。

## 在 Amazon Backup 中启用连续备份


您可以在备份规则中启用连续备份。

**为 PITR 启用连续备份**

1. 登录到 Amazon Web Services 管理控制台，然后通过以下网址打开 Amazon Backup 控制台：[https://console.aws.amazon.com/backup](https://console.amazonaws.cn/backup)。

1. 在导航窗格中，选择**备份计划**。

1. 在**备份计划名称**下，选择用于备份数据库集群的备份计划。

1. 在**备份规则**部分下，选择**添加备份规则**。

   将显示**添加备份规则**页面。

1. 选中**启用连续备份以实现时间点故障恢复（PITR）**复选框。  
![\[启用连续备份以实现时间点故障恢复（PITR）。\]](http://docs.amazonaws.cn/AmazonRDS/latest/AuroraUserGuide/images/add_backup_rule_continuous_v2.png)

1. 根据需要选择其他设置，然后选择**添加备份规则**。

## 从 Amazon Backup 中的连续备份还原


您从备份保管库还原到指定时间。

### 控制台


可以使用 Amazon Web Services 管理控制台 将数据库集群还原到指定时间。

**从 Amazon Backup 中的连续备份还原**

1. 登录到 Amazon Web Services 管理控制台，然后通过以下网址打开 Amazon Backup 控制台：[https://console.aws.amazon.com/backup](https://console.amazonaws.cn/backup)。

1. 在导航窗格中，选择**备份保管库**。

1. 例如，选择包含连续备份的备份保管库，例如**默认**。

   将显示备份保管库详细信息页面。

1. 在**恢复点**下，选择自动备份的恢复点。

   它的备份类型为**连续**，且名称带有 `continuous:cluster-AWS-Backup-job-number`。

1. 对于**操作**，选择**还原**。

   将显示**还原备份**页面。  
![\[时间点故障恢复（PITR）的“还原备份”页面。\]](http://docs.amazonaws.cn/AmazonRDS/latest/AuroraUserGuide/images/backup_vault_pitr.png)

1. 对于**还原到时间点**，请选择**指定日期和时间**以还原到特定的时间点。

1. 根据需要选择其他设置以还原数据库集群，然后选择**还原备份**。

   将显示**任务**页面，其中显示**还原任务**窗格。页面顶部的消息提供了有关还原作业的信息。

还原数据库集群后，必须向其添加主（写入器）数据库实例。要为数据库集群创建主实例，请调用 [create-db-instance](https://docs.amazonaws.cn/cli/latest/reference/rds/create-db-instance.html) Amazon CLI 命令。包括数据库群集的名称作为 `--db-cluster-identifier` 参数值。

### CLI


请使用 [start-restore-job](https://awscli.amazonaws.com/v2/documentation/api/latest/reference/backup/start-restore-job.html) Amazon CLI 命令将数据库集群还原到指定时间。以下参数为必需参数：
+ `--recovery-point-arn` – 要从中还原的恢复点的 Amazon 资源名称（ARN）。
+ `--resource-type` – 使用 `Aurora`。
+ `--iam-role-arn` – 您用于 Amazon Backup 操作的 IAM 角色的 ARN。
+ `--metadata` – 用于还原数据库集群的元数据。以下参数为必需参数：
  + `DBClusterIdentifier`
  + `Engine`
  + `RestoreToTime` 或 `UseLatestRestorableTime`

以下示例说明如何将数据库集群还原到指定时间。

```
aws backup start-restore-job \
--recovery-point-arn arn:aws:backup:eu-central-1:123456789012:recovery-point:continuous:cluster-itsreallyjustanexample1234567890-487278c2 \
--resource-type Aurora \
--iam-role-arn arn:aws:iam::123456789012:role/service-role/AWSBackupDefaultServiceRole \
--metadata '{"DBClusterIdentifier":"backup-pitr-test","Engine":"aurora-mysql","RestoreToTime":"2023-09-01T17:00:00.000Z"}'
```

以下示例说明如何将数据库集群还原到最新的可还原时间。

```
aws backup start-restore-job \
--recovery-point-arn arn:aws:backup:eu-central-1:123456789012:recovery-point:continuous:cluster-itsreallyjustanexample1234567890-487278c2 \
--resource-type Aurora \
--iam-role-arn arn:aws:iam::123456789012:role/service-role/AWSBackupDefaultServiceRole \
--metadata '{"DBClusterIdentifier":"backup-pitr-latest","Engine":"aurora-mysql","UseLatestRestorableTime":"true"}'
```

还原数据库集群后，必须向其添加主（写入器）数据库实例。要为数据库集群创建主实例，请调用 [create-db-instance](https://docs.amazonaws.cn/cli/latest/reference/rds/create-db-instance.html) Amazon CLI 命令。包括数据库群集的名称作为 `--db-cluster-identifier` 参数值。

# 删除数据库集群快照


如果不再需要，您可以删除 Amazon RDS 管理的数据库集群快照。

**注意**  
要删除 Amazon Backup 管理的备份，请使用 Amazon Backup 控制台。有关 Amazon Backup 的更多信息，请参阅 [https://docs.amazonaws.cn/aws-backup/latest/devguide](https://docs.amazonaws.cn/aws-backup/latest/devguide)。

## 删除数据库集群快照


您可以使用控制台、Amazon CLI 或 RDS API 删除数据库集群快照。

要删除共享或公共快照，您必须登录到拥有快照的 Amazon 账户。

### 控制台


**删除数据库集群快照**

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

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

1. 选择要删除的数据库集群快照。

1. 对于 **Actions**（操作），选择 **Delete snapshot**（删除快照）。

1. 在确认页面上选择 **Delete (删除)**。

### Amazon CLI


您可以使用 Amazon CLI 命令 [delete-db-cluster-snapshot](https://docs.amazonaws.cn/cli/latest/reference/rds/delete-db-cluster-snapshot.html) 删除数据库集群快照。

以下选项用于删除数据库集群快照。
+ `--db-cluster-snapshot-identifier` – 数据库集群快照的标识符。

**Example**  
以下代码删除 `mydbclustersnapshot` 数据库集群快照。  
对于 Linux、macOS 或 Unix：  

```
1. aws rds delete-db-cluster-snapshot \
2.     --db-cluster-snapshot-identifier mydbclustersnapshot
```
对于 Windows：  

```
1. aws rds delete-db-cluster-snapshot ^
2.     --db-cluster-snapshot-identifier mydbclustersnapshot
```

### RDS API


您可以使用 Amazon RDS API 操作 [DeleteDBClusterSnapshot](https://docs.amazonaws.cn/AmazonRDS/latest/APIReference/API_DeleteDBClusterSnapshot.html) 删除数据库集群快照。

以下参数用于删除数据库集群快照。
+ `DBClusterSnapshotIdentifier` – 数据库集群快照的标识符。

# 教程：从数据库集群快照中还原 Amazon Aurora 数据库集群
教程：从快照还原数据库集群

使用 Amazon Aurora 的一个常见情况就是您有一个偶尔使用而不是一直使用的数据库实例。例如，您可以使用数据库集群来保存仅每季度运行一次的报告的数据。在这种情况下节省资金的一种方法是在完成报告后创建数据库集群的数据库集群快照。然后，您删除数据库集群，并在需要上载新数据以及在下一季度运行报告时将其还原。

在还原数据库集群时，您需要提供用来还原的数据库集群快照的名称。然后，为通过还原操作创建的新数据库集群提供名称。有关从快照还原数据库集群的更多详细信息，请参阅[从数据库集群快照还原](aurora-restore-snapshot.md)。

在本教程中，我们还将还原的数据库集群从 Aurora MySQL 版本 2（与 MySQL 5.7 兼容）升级到 Aurora MySQL 版本 3（与 MySQL 8.0 兼容）。

使用 Amazon RDS 控制台或 Amazon CLI，通过数据库集群快照将数据库集群还原到指定时间。

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

**Topics**
+ [

# 教程：使用 Amazon RDS 控制台从数据库集群快照中还原数据库集群
](tut-restore-cluster.console.md)
+ [

# 教程：使用 Amazon CLI 从数据库集群快照中还原数据库集群
](tut-restore-cluster.CLI.md)

# 教程：使用 Amazon RDS 控制台从数据库集群快照中还原数据库集群
使用控制台还原数据库集群

在本教程中，您使用 Amazon RDS 控制台从数据库集群快照中还原数据库集群。使用 Amazon Web Services 管理控制台从快照还原数据库集群时，还将创建主（写入器）数据库实例。

**注意**  
在创建主数据库实例时，它显示为读取器实例，但创建后，它是写入器实例。

**从数据库集群快照还原数据库集群**

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

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

1. 选择要从其还原的数据库集群快照。

1. 对于**操作**，选择**还原快照**。  
![\[RDS 控制台操作菜单中的还原快照选项\]](http://docs.amazonaws.cn/AmazonRDS/latest/AuroraUserGuide/images/tut-restore-cluster1.png)

   此时会显示**还原快照**页面。

1. 在 **DB instance settings**（数据库实例设置）下，执行下列操作：

   1. 对 **DB engine**（数据库引擎）使用默认设置。

   1. 对于**可用版本**，选择与 MySQL 8.0 兼容的版本，例如 **Aurora MySQL 3.04.0（与 MySQL 8.0.28 兼容）**。  
![\[还原快照页面\]](http://docs.amazonaws.cn/AmazonRDS/latest/AuroraUserGuide/images/tut-restore-cluster2.png)

1. 在 **Settings**（设置）项下的 **DB instance identifier**（数据库实例标识符）中，输入要用于还原的数据库实例的唯一名称，如 **my-80**。
**注意**  
为创建数据库集群标识符，Amazon RDS 将 `-cluster` 附加到您指定的数据库实例标识符之后。

1. 在 **Connectivity**（连接）项下，使用以下各项的默认设置：
   + **Virtual Private Cloud (VPC)** [虚拟私有云（VPC）]
   + **DB subnet group**（数据库子网组）
   + **公有访问权限**
   + **VPC security group (firewall)** [VPC 安全组（防火墙）]

1. 选择 **DB instance class**（数据库实例类）。

   在本教程中，请选择 **Burstable classes (includes t classes)** [突增型类（包括 t 类）]，然后选择 **db.t3.medium**。
**注意**  
建议仅将 T 数据库实例类用于开发和测试服务器，或其他非生产服务器。有关 T 实例类的更多详细信息，请参阅[数据库实例类类型](Concepts.DBInstanceClass.Types.md)。  
![\[数据库实例配置面板，其中包含还原期间的实例类、可用性和性能设置选项。\]](http://docs.amazonaws.cn/AmazonRDS/latest/AuroraUserGuide/images/tut-restore-cluster3.png)

1. 对于 **Database authentication**（数据库身份验证），请使用默认设置。

1. 使用 **Encryption**（加密）项的默认设置。

   如果快照的源数据库集群已加密，则还原的数据库集群也会加密。您无法将其设置为未加密。

1. 展开页面底部的 **Additional configuration**（其他配置）。  
![\[用于数据库还原的其它配置选项，包括网络设置、加密和维护首选项。\]](http://docs.amazonaws.cn/AmazonRDS/latest/AuroraUserGuide/images/tut-restore-cluster4.png)

1. 进行以下选择：

   1. 对于本教程，为 **DB cluster parameter group**（数据库集群参数组）使用默认值。

   1. 对于本教程，为 **DB parameter group**（数据库参数组）使用默认值。

   1. 对于 **Log exports**（日志导出），选中所有复选框。

   1. 对于 **Deletion protection**（删除保护），选中 **Enable deletion protection**（启用删除保护）复选框。

1. 选择**还原数据库实例**。

**Databases**（数据库）页面会显示状态为 `Creating` 的已还原数据库集群。

![\[Databases（数据库）页面上已还原的数据库集群\]](http://docs.amazonaws.cn/AmazonRDS/latest/AuroraUserGuide/images/tut-restore-cluster5.png)


在创建主数据库实例时，它显示为读取器实例，但创建后，它是写入器实例。

# 教程：使用 Amazon CLI 从数据库集群快照中还原数据库集群
使用 Amazon CLI 还原数据库集群

在本教程中，您使用 Amazon CLI 从数据库集群快照中还原数据库集群。使用 Amazon CLI 从快照还原恢复数据库集群有两个步骤：

1. [还原数据库集群](#tut-restore-cluster.CLI.restore) 使用 [restore-db-cluster-from-snapshot](https://docs.amazonaws.cn/cli/latest/reference/rds/restore-db-cluster-from-snapshot.html) 命令

1. [创建主（写入器）数据库实例](#tut-restore-cluster.CLI.create) 使用 [create-db-instance](https://docs.amazonaws.cn/cli/latest/reference/rds/create-db-instance.html) 命令

## 还原数据库集群


您使用 `restore-db-cluster-from-snapshot` 命令。以下选项为必填：
+ `--db-cluster-identifier` – 已还原的数据库集群的名称。
+ `--snapshot-identifier` – 要从中进行还原的数据库快照的名称。
+ `--engine` – 已还原的数据库集群的数据库引擎。它必须与源数据库集群的数据库引擎兼容。

  选项如下：
  + `aurora-mysql` – 与 Aurora MySQL 5.7 和 8.0 兼容。
  + `aurora-postgresql` – 与 Aurora PostgreSQL 兼容。

  在此示例中，我们使用的是 `aurora-mysql`。
+ `--engine-version` – 已还原的数据库集群的版本。在此示例中，我们使用与 MySQL 8.0 兼容的版本。

以下示例从名为 `my-57-cluster-snapshot` 的数据库集群快照中还原与 Aurora MySQL 8.0 兼容的名为 `my-new-80-cluster` 的数据库集群。

**还原数据库集群**
+ 使用以下命令之一。

  对于 Linux、macOS 或 Unix：

  ```
  aws rds restore-db-cluster-from-snapshot \
      --db-cluster-identifier my-new-80-cluster \
      --snapshot-identifier my-57-cluster-snapshot \
      --engine aurora-mysql \
      --engine-version 8.0.mysql_aurora.3.02.0
  ```

  对于 Windows：

  ```
  aws rds restore-db-cluster-from-snapshot ^
      --db-cluster-identifier my-new-80-cluster ^
      --snapshot-identifier my-57-cluster-snapshot ^
      --engine aurora-mysql ^
      --engine-version 8.0.mysql_aurora.3.02.0
  ```

输出与以下内容类似。

```
{
    "DBCluster": {
        "AllocatedStorage": 1,
        "AvailabilityZones": [
            "eu-central-1b",
            "eu-central-1c",
            "eu-central-1a"
        ],
        "BackupRetentionPeriod": 14,
        "DatabaseName": "",
        "DBClusterIdentifier": "my-new-80-cluster",
        "DBClusterParameterGroup": "default.aurora-mysql8.0",
        "DBSubnetGroup": "default",
        "Status": "creating",
        "Endpoint": "my-new-80-cluster.cluster-############.eu-central-1.rds.amazonaws.com",
        "ReaderEndpoint": "my-new-80-cluster.cluster-ro-############.eu-central-1.rds.amazonaws.com",
        "MultiAZ": false,
        "Engine": "aurora-mysql",
        "EngineVersion": "8.0.mysql_aurora.3.02.0",
        "Port": 3306,
        "MasterUsername": "admin",
        "PreferredBackupWindow": "01:55-02:25",
        "PreferredMaintenanceWindow": "thu:21:14-thu:21:44",
        "ReadReplicaIdentifiers": [],
        "DBClusterMembers": [],
        "VpcSecurityGroups": [
            {
                "VpcSecurityGroupId": "sg-########",
                "Status": "active"
            }
        ],
        "HostedZoneId": "Z1RLNU0EXAMPLE",
        "StorageEncrypted": true,
        "KmsKeyId": "arn:aws:kms:eu-central-1:123456789012:key/#######-5ccc-49cc-8aaa-############",
        "DbClusterResourceId": "cluster-ZZ12345678ITSJUSTANEXAMPLE",
        "DBClusterArn": "arn:aws:rds:eu-central-1:123456789012:cluster:my-new-80-cluster",
        "AssociatedRoles": [],
        "IAMDatabaseAuthenticationEnabled": false,
        "ClusterCreateTime": "2022-07-05T20:45:42.171000+00:00",
        "EngineMode": "provisioned",
        "DeletionProtection": false,
        "HttpEndpointEnabled": false,
        "CopyTagsToSnapshot": false,
        "CrossAccountClone": false,
        "DomainMemberships": [],
        "TagList": []
    }
}
```

## 创建主（写入器）数据库实例


要创建主（写入器）数据库实例，请使用 `create-db-instance` 命令。以下选项为必填：
+ `--db-cluster-identifier` – 已还原的数据库集群的名称。
+ `--db-instance-identifier` – 主数据库实例的名称。
+ `--db-instance-class` – 主数据库实例类的实例名称。在此示例中，我们使用的是 `db.t3.medium`。
**注意**  
建议仅将 T 数据库实例类用于开发和测试服务器，或其他非生产服务器。有关 T 实例类的更多详细信息，请参阅[数据库实例类类型](Concepts.DBInstanceClass.Types.md)。
+ `--engine` –主数据库实例的数据库引擎。它必须与已还原的数据库集群使用的数据库引擎相同。

  选项如下：
  + `aurora-mysql` – 与 Aurora MySQL 5.7 和 8.0 兼容。
  + `aurora-postgresql` – 与 Aurora PostgreSQL 兼容。

  在此示例中，我们使用的是 `aurora-mysql`。

以下示例在已还原的与 Aurora MySQL 8.0 兼容且名为 `my-new-80-cluster` 的数据库集群中创建一个名为 `my-new-80-cluster-instance` 的主（写入器）数据库实例。

**创建主数据库实例**
+ 使用以下命令之一。

  对于 Linux、macOS 或 Unix：

  ```
  aws rds create-db-instance \
      --db-cluster-identifier my-new-80-cluster \
      --db-instance-identifier my-new-80-cluster-instance \
      --db-instance-class db.t3.medium \
      --engine aurora-mysql
  ```

  对于 Windows：

  ```
  aws rds create-db-instance ^
      --db-cluster-identifier my-new-80-cluster ^
      --db-instance-identifier my-new-80-cluster-instance ^
      --db-instance-class db.t3.medium ^
      --engine aurora-mysql
  ```

输出与以下内容类似。

```
{
    "DBInstance": {
        "DBInstanceIdentifier": "my-new-80-cluster-instance",
        "DBInstanceClass": "db.t3.medium",
        "Engine": "aurora-mysql",
        "DBInstanceStatus": "creating",
        "MasterUsername": "admin",
        "AllocatedStorage": 1,
        "PreferredBackupWindow": "01:55-02:25",
        "BackupRetentionPeriod": 14,
        "DBSecurityGroups": [],
        "VpcSecurityGroups": [
            {
                "VpcSecurityGroupId": "sg-########",
                "Status": "active"
            }
        ],
        "DBParameterGroups": [
            {
                "DBParameterGroupName": "default.aurora-mysql8.0",
                "ParameterApplyStatus": "in-sync"
            }
        ],
        "DBSubnetGroup": {
            "DBSubnetGroupName": "default",
            "DBSubnetGroupDescription": "default",
            "VpcId": "vpc-2305ca49",
            "SubnetGroupStatus": "Complete",
            "Subnets": [
                {
                    "SubnetIdentifier": "subnet-########",
                    "SubnetAvailabilityZone": {
                        "Name": "eu-central-1a"
                    },
                    "SubnetOutpost": {},
                    "SubnetStatus": "Active"
                },
                {
                    "SubnetIdentifier": "subnet-########",
                    "SubnetAvailabilityZone": {
                        "Name": "eu-central-1b"
                    },
                    "SubnetOutpost": {},
                    "SubnetStatus": "Active"
                },
                {
                    "SubnetIdentifier": "subnet-########",
                    "SubnetAvailabilityZone": {
                        "Name": "eu-central-1c"
                    },
                    "SubnetOutpost": {},
                    "SubnetStatus": "Active"
                }
            ]
        },
        "PreferredMaintenanceWindow": "sat:02:41-sat:03:11",
        "PendingModifiedValues": {},
        "MultiAZ": false,
        "EngineVersion": "8.0.mysql_aurora.3.02.0",
        "AutoMinorVersionUpgrade": true,
        "ReadReplicaDBInstanceIdentifiers": [],
        "LicenseModel": "general-public-license",
        "OptionGroupMemberships": [
            {
                "OptionGroupName": "default:aurora-mysql-8-0",
                "Status": "in-sync"
            }
        ],
        "PubliclyAccessible": false,
        "StorageType": "aurora",
        "DbInstancePort": 0,
        "DBClusterIdentifier": "my-new-80-cluster",
        "StorageEncrypted": true,
        "KmsKeyId": "arn:aws:kms:eu-central-1:534026745191:key/#######-5ccc-49cc-8aaa-############",
        "DbiResourceId": "db-5C6UT5PU0YETANOTHEREXAMPLE",
        "CACertificateIdentifier": "rds-ca-2019",
        "DomainMemberships": [],
        "CopyTagsToSnapshot": false,
        "MonitoringInterval": 0,
        "PromotionTier": 1,
        "DBInstanceArn": "arn:aws:rds:eu-central-1:123456789012:db:my-new-80-cluster-instance",
        "IAMDatabaseAuthenticationEnabled": false,
        "PerformanceInsightsEnabled": false,
        "DeletionProtection": false,
        "AssociatedRoles": [],
        "TagList": []
    }
}
```