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