

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

# Amazon DocumentDB 操作任务概述
<a name="operational_tasks"></a>

本部分讲述 Amazon DocumentDB 集群的操作任务以及如何使用 AWS CLI 完成这些任务。

**Topics**
+ [向 Amazon DocumentDB 集群添加副本](#operational_tasks-add_replica)
+ [描述集群和实例](#operational_tasks-list_clusters_and_instances)
+ [创建集群快照](#operational_tasks-creating_snapshot)
+ [从快照还原](#operational_tasks-restore_from_snapshot)
+ [从集群中删除实例](#operational_tasks-remove_instance_from_cluster)
+ [删除集群](#operational_tasks-delete_cluster)

## 向 Amazon DocumentDB 集群添加副本
<a name="operational_tasks-add_replica"></a>

在您创建您的 Amazon DocumentDB 集群的主实例之后，您可以添加一个或多个*副本*。副本是只读实例，它有两个用途：
+ **可扩展性** — 如果您有大量需要同时访问的客户端，则可以添加多个副本以进行读取扩展。
+ **高可用性** — 如果主实例发生故障，Amazon DocumentDB 会自动故障转移到一个副本实例并将该副本实例指定为新的主实例。如果副本发生故障，则集群中的其他实例仍能够处理请求，直到发生故障的节点恢复为止。

每个 Amazon DocumentDB 集群可支持多达 15 个副本。

**注意**  
为实现最大容错能力，您应在不同的可用区中部署副本。这可以确保您的 Amazon DocumentDB 集群即使在整个可用区变得不可用时也能够继续正常运行。

以下 AWS CLI 示例说明如何添加新副本。`--availability-zone` 参数将副本置于指定的可用区中。

```
aws docdb create-db-instance \
    --db-instance-identifier sample-instance \
    --db-cluster-identifier sample-cluster \
    --engine docdb \
    --db-instance-class db.r5.large \
    --availability-zone us-east-1a
```

## 描述集群和实例
<a name="operational_tasks-list_clusters_and_instances"></a>

以下 AWS CLI 示例列出区域中的所有 Amazon DocumentDB 集群。对于某些管理功能（如集群和实例周期管理），Amazon DocumentDB 利用与 Amazon RDS 共享的操作技术。`filterName=engine,Values=docdb` 筛选器参数仅返回 Amazon DocumentDB 集群。

有关描述和修改集群的更多信息，请参阅[Amazon DocumentDB 集群生命周期](db-cluster-life-cycle.md)。

```
aws docdb describe-db-clusters --filter Name=engine,Values=docdb
```

此操作的输出将类似于下文。

```
{
    "DBClusters": [
        {
            "AvailabilityZones": [
                "us-east-1c",
                "us-east-1b",
                "us-east-1a"
            ],
            "BackupRetentionPeriod": 1,
            "DBClusterIdentifier": "sample-cluster-1",
            "DBClusterParameterGroup": "sample-parameter-group",
            "DBSubnetGroup": "default",
            "Status": "available",
            ...
        },
        {
            "AvailabilityZones": [
                "us-east-1c",
                "us-east-1b",
                "us-east-1a"
            ],
            "BackupRetentionPeriod": 1,
            "DBClusterIdentifier": "sample-cluster-2",
            "DBClusterParameterGroup": "sample-parameter-group",
            "DBSubnetGroup": "default",
            "Status": "available",
            ...
        },
        {
            "AvailabilityZones": [
                "us-east-1c",
                "us-east-1b",
                "us-east-1a"
            ],
            "BackupRetentionPeriod": 1,
            "DBClusterIdentifier": "sample-cluster-3",
            "DBClusterParameterGroup": "sample-parameter-group",
            "DBSubnetGroup": "default",
            "Status": "available",
            ...
        }
    ]
}
```

以下 AWS CLI 示例列出 Amazon DocumentDB 集群中的实例。有关描述和修改集群的更多信息，请参阅[Amazon DocumentDB 实例生命周期](db-instance-life-cycle.md)。

```
aws docdb describe-db-clusters \
    --db-cluster-identifier sample-cluster \
    --query 'DBClusters[*].[DBClusterMembers]'
```

输出如下所示。此输出中有两个实例。主实例是 `sample-instance-1` (`"IsClusterWriter": true`)。此外，还有一个副本实例，即 `sample-instance2` (`"IsClusterWriter: false"`)。

```
[
    [
        [
            {
                "DBInstanceIdentifier": "sample-instance-1",
                "IsClusterWriter": true,
                "DBClusterParameterGroupStatus": "in-sync",
                "PromotionTier": 1
            },
            {
                "DBInstanceIdentifier": "sample-cluster-2",
                "IsClusterWriter": false,
                "DBClusterParameterGroupStatus": "in-sync",
                "PromotionTier": 1
            }
        ]
    ]
]
```

## 创建集群快照
<a name="operational_tasks-creating_snapshot"></a>

*集群快照*是 Amazon DocumentDB 集群中的数据的完整备份。创建快照后，Amazon DocumentDB 将直接从集群卷读取数据。因此，即使您的集群当前没有任何实例在运行，您也可以创建快照。创建快照所用时间因集群卷大小而异。

Amazon DocumentDB 支持自动备份，自动备份在每天的首选备份时段 — 白天的一个 30 分钟时段进行。以下 AWS CLI 示例显示如何查看您的集群的备份时段：

```
aws docdb describe-db-clusters \
    --db-cluster-identifier sample-cluster \
    --query 'DBClusters[*].PreferredBackupWindow'
```

此输出显示备份时段（UTC 时间）：

```
[
    "00:18-00:48"
]
```

您可以在创建 Amazon DocumentDB 集群时定义备份时段。您还可以更改备份时段，如以下示例所示：如果您不定义备份时段，Amazon DocumentDB 会自动给您的集群分配一个时段。

```
aws docdb modify-db-cluster \
    --db-cluster-identifier sample-cluster \
    --preferred-backup-window "02:00-02:30"
```

除了自动备份以外，您还可以随时手动创建集群快照。当您执行此操作时，您指定要备份的集群以及快照的唯一名称，以便稍后从此快照还原。

以下 AWS CLI 示例说明如何创建数据快照。

```
aws docdb create-db-cluster-snapshot \
    --db-cluster-identifier sample-cluster \
    --db-cluster-snapshot-identifier sample-cluster-snapshot
```

## 从快照还原
<a name="operational_tasks-restore_from_snapshot"></a>

您可以将集群快照还原到新的 Amazon DocumentDB 存储位置。为此，您需要提供快照的名称和新集群的名称。您无法从快照还原到现有集群；但 Amazon DocumentDB 会创建一个新集群，然后使用快照数据填充到其中。

以下示例显示集群 `sample-cluster` 的所有快照。

```
aws docdb describe-db-cluster-snapshots \
    --db-cluster-identifier sample-cluster \
    --query 'DBClusterSnapshots[*].[DBClusterSnapshotIdentifier,SnapshotType,Status]'
```

输出如下所示。手动快照就是您手动创建的快照，而自动快照是在集群备份时段内由 Amazon DocumentDB 创建的。

```
[
        "sample-cluster-snapshot", 
        "manual", 
        "available"
    ], 
    [
        "rds:sample-cluster", 
        "automated", 
        "available"
    ]
]
```

以下示例演示如何从快照还原 Amazon DocumentDB 集群。

```
aws docdb restore-db-cluster-from-snapshot \
    --engine docdb \
    --db-cluster-identifier new-sample-cluster \
    --snapshot-identifier sample-cluster-snapshot
```

新的集群没有任何实例与之相关联；因此，如果您想要与集群进行交互，您必须给它添加实例。

```
aws docdb create-db-instance \
    --db-instance-identifier new-sample-instance \
    --db-instance-class db.r5.large \
    --engine docdb \
    --db-cluster-identifier new-sample-cluster
```

您可以使用以下 AWS CLI 操作来监控集群和实例的创建进度。当集群和实例处于可用状态时，您可连接到新集群的终端节点并访问您的数据。

```
aws docdb describe-db-clusters \
    --db-cluster-identifier new-sample-cluster  \
    --query 'DBClusters[*].[Status,Endpoint]'
```

```
aws docdb describe-db-instances \
    --db-instance-identifier new-sample-instance \
    --query 'DBInstances[*].[DBInstanceStatus]'
```

## 从集群中删除实例
<a name="operational_tasks-remove_instance_from_cluster"></a>

Amazon DocumentDB 将所有数据都存储在集群卷中。即使您从集群中删除所有实例，数据仍会保留在该集群卷中。如果您需要再次访问数据，则可随时向该集群中添加实例，并在停止处恢复操作。

以下示例显示如何从 Amazon DocumentDB 集群中删除实例。

```
aws docdb delete-db-instance \
    --db-instance-identifier sample-instance
```

## 删除集群
<a name="operational_tasks-delete_cluster"></a>

在您删除 Amazon DocumentDB 集群之前，您必须先删除其所有实例。以下 AWS CLI 示例返回关于集群中实例的信息。如果此操作会返回任何实例标识符，您必须删除各个实例。有关更多信息，请参阅 [从集群中删除实例](#operational_tasks-remove_instance_from_cluster)。

```
aws docdb describe-db-clusters \
    --db-cluster-identifier sample-cluster \
    --query 'DBClusters[*].DBClusterMembers[*].DBInstanceIdentifier'
```

当没有任何剩余的实例时，您就可以删除集群了。此时，您必须选择以下选项之一：
+ **创建最终快照** — 将所有集群数据捕获到一个快照中，以便您以后可以使用这些数据重新创建一个新实例。下例说明具体做法：

  ```
  aws docdb delete-db-cluster \
      --db-cluster-identifier sample-cluster \
      --final-db-snapshot-identifier sample-cluster-snapshot
  ```
+ **跳过最终快照** — 永久舍弃所有集群数据。此操作无法撤消。下例说明具体做法：

  ```
  aws docdb delete-db-cluster \
      --db-cluster-identifier sample-cluster \
      --skip-final-snapshot
  ```