从集群快照还原

Amazon DocumentDB(与 MongoDB 兼容)能够创建存储卷的集群快照。可通过从集群快照还原来创建新集群。在还原集群时,您需提供用于还原的集群快照的名称以及还原创建的新集群的名称。您无法从快照还原到现有集群,因为还原时将新建一个新集群。

当从集群快照还原集群时:

  • 此操作仅还原集群,而不还原集群的实例。您必须调用 create-db-instance 操作为还原的集群创建实例,并在 --db-cluster-identifier 中指定还原的集群的标识符。 您只能在集群可用 后创建实例。

  • 您无法将加密快照还原到未加密集群。但是,您可以通过指定 AWS KMS 密钥将未加密快照还原到加密集群。

  • 要从加密快照还原集群,您必须有权访问 AWS KMS 密钥。

注意

您无法将 3.6 集群还原到 4.0 集群,但可以从一个集群版本迁移到另一个版本。有关更多信息,请转至 迁移到 Amazon DocumentDB

使用 AWS 管理控制台 从集群快照进行还原

以下过程说明如何使用 Amazon DocumentDB 管理控制台从集群快照中还原 Amazon DocumentDB 集群。

  1. 通过以下网址登录 AWS 管理控制台并打开 Amazon DocumentDB 控制台:https://console.aws.amazon.com/docdb

  2. 在导航窗格中,选择快照,然后选择要用于还原集群的快照左侧的按钮。

    提示

    如果您在屏幕左侧没有看到导航窗格,请在页面左上角选择菜单图标 (从集群快照还原 - 图1)。

  3. Actions (操作) 菜单上,选择 Restore (还原)

  4. 还原快照页面上,填写配置部分。

    1. Cluster identifier (集群标识符) — 新集群的名称。您可以接受 Amazon DocumentDB 提供的名称或键入您喜欢的名称。Amazon DocumentDB 提供的名称采用 docdb- 加上 UTC 时间戳的格式;例如 docdb-*yyyy-mm-dd-hh-mm-ss*

    2. Instance class (实例类) — 新集群的实例类。您可以接受默认实例类或从下拉列表中选择实例类。

    3. Number of instances (实例数) — 要使用此集群创建的实例的数量。您可以接受默认 3 个实例(1 个读/写主实例和 2 个只读副本),或从下拉列表中选择实例数。

  5. 如果您对集群配置满意,请选择 Restore cluster (还原集群) 并等待集群还原。

  6. 如果您更希望更改某些配置(如指定非默认 Amazon VPC 或安全组),请在页面底部左边选择 Show advanced settings (显示高级设置),然后继续执行以下步骤。

    1. 完成 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 (日志导出)** 部分。
  2. - **选择要发布到 CloudWatch 的日志类型** 选择以下选项之一:
  3. - **Enabled (已启用)** 使您的集群能够将 DML 日志记录导出到 Amazon CloudWatch Logs
  4. - **Disabled (已禁用)** 阻止您的集群将 DML 日志导出到 Amazon CloudWatch Logs。**Disabled (已禁用)** 为默认值。
  5. - **IAM role (IAM 角色)** 从列表中选择 *RDS Service Linked Role*。
  6. 5. 完成 **Tags (标签)** 部分。
  7. - **Add Tag (添加标签)** *Key (密钥)* 框中,输入集群标签的名称。在 *Value (值)* 框中,可以选择输入标签值。标签与 AWS Identity and Access Management (IAM) 策略结合使用,以管理对 Amazon DocumentDB 资源的访问并控制可将什么操作应用于资源。
  8. 6. 完成 **Deletion protection (删除保护)** 部分。
  9. - **Enable deletion protection (启用删除保护)** 防止集群被意外删除。启用该选项后,您将无法删除集群。
  1. 选择 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-idarn: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. }