Amazon DocumentDB 操作任务概述

    在您创建您的 Amazon DocumentDB 集群的主实例之后,您可以添加一个或多个副本。副本是只读实例,它有两个用途:

    • 可扩展性 — 如果您有大量需要同时访问的客户端,则可以添加多个副本以进行读取扩展。

    • 高可用性 — 如果主实例发生故障,Amazon DocumentDB 会自动故障转移到一个副本实例并将该副本实例指定为新的主实例。如果副本发生故障,则集群中的其他实例仍能够处理请求,直到发生故障的节点恢复为止。

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

    注意

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

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

    描述集群和实例

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

    有关描述和修改集群的更多信息,请参阅。

    1. aws docdb describe-db-clusters --filter Name=engine,Values=docdb
    1. {
    2. "DBClusters": [
    3. {
    4. "AvailabilityZones": [
    5. "us-east-1c",
    6. "us-east-1b",
    7. "us-east-1a"
    8. ],
    9. "BackupRetentionPeriod": 1,
    10. "DBClusterIdentifier": "sample-cluster-1",
    11. "DBClusterParameterGroup": "sample-parameter-group",
    12. "DBSubnetGroup": "default",
    13. "Status": "available",
    14. ...
    15. },
    16. {
    17. "AvailabilityZones": [
    18. "us-east-1c",
    19. "us-east-1b",
    20. "us-east-1a"
    21. ],
    22. "BackupRetentionPeriod": 1,
    23. "DBClusterIdentifier": "sample-cluster-2",
    24. "DBClusterParameterGroup": "sample-parameter-group",
    25. "DBSubnetGroup": "default",
    26. "Status": "available",
    27. ...
    28. },
    29. {
    30. "us-east-1c",
    31. "us-east-1b",
    32. "us-east-1a"
    33. ],
    34. "DBClusterIdentifier": "sample-cluster-3",
    35. "DBClusterParameterGroup": "sample-parameter-group",
    36. "DBSubnetGroup": "default",
    37. "Status": "available",
    38. ...
    39. }
    40. ]
    41. }

    以下 AWS CLI 示例列出 Amazon DocumentDB 集群中的实例。有关描述和修改集群的更多信息,请参阅

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

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

    1. [
    2. [
    3. [
    4. {
    5. "DBInstanceIdentifier": "sample-instance-1",
    6. "IsClusterWriter": true,
    7. "DBClusterParameterGroupStatus": "in-sync",
    8. "PromotionTier": 1
    9. },
    10. {
    11. "DBInstanceIdentifier": "sample-cluster-2",
    12. "IsClusterWriter": false,
    13. "DBClusterParameterGroupStatus": "in-sync",
    14. "PromotionTier": 1
    15. }
    16. ]
    17. ]
    18. ]

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

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

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

    此输出显示备份时段(UTC 时间):

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

    1. --preferred-backup-window "02:00-02:30"

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

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

    1. aws docdb create-db-cluster-snapshot \
    2. --db-cluster-identifier sample-cluster \
    3. --db-cluster-snapshot-identifier sample-cluster-snapshot

    从快照还原

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

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

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

    1. [
    2. "sample-cluster-snapshot",
    3. "manual",
    4. "available"
    5. ],
    6. [
    7. "rds:sample-cluster",
    8. "automated",
    9. "available"
    10. ]
    11. ]

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

    1. aws docdb restore-db-cluster-from-snapshot \
    2. --engine docdb \
    3. --db-cluster-identifier new-sample-cluster \
    4. --snapshot-identifier sample-cluster-snapshot

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

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

    1. aws docdb describe-db-clusters \
    2. --db-cluster-identifier new-sample-cluster \
    3. --query 'DBClusters[*].[Status,Endpoint]'
    1. aws docdb describe-db-instances \
    2. --db-instance-identifier new-sample-instance \
    3. --query 'DBInstances[*].[DBInstanceStatus]'

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

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

    1. aws docdb delete-db-instance \
    2. --db-instance-identifier sample-instance

    删除集群

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

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

    当没有任何剩余的实例时,您就可以删除集群了。此时,您必须选择以下选项之一:

    • 创建最终快照 — 将所有集群数据捕获到一个快照中,以便您以后可以使用这些数据重新创建一个新实例。下例说明具体做法:

      1. aws docdb delete-db-cluster \
      2. --final-db-snapshot-identifier sample-cluster-snapshot