

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

# 使用外部创建的快照为新集群做种
<a name="snapshots-seeding-redis"></a>

创建新 MemoryDB 集群时，可以使用 Valkey 或 Redis OSS .rdb 快照文件中的数据来作为种子。

要从 MemoryDB 快照或 ElastiCache (Redis OSS) 快照中播种新的 MemoryDB 集群，请参阅。[从快照还原](snapshots-restoring.md)

使用 .rdb 文件为新 MemoryDB 集群做种时，您可以执行以下操作：
+ 指定新集群中的分片数量。此数量可以与用于创建快照文件的集群中的分片数量不同。
+ 为新集群指定不同的节点类型 – 大于或小于创建快照的集群中使用的节点类型。如果您决定缩减到较小的节点类型，则必须确保新节点类型拥有足量内存以适应您的数据和引擎开销。

**重要**  
您必须确保快照数据不超过节点的资源容量。  
如果快照太大，则所生成集群的状态将为 `restore-failed`。如果发生这种情况，您必须删除集群，从头再来。  
有关节点类型和规范的完整列表，请参阅 [MemoryDB 节点类型特定的参数](parametergroups.redis.md#parametergroups.redis.nodespecific)。
您只能使用 Amazon S3 服务器端加密（SSE-S3）对 .rdb 文件进行加密。有关更多信息，请参阅[使用服务器端加密保护数据](https://docs.aws.amazon.com/AmazonS3/latest/dev/serv-side-encryption.html)。

## 步骤 1：在外部集群上创建快照
<a name="snapshots-seeding-create-snapshot"></a>

**创建快照为您的 MemoryDB 集群做种**

1. 连接到现有 Valkey 或 Redis OSS 实例。

1. 运行 `BGSAVE` 或 `SAVE` 操作以创建快照。记录 .rdb 文件的位置。

   `BGSAVE` 是异步的，在处理期间不阻止其他客户端。有关更多信息，请参阅 [BGSAVE](http://valkey.io/commands/bgsave)。

   `SAVE` 同步的，在完成之前会阻止其他进程。有关更多信息，请参阅 [SAVE](http://valkey.io/commands/save)。

有关创建快照的其他信息，请参阅[持久化](http://valkey.io/topics/persistence)。

## 步骤 2：创建 Amazon S3 存储桶和文件夹
<a name="snapshots-seeding-create-s3-bucket"></a>

创建快照文件后，您需要将其上传到 Amazon S3 存储桶中的文件夹。要执行该操作，您必须先拥有 Amazon S3 存储桶以及该存储桶中的文件夹。如果您已有 Amazon S3 存储桶和文件夹并具备相应权限，则可以跳到 [步骤 3：将快照上传到 Amazon S3](#snapshots-seeding-upload)。

**创建 Amazon S3 存储桶**

1. 登录 AWS 管理控制台 并打开 Amazon S3 控制台，网址为[https://console.aws.amazon.com/s3/](https://console.aws.amazon.com/s3/)。

1. 按照 *Amazon Simple Storage Service 用户指南*中的[创建存储桶](https://docs.aws.amazon.com/AmazonS3/latest/userguide/create-bucket-overview.html)的说明，创建 Amazon S3 存储桶。

   Amazon S3 存储桶的名称必须符合 DNS 标准。否则，MemoryDB 无法访问您的备份文件。DNS 合规性规则包括：
   + 名称的长度必须为至少 3 个字符，且不能超过 63 个字符。
   + 名称必须是由句点（.）分隔的一个或多个标签组成的系列，其中每个标签：
     + 以小写字母或数字开头。
     + 以小写字母或数字结尾。
     + 仅包含小写字母、数字和短划线。
   + 名称不能采用 IP 地址格式（例如 192.0.2.0）。

   我们强烈建议您在与新 MemoryDB 集群相同的 AWS 区域中创建 Amazon S3 存储桶。此方式可确保当 MemoryDB 从 Amazon S3 读取 .rdb 文件时，数据传输速度达到最高。
**注意**  
为了使您的数据尽可能安全，请尽可能限制您的 Amazon S3 存储桶的权限。同时，权限仍然需要允许存储桶及其内容用于为新的 MemoryDB 集群设定种子。

**向 Amazon S3 存储桶添加文件夹**

1. 登录 AWS 管理控制台 并打开 Amazon S3 控制台，网址为[https://console.aws.amazon.com/s3/](https://console.aws.amazon.com/s3/)。

1. 选择将 .rdb 文件上传到的存储桶的名称。

1. 请选择 **Create folder**（创建文件夹）。

1. 输入新文件夹的名称。

1. 选择**保存**。

   记录存储桶名称和文件夹名称。

## 步骤 3：将快照上传到 Amazon S3
<a name="snapshots-seeding-upload"></a>

现在，上传您在[步骤 1：在外部集群上创建快照](#snapshots-seeding-create-snapshot)中创建的 .rdb 文件。将其上传到您在 [步骤 2：创建 Amazon S3 存储桶和文件夹](#snapshots-seeding-create-s3-bucket) 中创建的 Amazon S3 存储桶和文件夹。有关该任务的更多信息，请参阅[上传对象](https://docs.aws.amazon.com/AmazonS3/latest/userguide/upload-objects.html)。在步骤 2 和 3 之间，选择您创建的文件夹的名称。

**将 .rdb 文件上传到 Amazon S3 文件夹**

1. 登录 AWS 管理控制台 并打开 Amazon S3 控制台，网址为[https://console.aws.amazon.com/s3/](https://console.aws.amazon.com/s3/)。

1. 选择您在步骤 2 中创建的 Amazon S3 存储桶的名称。

1. 选择您在步骤 2 中创建的文件夹的名称。

1. 选择**上传**。

1. 选择**添加文件**。

1. 浏览查找要上传的一个或多个文件，然后选择文件。要选择多个文件，请在选择每个文件名时按住 Ctrl 键。

1. 选择 **Open（打开）**。

1. 确认**上传**页面中列出了正确的文件，然后选择**上传**。

记下 .rdb 文件的路径。例如，如果存储桶名称为 `amzn-s3-demo-bucket` 并且路径为 `myFolder/redis.rdb`，请输入 `amzn-s3-demo-bucket/myFolder/redis.rdb`。使用此快照中的数据为新集群做种时需要此路径。

有关更多信息，请参阅 *Amazon Simple Storage Service 用户指南*中的[存储桶命名规则](https://docs.aws.amazon.com/AmazonS3/latest/userguide/bucketnamingrules.html)。

## 步骤 4：授予 MemoryDB 对 .rdb 文件的读取访问权限
<a name="snapshots-seeding-grant-access"></a>

AWS 2019 年 3 月 20 日之前推出的区域默认处于启用状态。您可以立即开始在这些 AWS 地区工作。2019 年 3 月 20 日之后推出的区域默认情况下处于禁用状态。您必须按照[管理 AWS 区域](https://docs.aws.amazon.com/general/latest/gr/rande-manage.html)所述，先启用或选择加入这些区域，然后才能使用它们。

### 授予 MemoryDB 对 .rdb 文件的读取访问权限
<a name="snapshots-seeding"></a>

**向 MemoryDB 授予对快照文件的读取访问权限**

1. 登录 AWS 管理控制台 并打开 Amazon S3 控制台，网址为[https://console.aws.amazon.com/s3/](https://console.aws.amazon.com/s3/)。

1. 选择包含您 .rdb 文件的 S3 存储桶的名称。

1. 选择包含 .rdb 文件的文件夹的名称。

1. 选择 .rdb 快照文件的名称。所选文件的名称将显示在页面顶部的选项卡上方。

1. 选择**权限**选项卡。

1. 在 **Permissions**（权限）下，选择 **Bucket policy**（存储桶策略），然后选择 **Edit**（编辑）。

1. 更新策略以授予 MemoryDB 执行操作所需的权限：
   + 将 `[ "Service" : "region-full-name.memorydb-snapshot.amazonaws.com" ]` 添加到 `Principal`。
   + 添加将快照导出到 Amazon S3 存储桶所需的以下权限：
     + `"s3:GetObject"`
     + `"s3:ListBucket"`
     + `"s3:GetBucketAcl"`

   以下是更新策略具体形式的示例。

------
#### [ JSON ]

****  

   ```
   {
       "Version":"2012-10-17",		 	 	 
       "Id": "Policy15397346",
       "Statement": [
           {
               "Sid": "Stmt15399483",
               "Effect": "Allow",
               "Principal": {
                   "Service": "us-east-1.memorydb-snapshot.amazonaws.com"
               },
               "Action": [
                   "s3:GetObject",
                   "s3:ListBucket",
                   "s3:GetBucketAcl"
               ],
               "Resource": [
                   "arn:aws:s3:::amzn-s3-demo-bucket",
                   "arn:aws:s3:::amzn-s3-demo-bucket/snapshot1.rdb",
                   "arn:aws:s3:::amzn-s3-demo-bucket/snapshot2.rdb"
               ]
           }
       ]
   }
   ```

------

1. 选择**保存**。

## 步骤 5：使用 .rdb 文件数据为 MemoryDB 集群做种
<a name="snapshots-seeding-seed-cluster"></a>

现在，您已准备好创建 MemoryDB 集群并使用 .rdb 文件中的数据为其做种。要创建集群，请按照 [创建 MemoryDB 集群](getting-started.md#clusters.create) 中的说明操作。

当告知 MemoryDB 在何处查找已上传到 Amazon S3 的快照时所采用的方法取决于您创建集群时采用的方法：

**使用 .rdb 文件数据为 MemoryDB 集群做种**
+ **使用 MemoryDB 控制台**

  选择引擎之后，展开**高级设置**部分，然后找到**将数据导入集群**。在 **Seed RDB file S3 location（使用 RDB 文件 S3 位置设定种子）**框中，键入文件的 Amazon S3 路径。如果您有多个 .rdb 文件，则以逗号分隔的列表形式键入各文件的路径。Amazon S3 路径类似于 `amzn-s3-demo-bucket/myFolder/myBackupFilename.rdb`。
+ **使用 AWS CLI**

  如果您使用 `create-cluster` 或 `create-cluster` 操作，请使用参数 `--snapshot-arns` 为各 .rdb 文件指定完全限定的 ARN。例如 `arn:aws:s3:::amzn-s3-demo-bucket/myFolder/myBackupFilename.rdb`。ARN 必须解析为您存储在 Amazon S3 中的快照文件。
+ **使用 MemoryDB API**

  如果您使用 `CreateCluster` 或 `CreateCluster` MemoryDB API 操作，请使用参数 `SnapshotArns` 为各 .rdb 文件指定完全限定的 ARN。例如 `arn:aws:s3:::amzn-s3-demo-bucket/myFolder/myBackupFilename.rdb`。ARN 必须解析为您存储在 Amazon S3 中的快照文件。

在创建集群的过程中，快照中的数据将写入集群。您可通过查看 MemoryDB 事件消息来监控进度。为此，请参阅 MemoryDB 控制台，然后选择**事件**。您也可以使用 M AWS emoryDB 命令行界面或 MemoryDB API 来获取事件消息。