Amazon DocumentDB 操作任务概述

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

给 Amazon DocumentDB 集群添加副本

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

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

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

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

注意

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

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

  1. aws docdb create-db-instance \
  2. --db-instance-identifier sample-instance \
  3. --db-cluster-identifier sample-cluster \
  4. --engine docdb \
  5. --db-instance-class db.r5.large \
  6. --availability-zone us-east-1a

描述集群和实例

以下 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. "AvailabilityZones": [
  31. "us-east-1c",
  32. "us-east-1b",
  33. "us-east-1a"
  34. ],
  35. "BackupRetentionPeriod": 1,
  36. "DBClusterIdentifier": "sample-cluster-3",
  37. "DBClusterParameterGroup": "sample-parameter-group",
  38. "DBSubnetGroup": "default",
  39. "Status": "available",
  40. ...
  41. }
  42. ]
  43. }

以下 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 时间):

  1. [
  2. "00:18-00:48"
  3. ]

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

  1. aws docdb modify-db-cluster \
  2. --db-cluster-identifier sample-cluster \
  3. --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 会创建一个新集群,然后使用快照数据填充到其中。

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

  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

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

  1. aws docdb create-db-instance \
  2. --db-instance-identifier new-sample-instance \
  3. --db-instance-class db.r5.large \
  4. --engine docdb \
  5. --db-cluster-identifier new-sample-cluster

您可以使用以下 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. --db-cluster-identifier sample-cluster \
    3. --final-db-snapshot-identifier sample-cluster-snapshot
  • 跳过最终快照 — 永久舍弃所有集群数据。此操作无法撤消。下例说明具体做法:

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