Amazon DocumentDB 操作任务概述 - Amazon DocumentDB
AWS 文档中描述的 AWS 服务或功能可能因区域而异。要查看适用于中国区域的差异,请参阅中国的 AWS 服务入门

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

Amazon DocumentDB 操作任务概述

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

给 Amazon DocumentDB 集群添加副本

在您创建您的 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

描述集群和实例

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

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

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 集群中的实例。有关描述和修改集群的更多信息,请参阅

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 } ] ] ]

创建集群快照

集群快照 是 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

从快照还原

您可以将集群快照还原到新的 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]'

从集群中删除实例

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

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

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

删除集群

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

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