

本文為英文版的機器翻譯版本，如內容有任何歧義或不一致之處，概以英文版為準。

# 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
  ```