

# 将数据库集群数据导出到 Amazon S3
<a name="export-cluster-data"></a>

您可以将数据从实时 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://aws.amazon.com/rds/aurora/pricing/)。

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

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

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

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

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

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

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

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

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

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

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

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

   您可以在您的 AWS 账户内使用 KMS 密钥，或者您可以使用跨账户 KMS 密钥。有关更多信息，请参阅 [使用跨账户 AWS 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.aws.amazon.com/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)

# 数据库集群导出注意事项
<a name="export-cluster-data.Considerations"></a>

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

**Topics**
+ [限制](#export-cluster-data.Limits)
+ [文件命名约定](#export-cluster-data.FileNames)
+ [数据转换和存储格式](#export-cluster-data.data-types)

## 限制
<a name="export-cluster-data.Limits"></a>

将数据库集群数据导出到 Amazon S3 有以下限制：
+ 您不能同时为同一个数据库集群运行多个导出任务。这同时适用于完全导出和部分导出。
+ 每个 AWS 账户 最多可以执行五个并发数据库快照导出任务。
+ 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* 的导出任务已存在。
+ 由于某些表可能会被跳过，因此建议您在导出后验证数据中的行数和表数。

## 文件命名约定
<a name="export-cluster-data.FileNames"></a>

特定表的导出数据以 `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
```

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

## 数据转换和存储格式
<a name="export-cluster-data.data-types"></a>

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

# 设置 Amazon S3 存储桶的访问权限
<a name="export-cluster-data.Setup"></a>

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

**Topics**
+ [标识要导出到的 Amazon S3 存储桶](#export-cluster-data.SetupBucket)
+ [使用 IAM 角色提供对 Amazon S3 存储桶的访问权限](#export-cluster-data.SetupIAMRole)
+ [使用跨账户 Amazon S3 存储桶](#export-cluster-data.Setup.XAcctBucket)

## 标识要导出到的 Amazon S3 存储桶
<a name="export-cluster-data.SetupBucket"></a>

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

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

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

## 使用 IAM 角色提供对 Amazon S3 存储桶的访问权限
<a name="export-cluster-data.SetupIAMRole"></a>

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

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

**重要**  
如果计划使用 AWS 管理控制台导出数据库集群，则可以选择在导出数据库集群时自动创建 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.aws.amazon.com//IAM/latest/UserGuide/tutorial_managed-policies.html)。

   以下 AWS 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.aws.amazon.com//IAM/latest/UserGuide/id_roles_create_for-user.html)。

   以下示例说明了如何使用 AWS 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 角色。

   以下 AWS 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 存储桶
<a name="export-cluster-data.Setup.XAcctBucket"></a>

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

# 创建数据库集群导出任务
<a name="export-cluster-data.Exporting"></a>

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

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

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

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

## 控制台
<a name="export-cluster-data.ExportConsole"></a>

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

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

1. 登录 AWS 管理控制台 并通过以下网址打开 Amazon RDS 控制台：[https://console.aws.amazon.com/rds/](https://console.aws.amazon.com/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)**。

## AWS CLI
<a name="export-cluster-data.ExportCLI"></a>

要使用 AWS CLI 将数据库集群数据导出到 Amazon S3，请使用包含以下所需选项的 [start-export-task](https://docs.aws.amazon.com/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.aws.amazon.com/cli/latest/reference/rds/start-export-task.html) 命令中包含 `--s3-prefix` 选项。

## RDS API
<a name="export-cluster-data.ExportAPI"></a>

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

# 监控数据库集群导出任务
<a name="export-cluster-data.Monitoring"></a>

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

## 控制台
<a name="export-cluster-data.MonitorConsole"></a>

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

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

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

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

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

## AWS CLI
<a name="export-cluster-data.MonitorCLI"></a>

要使用 AWS CLI 监控数据库集群导出任务，请使用 [describe-export-tasks](https://docs.aws.amazon.com/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 AWS 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.aws.amazon.com/cli/latest/reference/rds/describe-export-tasks.html) 命令。

## RDS API
<a name="export-cluster-data.MonitorAPI"></a>

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

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

# 取消数据库集群导出任务
<a name="export-cluster-data.Canceling"></a>

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

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

## 控制台
<a name="export-cluster-data.CancelConsole"></a>

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

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

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

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

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

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

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

 

## AWS CLI
<a name="export-cluster-data.CancelCLI"></a>

要使用 AWS CLI 取消导出任务，请使用 [cancel-export-task](https://docs.aws.amazon.com/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
<a name="export-cluster-data.CancelAPI"></a>

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

# 数据库集群导出故障排除
<a name="export-cluster-data.Troubleshooting"></a>

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

## Amazon S3 导出任务的失败消息
<a name="export-cluster-data.failure-msg"></a>

下表描述了 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.aws.amazon.com/zh_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 存储桶 [存储桶名称] 无效。它不在当前 AWS 区域 中，或者它不存在。检查 S3 存储桶名称，然后重试导出。 | S3 存储桶无效。 | 
| S3 桶 [桶名称] 不在当前 AWS 区域 中。检查 S3 存储桶名称，然后重试导出。 | S3 桶处于错误的 AWS 区域 中。 | 

## 排查 PostgreSQL 权限错误
<a name="export-cluster-data.postgres-permissions"></a>

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

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

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

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