

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

# 教程：使用外部创建的备份为新的基于节点的集群制作种子
<a name="backups-seeding-redis"></a>

创建新的 Valkey 或 Redis OSS 基于节点的集群时，您可以使用 Valkey 或 Redis OSS .rdb 备份文件中的数据为其制作种子。如果您目前正在管理外部的 Valkey 或 Redis OSS 实例， ElastiCache 并希望使用现有的 Valkey 或 Redis OSS 数据填充新的基于 Redis OSS 节点的集群，则 ElastiCache 为集群播种很有用。

要从亚马逊内部创建的 Valkey 或 Redis OSS 备份中播种新的基于 Valkey 或 Redis OSS 节点的集群，请参阅。 ElastiCache [从备份还原到新缓存](backups-restoring.md)

使用 Valkey 或 Redis OSS .rdb 文件为新的基于节点的集群制作种子时，您可以执行以下操作：
+ 从未分区的集群升级到运行 Redis OSS v3.2.4 的 Valkey 或 Redis OSS（已启用集群模式）基于节点的集群。
+ 指定新的基于节点的集群中的分片（在 API 和 CLI 中称为节点组）数量。此数量可以与用于创建备份文件的基于节点的集群中的分片数量不同。
+ 为新的基于节点的集群指定不同的节点类型 – 大于或小于创建备份的集群中使用的节点类型。如果您决定缩减到较小的节点类型，则必须确保新节点类型拥有足量内存以适应您的数据和 Valkey 或 Redis OSS 开销。有关更多信息，请参阅 [确保具有用于创建 Valkey 或 Redis OSS 快照的足够内存](BestPractices.BGSAVE.md)。
+ 以不同于创建备份文件时所用集群中的方法将您的键分发到新的 Valkey 或 Redis OSS（已启用集群模式）集群的槽中。

**注意**  
无法从 Valkey 或 Redis OSS（已启用集群模式）集群中创建的 .rdb 文件为 Valkey 或 Redis OSS（已禁用集群模式）集群制作种子。

**重要**  
您必须确保 Valkey 或 Redis OSS 备份数据不超过节点的资源容量。例如，您无法将具有 5GB Valkey 或 Redis OSS 数据的 .rdb 文件上传到具有 2.9GB 内存的 cache.m3.medium 节点。  
如果备份太大，则所生成集群的状态将为 `restore-failed`。如果发生这种情况，您必须删除集群，从头再来。  
有关节点类型和规格的完整列表，请参阅[特定于 Redis OSS 节点类型的参数](ParameterGroups.Engine.md#ParameterGroups.Redis.NodeSpecific)和 [Amazon ElastiCache 产品功能和详情](https://aws.amazon.com/elasticache/details/)。
您只能使用 Amazon S3 服务器端加密（SSE-S3）对 Valkey 或 Redis OSS .rdb 文件进行加密。有关更多信息，请参阅[使用服务器端加密保护数据](https://docs.aws.amazon.com/AmazonS3/latest/dev/serv-side-encryption.html)。

接下来，你可以找到一些主题，这些主题将引导你完成将集群从 Valkey 或 Redis OSS ElastiCache 的外部迁移到适用于 Redis OSS ElastiCache 的集群。

**Topics**
+ [步骤 1：创建 Valkey 或 Redis OSS 备份](#backups-seeding-redis-create-backup)
+ [步骤 2：创建 Amazon S3 存储桶和文件夹](#backups-seeding-redis-create-s3-bucket)
+ [步骤 3：将备份上传到 Amazon S3](#backups-seeding-redis-upload)
+ [步骤 4：授予对.rdb 文件的 ElastiCache 读取权限](#backups-seeding-redis-grant-access)

**Topics**
+ [步骤 1：创建 Valkey 或 Redis OSS 备份](#backups-seeding-redis-create-backup)
+ [步骤 2：创建 Amazon S3 存储桶和文件夹](#backups-seeding-redis-create-s3-bucket)
+ [步骤 3：将备份上传到 Amazon S3](#backups-seeding-redis-upload)
+ [步骤 4：授予对.rdb 文件的 ElastiCache 读取权限](#backups-seeding-redis-grant-access)

## 步骤 1：创建 Valkey 或 Redis OSS 备份
<a name="backups-seeding-redis-create-backup"></a>

**创建 Valkey 或 Redis OSS 备份来 ElastiCache 为你的 Redis OSS 实例做种子**

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

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

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

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

有关创建备份的其他信息，请参阅 Valkey 网站上的[持久化](https://valkey.io/topics/persistence)。

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

创建备份文件后，您需要将其上传到 Amazon S3 存储桶中的文件夹。要执行该操作，您必须先拥有 Amazon S3 存储桶以及该存储桶中的文件夹。如果您已有 Amazon S3 存储桶和文件夹并具备相应权限，则可以跳到 [步骤 3：将备份上传到 Amazon S3](#backups-seeding-redis-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.html)的说明，创建 Amazon S3 存储桶。

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

   您必须在与新 ElastiCache 的 Redis OSS 集群相同的AWS区域中创建 Amazon S3 存储桶。这种方法可确保从 Amazon S3 ElastiCache 读取您的.rdb 文件时达到最高的数据传输速度。
**注意**  
为了使您的数据尽可能安全，请尽可能限制您的 Amazon S3 存储桶的权限。同时，权限仍然需要允许存储桶及其内容用于为新的 Valkey 或 Redis OSS 集群制作种子。

**向 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="backups-seeding-redis-upload"></a>

现在，上传您在[步骤 1：创建 Valkey 或 Redis OSS 备份](#backups-seeding-redis-create-backup)中创建的 .rdb 文件。将其上传到您在 [步骤 2：创建 Amazon S3 存储桶和文件夹](#backups-seeding-redis-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. 确认 **Upload** 对话框中列出了正确的文件，然后选择 **Upload**。

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

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

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

现在，授予对.rdb 备份文件的 ElastiCache 读取权限。您可以通过不同的方式授予对备份文件的 ElastiCache 访问权限，具体取决于您的存储桶位于默认AWS区域还是选择加入AWS区域。

AWS 2019 年 3 月 20 日之前推出的区域默认处于启用状态。您可以立即开始在这些AWS地区工作。2019 年 3 月 20 日之后推出的区域默认处于禁用状态，如亚太地区（香港）和中东（巴林）。您必须按照 *AWS 一般参考*中的[管理AWS区域](https://docs.aws.amazon.com/general/latest/gr/rande-manage.html)所述，先启用或选择加入这些区域，然后才能使用它们。

根据您所在的AWS地区选择您的方法：
+ 对于默认区域，请使用 [授予对默认区域中.rdb 文件的 ElastiCache 读取权限](#backups-seeding-redis-default-region) 中的过程。
+ 对于选择加入的区域，请使用 [在可 ElastiCache 选区域中授予对.rdb 文件的读取权限](#backups-seeding-opt-in-region) 中的过程。

### 授予对默认区域中.rdb 文件的 ElastiCache 读取权限
<a name="backups-seeding-redis-default-region"></a>

AWS 2019 年 3 月 20 日之前推出的区域默认处于启用状态。您可以立即开始在这些AWS地区工作。2019 年 3 月 20 日之后推出的区域默认处于禁用状态，如亚太地区（香港）和中东（巴林）。您必须按照 *AWS 一般参考*中的[管理AWS区域](https://docs.aws.amazon.com/general/latest/gr/rande-manage.html)所述，先启用或选择加入这些区域，然后才能使用它们。

**授予对默认启用的AWS区域中备份文件的 ElastiCache 读取权限**

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. 如果 **aws-scs-s3-readonly** 或以下列表 IDs 中的某个规范未列为用户，请执行以下操作：

   1. 在 “**其他AWS账户的访问权限**” 下，选择**添加被授权者**。

   1. 在框中，添加该AWS地区的规范 ID，如下所示：
      + AWS GovCloud （美国西部）区域：

        ```
        40fa568277ad703bd160f66ae4f83fc9dfdfd06c2f1b5060ca22442ac3ef8be6
        ```
**重要**  
备份必须位于中的 S3 存储桶中，您才能将其下载到中的 Valkey 或 Redis OSS 集群中AWS GovCloud (US)。AWS GovCloud (US)
      + AWS默认情况下启用的区域：

        ```
        540804c33a284a299d2547575ce1010f2312ef3da9b3a053c8bc45bf233e4353
        ```

   1. 通过为以下对象选择 **Yes（是）**对存储桶设置权限：
      + **List/write object**（列出/写入对象）
      + **Read/write object ACL permissions**（读/写对象 ACL 权限）

   1. 选择**保存**。

1. 选择 **Overview（概述）**，然后选择 **Download（下载）**。

### 在可 ElastiCache 选区域中授予对.rdb 文件的读取权限
<a name="backups-seeding-opt-in-region"></a>

AWS 2019 年 3 月 20 日之前推出的区域默认处于启用状态。您可以立即开始在这些AWS地区工作。2019 年 3 月 20 日之后推出的区域默认处于禁用状态，如亚太地区（香港）和中东（巴林）。您必须按照 *AWS 一般参考*中的[管理AWS区域](https://docs.aws.amazon.com/general/latest/gr/rande-manage.html)所述，先启用或选择加入这些区域，然后才能使用它们。

现在，授予对.rdb 备份文件的 ElastiCache 读取权限。

**授予对备份文件的 ElastiCache 读取权限**

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

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

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

****  

   ```
   {
       "Version":"2012-10-17",		 	 	 
       "Id": "Policy15397346",
       "Statement": [
           {
               "Sid": "Stmt15399483",
               "Effect": "Allow",
               "Action": [
                   "s3:GetObject",
                   "s3:ListBucket",
                   "s3:GetBucketAcl"
               ],
               "Resource": [
                   "arn:aws:s3:::amzn-s3-demo-bucket",
                   "arn:aws:s3:::amzn-s3-demo-bucket/backup1.rdb",
                   "arn:aws:s3:::amzn-s3-demo-bucket/backup2.rdb"
               ]
           }
       ]
   }
   ```

------

1. 选择**保存更改**。

### 使用.rdb 文件数据为 ElastiCache 集群播种
<a name="backups-seeding-redis-seed-cluster"></a>

现在，您可以创建 ElastiCache 集群并使用.rdb 文件中的数据为其做种子了。要创建集群，请按照[创建 Valkey 或 Redis OSS 集群](Clusters.Create.md)或[从头开始创建 Valkey 或 Redis OSS 复制组](Replication.CreatingReplGroup.NoExistingCluster.md)中的说明操作。请确保选择 Valkey 或 Redis OSS 作为集群引擎。

您用来判断 ElastiCache 在哪里可以找到上传到 Amazon S3 的备份的方法取决于您创建集群时使用的方法：

**ElastiCache 使用.rdb 文件数据为 Redis OSS 集群或复制组做种子**
+ **使用控制 ElastiCache 台**

  选择**集群设置**时，请选择 **Restore from backups**（从备份中恢复）作为集群创建方法，然后在 **Backup source**（备份源）部分中选择 **Other backups**（其他备份）作为您的 **Source**（源）。在 **Seed RDB file S3 location（使用 RDB 文件 S3 位置设定种子）**框中，键入文件的 Amazon S3 路径。如果您有多个 .rdb 文件，则以逗号分隔的列表形式键入各文件的路径。Amazon S3 路径类似于 `myBucket/myFolder/myBackupFilename.rdb`。
+ **使用AWS CLI**

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

  如果您使用`CreateCacheCluster`或 `CreateReplicationGroup` ElastiCache API 操作，请使用参数`SnapshotArns`为每个.rdb 文件指定完全限定的 ARN。例如 `arn:aws:s3:::myBucket/myFolder/myBackupFilename.rdb`。ARN 必须解析为您存储在 Amazon S3 中的备份文件。

**重要**  
在为 Valkey 或 Redis OSS（已启用集群模式）集群制作种子时，您必须在新集群或复制组中配置每个节点组（分片）。为此，请使用参数 `--node-group-configuration`（API：`NodeGroupConfiguration`）。有关更多信息，请参阅下列内容：  
CLI：[create-replication-group](https://docs.aws.amazon.com/cli/latest/reference/elasticache/create-replication-group.html)在AWS CLI参考资料中
API：[CreateReplicationGroup](https://docs.aws.amazon.com/AmazonElastiCache/latest/APIReference/API_CreateReplicationGroup.html)在 ElastiCache API 参考中

在创建集群的过程中，Valkey 或 Redis OSS 备份中的数据将写入集群。您可以通过查看 ElastiCache 事件消息来监控进度。为此，请访问 ElastiCache 控制台并选择 “**缓存事件**”。您也可以使用AWS ElastiCache 命令行界面或 ElastiCache API 来获取事件消息。有关更多信息，请参阅 [查看 ElastiCache 事件](ECEvents.Viewing.md)。