

本文属于机器翻译版本。若本译文内容与英语原文存在差异，则一律以英文原文为准。

# 创建 Amazon DocumentDB 集群
<a name="db-cluster-create"></a>

Amazon DocumentDB 集群由一些实例和一个表示该集群的数据的集群卷组成。集群卷作为单个虚拟卷在三个可用区之间的 6 个方向进行复制。集群包含一个主实例，以及可选的最多 15 个副本实例。

以下各节介绍如何使用 AWS 管理控制台 或创建 Amazon DocumentDB 集群。 AWS CLI然后，您可为该集群添加更多副本实例。使用控制台创建 Amazon DocumentDB 集群时，会同时自动为您创建一个主实例。如果您使用创建您的 AWS CLI Amazon DocumentDB 集群，则在集群的状态变为*可用*之后，您必须为该集群创建主实例。

## 先决条件
<a name="db-cluster-create-prerequisites"></a>

以下是创建 Amazon DocumentDB 集群的先决条件。

如果您没有 AWS 账户，请完成以下步骤来创建一个。

**要注册 AWS 账户**

1. 打开[https://portal.aws.amazon.com/billing/注册。](https://portal.aws.amazon.com/billing/signup)

1. 按照屏幕上的说明操作。

   在注册时，将接到电话或收到短信，要求使用电话键盘输入一个验证码。

   当您注册时 AWS 账户，就会创建*AWS 账户根用户*一个。根用户有权访问该账户中的所有 AWS 服务 和资源。作为最佳安全实践，请为用户分配管理访问权限，并且只使用根用户来执行[需要根用户访问权限的任务](https://docs.aws.amazon.com/IAM/latest/UserGuide/id_root-user.html#root-user-tasks)。

### VPC 先决条件
<a name="db-cluster-create-prerequisites-vpc"></a>

只能在 Amazon Virtual Private Cloud (Amazon VPC) 中创建 Amazon DocumentDB 集群。要在 Amazon DocumentDB 集群中使用您的 Amazon VPC，该 Amazon VPC 必须最少在两个可用区中均拥有至少一个子网。通过跨可用区分配您的集群实例，您可以确保集群中有可用的实例，避免出现可用区故障。

### 子网先决条件
<a name="db-cluster-create-prerequisites-subnet-groups"></a>

创建 Amazon DocumentDB 集群时，您必须选择一个 VPC 和该 VPC 中的对应子网组来启动您的集群。子网确定可用区以及该可用区内要用于启动实例的 IP 范围。为进行此讨论，我们将互换使用术语*子网* 和*可用区*。子网组是一组指定的子网（或可用区）。子网组可让您指定要用于启动 Amazon DocumentDB 实例的可用区。例如，在包含三个实例的集群中，为了实现高可用性，建议在单独的可用区中配置各个实例。因此，如果单个可用区出现故障，它只会影响单个实例。

Amazon DocumentDB 实例目前可在多达三个可用区中预配置。即使子网组拥有三个以上的子网，您也只能使用其中的三个子网来创建 Amazon DocumentDB 集群。因此，在创建子网组时，建议仅选择要将实例部署到的三个子网。在美国东部（弗吉尼亚州北部），您的子网组可以有六个子网（或可用区）。但是，当已预配置一个 Amazon DocumentDB 集群后，Amazon DocumentDB 将选择这些可用区中将用于预配置实例的三个可用区。

例如，假设您在创建集群时，Amazon DocumentDB 选择可用区 \$11A、1B 和 1C\$1。如果您尝试在可用区 \$11D\$1 中创建实例，API 调用将失败。但是，如果您选择在不指定特定可用区的情况下创建实例，那么 Amazon DocumentDB 会代表您选择一个可用区。Amazon DocumentDB 使用一种算法在可用区之间对实例进行负载均衡，以帮助您实现高可用性。例如，如果配置了三个实例，则在默认情况下，将在三个可用区中配置它们，而不会在单个可用区中配置。

**建议**
+ 除非您有特殊原因，否则请始终创建包含三个子网的子网组。这样做可帮助确保包含三个或更多实例的集群能够实现更高的可用性，因为将在三个可用区中预配置实例。
+ 始终将实例分散在多个可用区中以实现高可用性。切勿将集群的所有实例放在单个可用区中。
+ 由于故障转移事件随时可能发生，您不应假定主实例或副本实例始终位于特定可用区中。

### 其他先决条件
<a name="db-cluster-create-prerequisites-additional"></a>

以下是创建 Amazon DocumentDB 集群的一些其他先决条件：
+ 如果您 AWS 使用 AWS Identity and Access Management (IAM) 证书进行连接，则您的 IAM 账户必须具有授予执行 Amazon DocumentDB 操作所需权限的 IAM 策略。

  如果您使用 IAM 账户访问亚马逊 DocumentDB 控制台，则必须先使用您的 IAM 账户登录。 AWS 管理控制台 [然后前往位于 /docdb 的亚马逊 DocumentDB 控制台。https://console.aws.amazon.com](https://console.aws.amazon.com/docdb)
+ 如果要定制您的集群的配置参数，您必须指定集群参数组和具有必需参数设置的参数组。有关创建或修改集群参数组的信息，请参阅 [管理 Amazon DocumentDB 集群参数组](cluster_parameter_groups.md)。
+ 您必须确定要为集群指定的 TCP/IP 端口号。有些公司的防火墙不允许连接到 Amazon DocumentDB 的默认端口。如果您公司的防火墙阻止该默认端口，请为您的集群选择其他端口。集群中的所有实例都使用同一端口。

## 使用创建集群和主实例 AWS 管理控制台
<a name="db-cluster-create-con"></a>

以下过程介绍了如何使用控制台启动包含一个或多个实例的 Amazon DocumentDB 集群。

### 创建集群：使用默认设置
<a name="db-cluster-create-con-basic"></a>

**要使用默认设置创建包含实例的集群，请使用 AWS 管理控制台**

1. [登录 AWS 管理控制台，然后在 /docdb 上打开亚马逊文档数据库控制台。https://console.aws.amazon.com](https://console.aws.amazon.com/docdb)

1. 如果您想在美国东部（弗吉尼亚北部）以外 AWS 区域 的其他地区创建集群，请从控制台右上角的列表中选择该区域。

1. 在导航窗格中，选择 **Clusters (集群)**，然后选择 **Create (创建)**。
**提示**  
如果您在屏幕左侧没有看到导航窗格，请在页面左上角选择菜单图标 (![\[Hamburger menu icon with three horizontal lines.\]](http://docs.aws.amazon.com/zh_cn/documentdb/latest/developerguide/images/docdb-menu-icon.png))。

1. 在**创建 Amazon DocumentDB 集群**页中，完成**配置**窗格。

   1. **集群标识符**：接受 Amazon DocumentDB 提供的名称，或者为您的集群输入名称，例如 **sample-cluster**。

      集群命名约束：
      + 长度为 [1-63] 个字母、数字或连字符。
      + 第一个字符必须是字母。
      + 不能以连字符结尾或包含两个连续的连字符。
      + 每个区域的 Amazon RDS、Neptune 和 Amazon DocumentDB 中的所有集群都必须是唯一 AWS 账户的。

   1. **引擎版本**-接受默认引擎版本 5.0.0，或者可以选择选择 8.0.0、4.0.0 或 3.6.0。

   1. **实例类**：接受默认值 `db.r5.large`，或者从列表中选择您需要的实例类。

   1. **实例数**：在列表中，选择要使用此集群创建的实例的数量。第一个实例为主实例，所有其他实例为只读副本实例。您可以在稍后添加和删除实例（如果需要）。默认情况下，Amazon DocumentDB 集群将以三个实例（一个主实例和两个副本）启动。

1. 完成**集群存储配置**部分。

   选择 **Amazon DocumentDB 标准**（默认）或 **Amazon DocumentDB I/O 优化**。有关更多信息，请参阅 [Amazon DocumentDB 集群存储配置](db-cluster-storage-configs.md)。

1. 完成 **Authentication (身份验证)** 窗格。

   1. **用户名**：输入主用户的名称。要登录您的集群，您必须使用主用户名称。

      主用户命名约束：
      + 长度为 [1-63] 个字母数字字符。
      + 第一个字符必须是字母。
      + 不能是数据库引擎的保留字。

   1. 请选择以下密码选项之一：
      + **托管于 AWS Secrets Manager**-如果您想自动管理您的主用户密码 AWS Secrets Manager ，请选择此选项。

        如果您选择此选项，请通过创建您自己的密钥或使用 Secrets Manager 创建的密钥来配置 KMS 密钥。
      + **自行管理**：如果您想要自行管理您的主用户密码，请选择此选项。如果选择此选项，请输入主用户的密码，然后确认该密码。要登录您的集群，您必须使用主用户密码。

        密码约束：
        + 长度为 [8-100] 个可打印 ASCII 字符。
        + 可以使用任何可打印 ASCII 字符，以下字符除外：
          + **/**（正斜杠）
          + **"**（双引号）
          + **@**（@ 符号）

1. 在屏幕的底部，选择以下选项之一：
   + 要立即创建集群，请选择 **Create cluster (创建集群)**。
   + 要不创建集群，请选择 **Cancel (取消)**。
   + 要在创建集群前进一步配置集群，请选择 **Show additional configurations (显示其他配置)**，然后在[创建集群：其他配置](#db-cluster-create-con-additional-configs)上继续。

     **Additional Configurations (其他配置)** 部分中包含的配置如下：
     + **网络设置**：默认值为使用 `default` VPC 安全组。
     + **集群选项**：默认值为使用端口 27017 和默认参数组。
     + **加密**：默认值为使用 `(default) aws/rds` 密钥启用加密。
**重要**  
集群加密后，就不能取消加密。
     + **备份**：默认值为保留备份 1 天并让 Amazon DocumentDB 选择备份时段。
     + **日志导**出-默认为不将审核日志导出到 CloudWatch 日志。
     + **维护**：默认设置是让 Amazon DocumentDB 选择维护时段。
     + **删除保护**：防止您的集群被意外删除。使用控制台创建的集群的默认设置为*已启用*。

     如果您现在接受默认设置，则可以稍后通过修改集群来更改其中的大部分。

1. 为集群的安全组启用入站连接。

   如果未更改集群的默认设置，则会使用给定区域中的默认 VPC 的默认安全组创建一个集群。要连接到 Amazon DocumentDB，您必须在端口 27017（或所选的端口）上为集群的安全组启用入站连接。

   **将入站连接添加到集群的安全组**

   1. 登录 AWS 管理控制台 并打开 Amazon EC2 控制台，网址为[https://console.aws.amazon.com/ec2/](https://console.aws.amazon.com/ec2/)。

   1. 在主窗口的**资源**部分中，选择**安全组**。  
![\[图片：资源列表中突出显示“安全组”链接选项。\]](http://docs.aws.amazon.com/zh_cn/documentdb/latest/developerguide/images/docdb-ec2-security-groups.png)

   1. 从安全组列表中，找到您在创建集群时使用的安全组（很可能是 *default* 安全组），然后选中安全组名称左侧的框。  
![\[图片：安全组列表中突出显示一个选中复选框的安全组。\]](http://docs.aws.amazon.com/zh_cn/documentdb/latest/developerguide/images/docdb-ec2-default-sg.png)

   1. 从**操作**菜单中，选择**编辑入站规则**，然后选择或输入规则限制。

      1. **类型**：从列表中，选择要为网络流量打开的协议。

      1. **协议**：从列表中，选择协议类型。

      1. **端口范围**：对于自定义规则，请输入端口号或端口范围。确保端口号或范围包括您在创建集群时指定的端口（默认值：27017）。

      1. **源**：指定可以到达您的实例的流量。从列表中，选择流量源。如果选择**自定义**，请指定单个 IP 地址或以 CIDR 格式表示的 IP 地址范围（例如，203.0.113.5/32）。

      1. **描述**：输入该规则的描述。

      1. 在创建完规则时，选择**保存**。

### 创建集群：其他配置
<a name="db-cluster-create-con-additional-configs"></a>

如果要接受集群的默认设置，您可以跳过以下步骤并选择 **Create cluster (创建集群)**。

1. 完成 **Network settings (网络设置)** 窗格。  
![\[屏幕截图：显示用于配置网络设置的“Network settings (网络设置)”窗格和步骤。\]](http://docs.aws.amazon.com/zh_cn/documentdb/latest/developerguide/images/create-db-cluster-console-network-settings.png)

   1. **虚拟私有云（VPC）**：在列表中，选择要在其中启动此集群的 Amazon VPC。

   1. **子网组**：在列表中，选择要用于此集群的子网组。

   1. **VPC 安全组**：在列表中为此集群选择 VPC 安全组。

1. 完成 **Cluster options (集群选项)** 窗格。  
![\[显示包含集群设置配置步骤的“Cluster options (集群选项)”窗格屏幕截图。\]](http://docs.aws.amazon.com/zh_cn/documentdb/latest/developerguide/images/create-db-cluster-console-cluster-options.png)

   1. **数据库端口**-使用向上和向下箭头设置应用程序用于连接到您的实例的 TCP/IP 端口。

   1. **集群参数组**：在参数组列表中，为此集群选择集群参数组。

1. 完成 **Encryption (加密)** 窗格。  
![\[显示为集群配置加密的步骤的“Encryption (加密)”窗格屏幕截图。\]](http://docs.aws.amazon.com/zh_cn/documentdb/latest/developerguide/images/encrypt-at-rest.png)

   1. **E ncryption-at-rest** —选择以下选项之一：
      + **启用加密**：默认值。所有静态数据都会加密。如果您选择加密您的数据，则无法撤消此操作。
      + **禁用加密**：您的数据不会被加密。

   1. **AWS KMS 密钥**-只有在加密数据时才可用。在列表中，选择要用于加密此集群中的数据的密钥。默认值为 `(default) aws/rds`。

      如果您选择 **Enter a key ARN (输入一个密钥 ARN)**，则必须为密钥输入一个 Amazon 资源名称 (ARN)。

1. 完成 **Backup (备份)** 窗格。  
![\[显示用于配置集群备份时段的步骤的“Backup (备份)”窗格屏幕截图。\]](http://docs.aws.amazon.com/zh_cn/documentdb/latest/developerguide/images/create-db-cluster-console-backup.png)

   1. **备份留存期**：在列表中，选择在删除此集群的自动备份前保留它们的天数。

   1. **备份时段**：设置 Amazon DocumentDB 要备份此集群的每日时间和持续时间。

      1. **开始时间**：在第一个列表中，选择开始自动备份的开始时间小时 (UTC)。在第二个列表中，选择您希望自动备份开始的时间（分钟）。

      1. **持续时间**：在该列表中，选择要向创建自动备份分配的小时数。

1. 选择要**导出到日志**的日志类型，完成日志导出 CloudWatch 窗格。  
![\[Log exports (日志导出) 窗格屏幕截图，显示了配置集群的 DML 日志记录的步骤。\]](http://docs.aws.amazon.com/zh_cn/documentdb/latest/developerguide/images/create-db-cluster-console-log-exports.png)
   + **审核日志**-选择此选项可允许将审核日志导出到 Amazon CloudWatch 日志。如果您选择 **Audit logs (审计日志)**，则必须在集群的自定义参数组中启用 `audit_logs`。有关更多信息，请参阅 [审核 Amazon DocumentDB 事件](event-auditing.md)。
   + **Profiler 日志**-选择此选项可启用将操作分析器日志导出到 Amazon Logs。 CloudWatch 如果您选择 **Profiler logs (分析器日志)**，则还必须在集群的自定义参数组中修改以下参数：
     + `profiler`：设置为 `enabled`。
     + `profiler_threshold_ms`：设置为 `[0-INT_MAX]` 之间的值，以设置分析操作的阈值。
     + `profiler_sampling_rate`：设置为 `[0.0-1.0]` 之间的值，以设置要分析的缓慢操作的百分比。

     有关更多信息，请参阅 [分析 Amazon DocumentDB 操作](profiling.md)。

1. 完成 **Maintenance (维护)** 窗格。  
![\[显示用于配置集群维护时段的步骤的“Maintenance (维护)”窗格屏幕截图。\]](http://docs.aws.amazon.com/zh_cn/documentdb/latest/developerguide/images/create-db-cluster-console-maintenance.png)

   1. 选择以下选项之一
     + **选择时段**：您可以指定 Amazon DocumentDB 对您的集群执行维护的周日期、UTC 开始时间和持续时间。

       1. **开始日**：在列表中，选择开始集群维护的一周中的天。

       1. **开始时间**：在列表中，选择开始维护的小时和分钟 (UTC)。

       1. **持续时间**：在列表中，选择要为集群维护分配的时长。如果无法在指定时间内完成维护，维护过程将在指定时间过后继续进行，直到完成。
     + **无首选项**：Amazon DocumentDB 为执行维护选择一周中的天、开始时间和持续时间。

1. 如果您要将一个或多个标签添加到此集群，请填写**标签**窗格。  
![\[“启用删除保护” 复选框（处于选中状态）的屏幕截图。\]](http://docs.aws.amazon.com/zh_cn/documentdb/latest/developerguide/images/create-db-cluster-console-tags.png)

   对于每个要添加到集群的标签，请重复以下步骤。一个集群最多可以有 10 个标签。

   1. 选择**添加标签**。

   1. 键入标签的**键**。

   1. （可选）键入标签的**值**。

   要删除标签，请选择 **Remove tag**（删除标签）。

1. 在使用控制台创建集群时，将默认启用**删除保护**。要禁用删除保护，请清除**启用删除保护**。启用后，删除保护可以防止删除集群。要删除某个受到删除保护的集群，您必须先修改集群以禁用删除保护。  
![\[“启用删除保护” 复选框（处于选中状态）的屏幕截图。\]](http://docs.aws.amazon.com/zh_cn/documentdb/latest/developerguide/images/create-db-cluster-console-deletion-protection.png)

   有关删除保护的更多信息，请参阅 [删除 Amazon DocumentDB 集群](db-cluster-delete.md)。

1. 要创建集群，请选择**创建集群**。否则，选择**取消**。

## 使用创建集群 AWS CLI
<a name="db-cluster-create-cli"></a>

以下过程介绍如何使用启动亚马逊 DocumentDB 集群和创建 Amazon DocumentDB 副本。 AWS CLI 

**参数**
+ **--db-cluster-identifier**：必填项。标识此集群的一个小写字符串。    
[\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/zh_cn/documentdb/latest/developerguide/db-cluster-create.html)
+ **--engine**：必填项。必须是 **docdb**。
+ **--deletion-protection \$1 --no-deletion-protection**：可选。启用删除保护后，可以防止删除集群。使用时 AWS CLI，默认设置是禁用删除保护。

  有关删除保护的更多信息，请参阅 [删除 Amazon DocumentDB 集群](db-cluster-delete.md)。
+ **--storage-type standard \$1 iopt1**：可选。默认值：**standard**。集群存储配置。有效值为 `standard`（标准）或 `iopt1`（I/O 优化）。
+ **--master-username**：必填项。用于对用户进行身份验证的用户名。    
[\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/zh_cn/documentdb/latest/developerguide/db-cluster-create.html)
+ **--master-user-password**：可选。用于对用户进行身份验证的用户密码。    
[\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/zh_cn/documentdb/latest/developerguide/db-cluster-create.html)
+ **--manage-master-user-password**：可选。Amazon DocumentDB 会生成主用户密码并在其整个生命周期中在 Secrets Manager 中对其进行管理。

有关更多参数，请参阅[CreateDBCluster](API_CreateDBCluster.md)。

**要启动 Amazon DocumentDB 集群，请使用 AWS CLI**

要创建 Amazon DocumentDB 集群，请调用。`create-db-cluster` AWS CLI以下 AWS CLI 命令创建一个名为`sample-cluster`且启用了删除保护的 Amazon DocumentDB 集群。有关删除保护的更多信息，请参阅 [删除 Amazon DocumentDB 集群](db-cluster-delete.md)。

此外，`--engine-version` 是一个默认成主引擎最新版本的可选参数。当前的默认引擎版本为 5.0.0（注意：亚马逊 DocumentDB 8.0 可用，但必须明确指定）。发布主引擎新版本时，`--engine-version` 的默认引擎版本将更新，以反映最近的主引擎版本。因此，对于生产工作负载，尤其是那些依赖脚本、自动化或 CloudFormation 模板的工作负载，我们建议您明确指定预期的主要版本。`--engine-version`

**注意**  
如果未指定 `db-subnet-group-name` 或 `vpc-security-group-id`，则 Amazon DocumentDB 将使用给定区域的默认子网组和 Amazon VPC 安全组。

对于 Linux、macOS 或 Unix：

```
aws docdb create-db-cluster \
      --db-cluster-identifier sample-cluster \
      --engine docdb \
      --engine-version 5.0.0 \
      --deletion-protection \
      --master-username masteruser \
      --master-user-password password
```

对于 Windows：

```
aws docdb create-db-cluster ^
      --db-cluster-identifier sample-cluster ^
      --engine docdb ^
      --engine-version 5.0.0 ^
      --deletion-protection ^
      --master-username masteruser ^
      --master-user-password password
```

此操作的输出将类似于下文（JSON 格式）。

```
{
    "DBCluster": {
        "StorageEncrypted": false,
        "DBClusterMembers": [],
        "Engine": "docdb",
        "DeletionProtection" : "enabled",
        "ClusterCreateTime": "2018-11-26T17:15:19.885Z",
        "DBSubnetGroup": "default",
        "EngineVersion": "5.0.0",
        "MasterUsername": "masteruser",
        "BackupRetentionPeriod": 1,
        "DBClusterArn": "arn:aws:rds:us-east-1:123456789012:cluster:sample-cluster",
        "DBClusterIdentifier": "sample-cluster",
        "MultiAZ": false,
        "DBClusterParameterGroup": "default.docdb5.0",
        "PreferredBackupWindow": "09:12-09:42",
        "DbClusterResourceId": "cluster-KQSGI4MHU4NTDDRVNLNTU7XVAY",
        "PreferredMaintenanceWindow": "tue:04:17-tue:04:47",
        "Port": 27017,
        "Status": "creating",
        "ReaderEndpoint": "sample-cluster.cluster-ro-sfcrlcjcoroz.us-east-1.docdb.amazonaws.com",
        "AssociatedRoles": [],
        "HostedZoneId": "ZNKXTT8WH85VW",
        "VpcSecurityGroups": [
            {
                "VpcSecurityGroupId": "sg-77186e0d",
                "Status": "active"
            }
        ],
        "AvailabilityZones": [
            "us-east-1a",
            "us-east-1c",
            "us-east-1e"
        ],
        "Endpoint": "sample-cluster.cluster-sfcrlcjcoroz.us-east-1.docdb.amazonaws.com"
    }
}
```

创建集群需要几分钟时间。您可以使用 AWS 管理控制台 或 AWS CLI 来监控集群的状态。有关更多信息，请参阅 [监控 Amazon DocumentDB 集群的状态](monitoring_docdb-cluster_status.md)。

**重要**  
当您使用创建 Amazon DocumentDB 集群时，不会创建任何实例。 AWS CLI 因此，您必须显式创建主实例和所需的任何副本实例。您可以使用控制台或创建 AWS CLI 实例。有关更多信息，请参阅 [向集群添加 Amazon DocumentDB 实例](db-instance-add.md)。

有关更多信息，请参阅 *Amazon DocumentDB API 参考*中的 [https://docs.aws.amazon.com/documentdb/latest/developerguide/API_CreateDBCluster.html](https://docs.aws.amazon.com/documentdb/latest/developerguide/API_CreateDBCluster.html)。