

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

# 从集群快照还原
<a name="backup_restore-restore_from_snapshot"></a>

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

当从集群快照还原集群时：
+ 此操作仅还原集群，而不还原集群的实例。您必须调用 `create-db-instance` 操作为还原的集群创建实例，并在 `--db-cluster-identifier` 中指定还原的集群的标识符。您只能在集群*可用* 后才能创建实例。
+ 您无法将加密快照还原到未加密集群。但是，您可以通过指定密 Amazon KMS 钥将未加密的快照还原到加密的集群。
+ 要从加密快照恢复集群，您必须有权访问 Amazon KMS 密钥。

**注意**  
您无法将 3.6 集群恢复为 4.0 集群，但可以从一个集群版本迁移到另一个集群版本。有关更多信息，请转至 [迁移到 Amazon DocumentDB](docdb-migration.md)。

------
#### [ Using the Amazon Web Services 管理控制台 ]

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

1. [登录 Amazon Web Services 管理控制台，然后在 /docdb 上打开亚马逊文档数据库控制台。https://console.aws.amazon.com](https://console.amazonaws.cn/docdb)

1. 在导航窗格中，选择**快照**，然后选择要用于还原集群的快照左侧的按钮。
**提示**  
如果您在屏幕左侧没有看到导航窗格，请在页面左上角选择菜单图标 (![\[Hamburger menu icon with three horizontal lines.\]](http://docs.amazonaws.cn/documentdb/latest/developerguide/images/docdb-menu-icon.png))。

1. 在 **Actions (操作)** 菜单上，选择 **Restore (还原)**。

1. 在**还原快照**页面上，填写**配置**部分。

   1. **集群标识符**：新集群的名称。您可以接受 Amazon DocumentDB 提供的名称或键入您喜欢的名称。Amazon 文档DBsupplied 名称采用`docdb-`加上 UTC 时间戳的格式；例如，。`docdb-yyyy-mm-dd-hh-mm-ss`

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

   1. **实例数**：要使用此集群创建的实例的数量。您可以接受 3 个实例的默认值（1 个主副本 read/write 和 2 个只读副本），也可以从下拉列表中选择实例数量。

1. 对于**集群存储配置**，请选择一个存储选项。
**注意**  
**亚马逊 DocumentDB I/O 优化的**存储配置仅适用于亚马逊 DocumentDB 5.0 和 8.0 引擎版本。

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

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

   1. 完成 **Network settings (网络设置)** 部分。
      + **虚拟私有云（VPC）**：接受当前 VPC，或者从下拉列表中选择一个 VPC。
      + **子网组**：接受 `default` 子网组，或从下拉列表中选择一个子网组。
      + **VPC 安全组**：接受 `default (VPC)` 安全组，或从列表中选择一个安全组。

   1. 完成**集群选项**部分。
      + **数据库端口**：接受默认端口 `27017`，或使用向上或向下箭头来设置要用于应用程序连接的端口。

   1. 完成**加密**部分。
      + **静态加密**：如果您的快照已加密，那么这些选项对您不可用。如果它未加密，您可以选择以下选项之一：
        + 要加密集群的所有数据，请选择**启用 encryption-at-rest**。如果您选择此选项，则必须指定一个 KMS 密钥。
        + 要不加密集群的数据，请选择**禁用 encryption-at-rest**。如果您选择此选项，您便已完成加密部分。
      + **Amazon KMS 密钥**-从下拉列表中选择以下选项之一：
        + **（默认）aws/r** ds — 账号和 Amazon KMS 密钥 ID 列在此选项后面。
        + **客户管理的密钥** — 只有在 Amazon Identity and Access Management (IAM) 控制台中创建了 IAM 加密密钥时，此选项才可用。您可以选择该密钥来加密集群。
        + **输入密钥 ARN** — 在 **ARN** 框中，输入密钥的亚马逊资源名称 (ARN)。 Amazon KMS ARN 的格式为 `arn:aws:kms:<region>:<accountID>:key/<key-id>`。

   1. 完成 **Log exports (日志导出)** 部分。
      + **选择要发布到的日志类型 CloudWatch**-选择以下选项之一：
        + **已启用**-允许您的集群将 DDL 日志导出到 Amazon CloudWatch 日志。
        + **已禁用**-阻止您的集群将 DDL 日志导出到 Amazon CloudWatch 日志。**Disabled (已禁用)** 为默认值。
      + **IAM 角色**：从列表中选择 *RDS 服务相关角色*。

   1. 完成 **Tags (标签)** 部分。
      + **添加标签**：在*密钥*框中，输入集群标签的名称。在 *Value (值)* 框中，可以选择输入标签值。标签与 Amazon Identity and Access Management (IAM) 策略一起使用，用于管理对 Amazon DocumentDB 资源的访问权限并控制可以对资源应用哪些操作。

   1. 完成 **Deletion protection (删除保护)** 部分。
      + **启用删除保护**：防止集群被意外删除。启用该选项后，您将无法删除集群。

1. 选择 **Restore cluster (还原集群)**。

------
#### [ Using the Amazon CLI ]

要使用从快照还原集群 Amazon CLI，请使用带有以下参数的`restore-db-cluster-from-snapshot`操作。有关更多信息，请参阅 [RestoreDBClusterFromSnapshot](API_RestoreDBClusterFromSnapshot.md)。
+ **--db-cluster-identifier**：必需。操作创建的集群的名称。在执行此操作之前，不能存在此名称的集群。

  集群命名约束：
  + 长度为 [1-63] 个字母、数字或连字符。
  + 第一个字符必须是字母。
  + 不能以连字符结尾或包含两个连续的连字符。
  + 每个区域的 Amazon RDS、Neptune 和 Amazon DocumentDB 中的所有集群都必须是唯一 Amazon Web Services 账户的。
+ **--snapshot-identifier**：必需。用于自其还原的快照的名称。具有此名称的快照必须存在并且处于*可用* 状态。
+ **--engine**：必需。必须是 `docdb`。
+ **--storage-type standard \$1 iopt1**：可选。默认值：`standard`。
+ **--kms-key-id**— 可选。还原加密快照或从未加密快照还原时加密集群时使用的密 Amazon KMS 钥标识符的 ARN。无论快照是否加密，提供 Amazon KMS 密钥 ID 都会使用该 Amazon KMS 密钥对还原的集群进行加密。

  `--kms-key-id` 的格式为 `arn:aws:kms:<region>:<accountID>:key/<key-id>`。如果不为 `--kms-key-id` 参数指定值，则会出现以下情况：
  + 如果中的`--snapshot-identifier`快照已加密，则使用用于加密快照的相同 Amazon 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"
    }
}
```

------