

# 创建数据库集群导出任务
<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`