从集群快照中恢复 - Amazon DocumentDB

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

从集群快照中恢复

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

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

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

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

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

注意

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

Using the AWS Management Console

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

  1. 登录并打开亚马逊 DocumentDB 控制台,网址为 https://console.aws.amazon.com/docdb。 AWS Management Console

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

    提示

    如果您在屏幕左侧没有看到导航窗格,请在页面左上角选择菜单图标 ()。

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

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

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

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

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

  5. 对于集群存储配置,请选择存储选项。

    注意

    亚马逊 DocumentDB I/O 优化的存储配置仅适用于亚马逊 DocumentDB 5.0 引擎版本。

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

  7. 如果您想更改某些配置,例如指定非默认 Amazon VPC 或安全组,请选择页面左下角的 “显示高级设置”,然后继续执行以下步骤。

    1. 完成 Network settings (网络设置) 部分。

      • 虚拟私有云 (VPC)-接受当前值VPC,或VPC从下拉列表中选择。

      • 子网组 — 接受 default 子网组,或从下拉列表中选择一个子网组。

      • VPC安全组-接受default (VPC)安全组,或从列表中选择一个安全组。

    2. 完成集群选项部分。

      • 数据库端口 — 接受默认端口 27017,或使用向上或向下箭头来设置要用于应用程序连接的端口。

    3. 完成加密部分。

      • 静态加密 — 如果您的快照已加密,那么这些选项对您不可用。如果它未加密,您可以选择以下选项之一:

        • 要加密集群的所有数据,请选择启用 encryption-at-rest。如果选择此选项,则必须指定密KMS钥。

        • 要不加密集群的数据,请选择禁用 encryption-at-rest。如果您选择此选项,您便已完成加密部分。

      • AWS KMS 密钥-从下拉列表中选择以下选项之一:

        • (默认)aws/r ds — 账号和 AWS KMS 密钥 ID 列在此选项后面。

        • 客户管理的密钥 — 只有在 AWS Identity and Access Management (IAM) 控制台中创建了IAM加密密钥时,此选项才可用。您可以选择该密钥来加密集群。

        • 输入密钥 ARN — 在ARN框中,输入密 AWS KMS 钥的 Amazon 资源名称 (ARN)。ARN 的格式为 arn:aws:kms:<region>:<accountID>:key/<key-id>

    4. 完成 Log exports (日志导出) 部分。

      • 选择要发布到的日志类型 CloudWatch-选择以下选项之一:

        • 已启用-允许您的集群将DDL日志导出到 Amazon CloudWatch 日志。

        • 已禁用-阻止您的集群将DDL日志导出到 Amazon CloudWatch 日志。Disabled (已禁用) 为默认值。

      • IAM角色 —从列表中选择 “RDS服务关联角色”。

    5. 完成 Tags (标签) 部分。

      • 添加标签 — 在密钥框中,输入集群标签的名称。在 Value (值) 框中,可以选择输入标签值。标签与 AWS Identity and Access Management (IAM) 策略一起使用,用于管理对 Amazon DocumentDB 资源的访问权限并控制可以对资源应用哪些操作。

    6. 完成 Deletion protection (删除保护) 部分。

      • 启用删除保护 — 防止集群被意外删除。启用该选项后,您将无法删除集群。

  8. 选择 Restore cluster (还原集群)

Using the AWS CLI

要使用从快照还原集群 AWS CLI,请使用带有以下参数的restore-db-cluster-from-snapshot操作。有关更多信息,请参阅 RestoreDBClusterFromSnapshot

  • --db-cluster-identifier – 必需。操作创建的集群的名称。在执行此操作之前,不能存在此名称的集群。

    集群命名约束:

    • 长度为 [1-63] 个字母、数字或连字符。

    • 第一个字符必须是字母。

    • 不能以连字符结束或包含两个连续连字符。

    • 每个区域的亚马逊RDS、Neptune 和 Amazon DocumentDB 的所有集群都必须是唯一 AWS 账户的。

  • --snapshot-identifier – 必需。用于自其还原的快照的名称。具有此名称的快照必须存在并且处于可用 状态。

  • --engine – 必需。必须是 docdb

  • --storage-type standard | iopt1— 可选。默认值:standard

  • --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:

aws docdb restore-db-cluster-from-snapshot \ --db-cluster-identifier sample-cluster-restore \ --snapshot-identifier sample-cluster-snapshot \ --engine docdb \ --kms-key-id arn:aws:kms:us-east-1:123456789012:key/SAMPLE-KMS-KEY-ID

对于 Windows:

aws docdb restore-db-cluster-from-snapshot ^ --db-cluster-identifier sample-cluster-restore ^ --snapshot-identifier sample-cluster-snapshot ^ --engine docdb ^ --kms-key-id arn:aws:kms:us-east-1:123456789012:key/SAMPLE-KMS-KEY-ID

此操作的输出将类似于下文。

{ "DBCluster": { "AvailabilityZones": [ "us-east-1c", "us-east-1b", "us-east-1a" ], "BackupRetentionPeriod": 1, "DBClusterIdentifier": "sample-cluster-restore", "DBClusterParameterGroup": "default.docdb4.0", "DBSubnetGroup": "default", "Status": "creating", "Endpoint": "sample-cluster-restore.cluster-node.us-east-1.docdb.amazonaws.com", "ReaderEndpoint": "sample-cluster-restore.cluster-node.us-east-1.docdb.amazonaws.com", "MultiAZ": false, "Engine": "docdb", "EngineVersion": "4.0.0", "Port": 27017, "MasterUsername": "<master-user>", "PreferredBackupWindow": "02:00-02:30", "PreferredMaintenanceWindow": "tue:09:50-tue:10:20", "DBClusterMembers": [], "VpcSecurityGroups": [ { "VpcSecurityGroupId": "sg-abcdefgh", "Status": "active" } ], "HostedZoneId": "ABCDEFGHIJKLM", "StorageEncrypted": true, "KmsKeyId": "arn:aws:kms:us-east-1:<accountID>:key/<sample-key-id>", "DbClusterResourceId": "cluster-ABCDEFGHIJKLMNOPQRSTUVWXYZ", "DBClusterArn": "arn:aws:rds:us-east-1:<accountID>:cluster:sample-cluster-restore", "AssociatedRoles": [], "ClusterCreateTime": "2020-04-01T01:43:40.871Z", "DeletionProtection": true } }

在集群状态为可用 后,请为集群创建至少一个实例。

对于 Linux、macOS 或 Unix:

aws docdb create-db-instance \ --db-cluster-identifier sample-cluster-restore \ --db-instance-identifier sample-cluster-restore-instance \ --availability-zone us-east-1b \ --promotion-tier 2 \ --db-instance-class db.r5.large \ --engine docdb

对于 Windows:

aws docdb create-db-instance ^ --db-cluster-identifier sample-cluster-restore ^ --db-instance-identifier sample-cluster-restore-instance ^ --availability-zone us-east-1b ^ --promotion-tier 2 ^ --db-instance-class db.r5.large ^ --engine docdb

此操作的输出将类似于下文。

{ "DBInstance": { "DBInstanceIdentifier": "sample-cluster-restore-instance", "DBInstanceClass": "db.r5.large", "Engine": "docdb", "DBInstanceStatus": "creating", "PreferredBackupWindow": "02:00-02:30", "BackupRetentionPeriod": 1, "VpcSecurityGroups": [ { "VpcSecurityGroupId": "sg-abcdefgh", "Status": "active" } ], "AvailabilityZone": "us-west-2b", "DBSubnetGroup": { "DBSubnetGroupName": "default", "DBSubnetGroupDescription": "default", "VpcId": "vpc-6242c31a", "SubnetGroupStatus": "Complete", "Subnets": [ { "SubnetIdentifier": "subnet-abcdefgh", "SubnetAvailabilityZone": { "Name": "us-west-2a" }, "SubnetStatus": "Active" }, { ... } ] }, "PreferredMaintenanceWindow": "fri:09:43-fri:10:13", "PendingModifiedValues": {}, "EngineVersion": "4.0.0", "AutoMinorVersionUpgrade": true, "PubliclyAccessible": false, "DBClusterIdentifier": "sample-cluster-restore", "StorageEncrypted": true, "KmsKeyId": "arn:aws:kms:us-east-1:<accountID>:key/<sample-key-id>", "DbiResourceId": "db-ABCDEFGHIJKLMNOPQRSTUVWXYZ", "CACertificateIdentifier": "rds-ca-2019", "PromotionTier": 2, "DBInstanceArn": "arn:aws:rds:us-east-1:<accountID>:db:sample-cluster-restore-instance" } }