从集群快照还原
Amazon DocumentDB(与 MongoDB 兼容)能够创建存储卷的集群快照。可通过从集群快照还原来创建新集群。在还原集群时,您需提供用于还原的集群快照的名称以及还原创建的新集群的名称。您无法从快照还原到现有集群,因为还原时将新建一个新集群。
当从集群快照还原集群时:
- 此操作仅还原集群,而不还原集群的实例。您必须调用
create-db-instance操作为还原的集群创建实例,并在--db-cluster-identifier中指定还原的集群的标识符。 您只能在集群可用 后创建实例。 - 您无法将加密快照还原到未加密集群。但是,您可以通过指定 AWS KMS 密钥将未加密快照还原到加密集群。
- 要从加密快照还原集群,您必须有权访问 AWS KMS 密钥。
注意
您无法将 3.6 集群还原到 4.0 集群,但可以从一个集群版本迁移到另一个版本。有关更多信息,请转至 迁移到 Amazon DocumentDB。
使用 AWS 管理控制台 从集群快照进行还原
以下过程说明如何使用 Amazon DocumentDB 管理控制台从集群快照中还原 Amazon DocumentDB 集群。
- 通过以下网址登录 AWS 管理控制台并打开 Amazon DocumentDB 控制台:https://console.aws.amazon.com/docdb。
- 在导航窗格中,选择快照,然后选择要用于还原集群的快照左侧的按钮。
提示
如果您在屏幕左侧没有看到导航窗格,请在页面左上角选择菜单图标 (
)。
3. 在 Actions (操作) 菜单上,选择 Restore (还原)。
4. 在还原快照页面上,填写配置部分。
- Cluster identifier (集群标识符) — 新集群的名称。您可以接受 Amazon DocumentDB 提供的名称或键入您喜欢的名称。Amazon DocumentDB 提供的名称采用
docdb-加上 UTC 时间戳的格式;例如docdb-*yyyy-mm-dd-hh-mm-ss*。 - Instance class (实例类) — 新集群的实例类。您可以接受默认实例类或从下拉列表中选择实例类。
- Number of instances (实例数) — 要使用此集群创建的实例的数量。您可以接受默认 3 个实例(1 个读/写主实例和 2 个只读副本),或从下拉列表中选择实例数。
- 如果您对集群配置满意,请选择 Restore cluster (还原集群) 并等待集群还原。
-
如果您更希望更改某些配置(如指定非默认 Amazon VPC 或安全组),请在页面底部左边选择 Show advanced settings (显示高级设置),然后继续执行以下步骤。
-
完成 Network settings (网络设置) 部分。
- Virtual Private Cloud (VPC) (虚拟私有云 (VPC)) — 接受当前 VPC,或者从下拉列表中选择一个 VPC。
- Subnet Group (子网组) — 接受
default子网组,或从下拉列表中选择一个子网组。 -
VPC Security Groups (VPC 安全组) — 接受
default (VPC)安全组,或从列表中选择一个安全组。 2. 完成集群选项部分。 -
Database port (数据库端口) — 接受默认端口
27017,或使用向上或向下箭头来设置要用于应用程序连接的端口。 3. 完成加密部分。 -
Encryption at rest (静态加密) — 如果您的快照已加密,那么这些选项对您不可用。如果它未加密,您可以选择以下选项之一:
- 要加密所有集群的数据,请选择启用静态加密。如果您选择此选项,则必须指定一个主密钥。
-
要让集群的数据不加密,请选择禁用静态加密。如果您选择此选项,您便已完成加密部分。
- Master key (主密钥) — 从下拉列表中选择以下选项之一:
-
(default) aws/rds ((默认) aws/rds) — 账号和 AWS KMS 密钥 ID 在此选项的后面列出。
- Customer-managed key (客户托管密钥) — 此选项仅当您在 AWS Identity and Access Management (IAM) 控制台中创建 IAM 加密密钥后可用。您可以选择该密钥来加密集群。
- Enter a key ARN (输入一个密钥 ARN) — 在 ARN 框中,输入 AWS KMS 密钥的 Amazon 资源名称 (ARN)。ARN 的格式为
arn:aws:kms:<region>:<accountID>:key/<key-id>。
1. 4. 完成 **Log exports (日志导出)** 部分。
3. - **选择要发布到 CloudWatch 的日志类型** — 选择以下选项之一:
5. - **Enabled (已启用)** — 使您的集群能够将 DML 日志记录导出到 Amazon CloudWatch Logs。
7. - **Disabled (已禁用)** — 阻止您的集群将 DML 日志导出到 Amazon CloudWatch Logs。**Disabled (已禁用)** 为默认值。
9. - **IAM role (IAM 角色)** — 从列表中选择 *RDS Service Linked Role*。
11. 5. 完成 **Tags (标签)** 部分。
13. - **Add Tag (添加标签)** — 在 *Key (密钥)* 框中,输入集群标签的名称。在 *Value (值)* 框中,可以选择输入标签值。标签与 AWS Identity and Access Management (IAM) 策略结合使用,以管理对 Amazon DocumentDB 资源的访问并控制可将什么操作应用于资源。
15. 6. 完成 **Deletion protection (删除保护)** 部分。
17. - **Enable deletion protection (启用删除保护)** — 防止集群被意外删除。启用该选项后,您将无法删除集群。
- 选择 Restore cluster (还原集群)。
使用 AWS CLI 从集群快照进行还原
要使用 AWS CLI 从快照还原集群,请使用带以下参数的 restore-db-cluster-from-snapshot 操作。有关更多信息,请参阅RestoreDBClusterFromSnapshot。
--db-cluster-identifier— 必需。操作创建的集群的名称。在执行此操作之前,不能存在此名称的集群。
集群命名约束:
- 长度为 [1—63] 个字母、数字或连字符。
- 第一个字符必须是字母。
- 不能以连字符结束或包含两个连续连字符。
- 对于每个区域的每个 AWS 账户的所有集群(在 Amazon RDS、Neptune 和 Amazon DocumentDB中)必须是唯一的。
--snapshot-identifier— 必需。用于自其还原的快照的名称。具有此名称的快照必须存在并且处于可用 状态。--engine— 必需。必须是docdb。--kms-key-id— 可选。在还原已加密快照或在从未加密快照还原的同时加密集群时,要使用的 AWS KMS 密钥标识符的 ARN。如果提供 AWS KMS 密钥 ID,则会导致使用 AWS KMS 密钥加密还原的集群(无论快照是否加密)。
的格式为 --kms-key-id。arn:aws:kms:<region>:<accountID>:key/<key-id> 如果您未指定 --kms-key-id 参数的值,则会出现以下情况:
- 如果
--snapshot-identifier中的快照已加密,将使用用于加密快照的同一 AWS KMS 密钥加密还原的集群。 - 如果
--snapshot-identifier中的快照未加密,还原的集群也不会加密。
对于 Linux、macOS 或 Unix:
1. aws docdb restore-db-cluster-from-snapshot \
2. --db-cluster-identifier sample-cluster-restore \
3. --snapshot-identifier sample-cluster-snapshot \
4. --engine docdb \
5. --kms-key-id arn:aws:kms:us-east-1:123456789012:key/SAMPLE-KMS-KEY-ID
对于 Windows:
1. aws docdb restore-db-cluster-from-snapshot ^
2. --db-cluster-identifier sample-cluster-restore ^
3. --snapshot-identifier sample-cluster-snapshot ^
4. --engine docdb ^
5. --kms-key-id arn:aws:kms:us-east-1:123456789012:key/SAMPLE-KMS-KEY-ID
此操作的输出将类似于下文。
1. {
2. "DBCluster": {
3. "AvailabilityZones": [
4. "us-east-1c",
5. "us-east-1b",
6. "us-east-1a"
7. ],
8. "BackupRetentionPeriod": 1,
9. "DBClusterIdentifier": "sample-cluster-restore",
10. "DBClusterParameterGroup": "default.docdb4.0",
11. "DBSubnetGroup": "default",
12. "Status": "creating",
13. "Endpoint": "sample-cluster-restore.cluster-node.us-east-1.docdb.amazonaws.com",
14. "ReaderEndpoint": "sample-cluster-restore.cluster-node.us-east-1.docdb.amazonaws.com",
15. "MultiAZ": false,
16. "Engine": "docdb",
17. "EngineVersion": "4.0.0",
18. "Port": 27017,
19. "MasterUsername": "<master-user>",
20. "PreferredBackupWindow": "02:00-02:30",
21. "PreferredMaintenanceWindow": "tue:09:50-tue:10:20",
22. "DBClusterMembers": [],
23. "VpcSecurityGroups": [
24. {
25. "VpcSecurityGroupId": "sg-abcdefgh",
26. "Status": "active"
27. }
28. ],
29. "HostedZoneId": "ABCDEFGHIJKLM",
30. "StorageEncrypted": true,
31. "KmsKeyId": "arn:aws:kms:us-east-1:<accountID>:key/<sample-key-id>",
32. "DbClusterResourceId": "cluster-ABCDEFGHIJKLMNOPQRSTUVWXYZ",
33. "DBClusterArn": "arn:aws:rds:us-east-1:<accountID>:cluster:sample-cluster-restore",
34. "AssociatedRoles": [],
35. "ClusterCreateTime": "2020-04-01T01:43:40.871Z",
36. "DeletionProtection": true
37. }
38. }
在集群状态为可用 后,请为集群创建至少一个实例。
对于 Linux、macOS 或 Unix:
1. aws docdb create-db-instance \
2. --db-cluster-identifier sample-cluster-restore \
3. --db-instance-identifier sample-cluster-restore-instance \
4. --availability-zone us-east-1b \
5. --promotion-tier 2 \
6. --db-instance-class db.r5.large \
7. --engine docdb
对于 Windows:
1. aws docdb create-db-instance ^
2. --db-cluster-identifier sample-cluster-restore ^
3. --db-instance-identifier sample-cluster-restore-instance ^
4. --availability-zone us-east-1b ^
5. --promotion-tier 2 ^
6. --db-instance-class db.r5.large ^
7. --engine docdb
此操作的输出将类似于下文。
1. {
2. "DBInstance": {
3. "DBInstanceIdentifier": "sample-cluster-restore-instance",
4. "DBInstanceClass": "db.r5.large",
5. "Engine": "docdb",
6. "DBInstanceStatus": "creating",
7. "PreferredBackupWindow": "02:00-02:30",
8. "BackupRetentionPeriod": 1,
9. "VpcSecurityGroups": [
10. {
11. "VpcSecurityGroupId": "sg-abcdefgh",
12. "Status": "active"
13. }
14. ],
15. "AvailabilityZone": "us-west-2b",
16. "DBSubnetGroup": {
17. "DBSubnetGroupName": "default",
18. "DBSubnetGroupDescription": "default",
19. "VpcId": "vpc-6242c31a",
20. "SubnetGroupStatus": "Complete",
21. "Subnets": [
22. {
23. "SubnetIdentifier": "subnet-abcdefgh",
24. "SubnetAvailabilityZone": {
25. "Name": "us-west-2a"
26. },
27. "SubnetStatus": "Active"
28. },
29. {
30. ...
31. }
32. ]
33. },
34. "PreferredMaintenanceWindow": "fri:09:43-fri:10:13",
35. "PendingModifiedValues": {},
36. "EngineVersion": "4.0.0",
37. "AutoMinorVersionUpgrade": true,
38. "PubliclyAccessible": false,
39. "DBClusterIdentifier": "sample-cluster-restore",
40. "StorageEncrypted": true,
41. "KmsKeyId": "arn:aws:kms:us-east-1:<accountID>:key/<sample-key-id>",
42. "DbiResourceId": "db-ABCDEFGHIJKLMNOPQRSTUVWXYZ",
43. "CACertificateIdentifier": "rds-ca-2019",
44. "PromotionTier": 2,
45. "DBInstanceArn": "arn:aws:rds:us-east-1:<accountID>:db:sample-cluster-restore-instance"
46. }
47. }
