使用外部创建的备份为新的自行设计的集群制作种子 - 亚马逊 ElastiCache (Redis OSS)
Amazon Web Services 文档中描述的 Amazon Web Services 服务或功能可能因区域而异。要查看适用于中国区域的差异,请参阅 中国的 Amazon Web Services 服务入门 (PDF)

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

使用外部创建的备份为新的自行设计的集群制作种子

当你创建新的 Redis OSS 自行设计的集群时,你可以使用 Redis OSS .rdb 备份文件中的数据为其做种子。如果您当前在管理外部的 Redis OSS 实例, ElastiCache 并希望使用现有的 Redis OSS 数据填充自设计的新 ElastiCache (Redis OSS)集群,则为集群播种很有用。

要从亚马逊 ElastiCache内部创建的 Redis OSS 备份中为自己设计的新 Redis OSS 集群播种,请参阅。从备份还原到新缓存

当你使用 Redis OSS .rdb 文件为自己设计的新 Redis OSS 集群做种子时,你可以执行以下操作:

  • 从非分区集群升级到运行 Redis OSS 版本 3.2.4 的自行设计的 Redis OSS(已启用集群模式)集群。

  • 指定新的自行设计的集群中的分片(在 API 和 CLI 中称为节点组)数量。此数量可以与用于创建备份文件的自行设计的集群中的分片数量不同。

  • 为新的自行设计的集群指定不同的节点类型 – 大于或小于创建备份的集群中使用的节点类型。如果您扩展到较小的节点类型,请确保新的节点类型有足够的内存来存放您的数据和 Redis OSS 开销。有关更多信息,请参阅 确保您有足够的内存来创建 Redis OSS 快照

  • 在新的 Redis OSS(已启用集群模式)集群的插槽中分配密钥的方式与在用于创建备份文件的集群中分配密钥的方式不同。

注意

您无法从从 Redis OSS(已启用集群模式)集群创建的.rdb 文件中播种 Redis OSS(已禁用集群模式)集群。

重要
  • 您必须确保您的 Redis OSS 备份数据不超过节点的资源。例如,你不能将包含 5 GB Redis OSS 数据的.rdb 文件上传到内存为 2.9 GB 的 cache.m3.medium 节点。

    如果备份太大,则所生成集群的状态将为 restore-failed。如果发生这种情况,您必须删除集群,从头再来。

    有关节点类型和规格的完整列表,请参阅Redis OSS 节点类型的特定参数Amazon ElastiCache 产品功能和详情

  • 您只能使用 Amazon S3 服务器端加密 (SSE-S3) 对 Redis OSS .rdb 文件进行加密。有关更多信息,请参阅使用服务器端加密保护数据

接下来,你可以找到一些主题来指导你完成将 Redis OSS 集群从外部服务迁移到 ElastiCache (Redis OSS) 的过程。

步骤 1:创建 Redis OSS 备份

创建 Redis OSS 备份来为你的 ElastiCache (Redis OSS) 实例做种子
  1. 连接到您现有的 Redis OSS 实例。

  2. 运行 Redis OSS BGSAVESAVE操作来创建备份。记录 .rdb 文件的位置。

    BGSAVE 是异步的,在处理期间不阻止其他客户端。有关更多信息,请参阅 Redis OSS 网站上的 BGSAVE

    SAVE 同步的,在完成之前会阻止其他进程。有关更多信息,请参阅 Redis OSS 网站上的 “保存”。

有关创建备份的更多信息,请参阅 Redis OSS 网站上的 Redis OSS 持久性

步骤 2:创建 Amazon S3 存储桶和文件夹

创建备份文件后,您需要将其上传到 Amazon S3 存储桶中的文件夹。要执行该操作,您必须先拥有 Amazon S3 存储桶以及该存储桶中的文件夹。如果您已有 Amazon S3 存储桶和文件夹并具备相应权限,则可以跳到 步骤 3:将备份上传到 Amazon S3

创建 Amazon S3 存储桶
  1. 登录 Amazon Web Services Management Console 并打开 Amazon S3 控制台,网址为 https://console.aws.amazon.com/s3/

  2. 按照 Amazon Simple Storage Service 用户指南中的创建存储桶的说明,创建 Amazon S3 存储桶。

    Amazon S3 存储桶的名称必须符合 DNS 标准。否则,将 ElastiCache 无法访问您的备份文件。DNS 合规性规则包括:

    • 名称的长度必须为至少 3 个字符,且不能超过 63 个字符。

    • 名称必须是由句点(.)分隔的一个或多个标签组成的系列,其中每个标签:

      • 以小写字母或数字开头。

      • 以小写字母或数字结尾。

      • 仅包含小写字母、数字和短划线。

    • 名称不能采用 IP 地址格式(例如 192.0.2.0)。

    您必须在与新 ElastiCache (Redis OSS) 集群相同的 Amazon 区域中创建 Amazon S3 存储桶。这种方法可确保从 Amazon S3 ElastiCache 读取您的.rdb 文件时达到最高的数据传输速度。

    注意

    为了使您的数据尽可能安全,请尽可能限制您的 Amazon S3 存储桶的权限。同时,权限仍然需要允许使用存储桶及其内容来为新 Redis OSS 集群做种子。

向 Amazon S3 存储桶添加文件夹
  1. 登录 Amazon Web Services Management Console 并打开 Amazon S3 控制台,网址为 https://console.aws.amazon.com/s3/

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

  3. 请选择 Create folder(创建文件夹)。

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

  5. 选择保存

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

步骤 3:将备份上传到 Amazon S3

现在,上传您在步骤 1:创建 Redis OSS 备份中创建的 .rdb 文件。将其上传到您在 步骤 2:创建 Amazon S3 存储桶和文件夹 中创建的 Amazon S3 存储桶和文件夹。有关此任务的更多信息,请参阅将对象添加到存储桶。在步骤 2 和 3 之间,选择您创建的文件夹的名称。

将 .rdb 文件上传到 Amazon S3 文件夹
  1. 登录 Amazon Web Services Management Console 并打开 Amazon S3 控制台,网址为 https://console.aws.amazon.com/s3/

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

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

  4. 选择上传

  5. 选择 Add files

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

  7. 选择 Open(打开)

  8. 确认 Upload 对话框中列出了正确的文件,然后选择 Upload

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

有关更多信息,请参阅 Amazon Simple Storage Service 用户指南中的存储桶限制

步骤 4:授予对.rdb 文件的 ElastiCache 读取权限

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

Amazon 2019 年 3 月 20 日之前推出的区域默认处于启用状态。您可以立即开始在这些 Amazon 地区工作。2019 年 3 月 20 日之后推出的区域默认处于禁用状态,如亚太地区(香港)和中东(巴林)。您必须按照 Amazon Web Services 一般参考中的管理 Amazon 区域所述,先启用或选择加入这些区域,然后才能使用它们。

根据您所在的 Amazon 地区选择您的方法:

授予对默认区域中.rdb 文件的 ElastiCache 读取权限

Amazon 2019 年 3 月 20 日之前推出的区域默认处于启用状态。您可以立即开始在这些 Amazon 地区工作。2019 年 3 月 20 日之后推出的区域默认处于禁用状态,如亚太地区(香港)和中东(巴林)。您必须按照 Amazon Web Services 一般参考中的管理 Amazon 区域所述,先启用或选择加入这些区域,然后才能使用它们。

授予对默认启用的 Amazon 区域中备份文件的 ElastiCache 读取权限
  1. 登录 Amazon Web Services Management Console 并打开 Amazon S3 控制台,网址为 https://console.aws.amazon.com/s3/

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

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

  4. 选择 .rdb 备份文件的名称。所选文件的名称将显示在页面顶部的选项卡上方。

  5. 选择权限

  6. 如果 aws-scs-s3-readonly 或以下列表中的一个规范 ID 未列为用户,请执行以下操作:

    1. 在 “其他 Amazon 账户的访问权限” 下,选择添加被授权者

    2. 在框中,添加该 Amazon 地区的规范 ID,如下所示:

      • 中国(北京)和中国(宁夏)区域:

        b14d6a125bdf69854ed8ef2e71d8a20b7c490f252229b806e514966e490b8d83

         

      • Amazon GovCloud (美国西部)区域:

        40fa568277ad703bd160f66ae4f83fc9dfdfd06c2f1b5060ca22442ac3ef8be6
        重要

        备份必须位于中的 S3 存储桶中,您才能将其下载到中的 Amazon GovCloud (US) Redis OSS 集群中 Amazon GovCloud (US)。

    3. 通过为以下对象选择 Yes(是)对存储桶设置权限:

      • List/write object(列出/写入对象)

      • Read/write object ACL permissions(读/写对象 ACL 权限)

    4. 选择保存

  7. 选择 Overview(概述),然后选择 Download(下载)

在可 ElastiCache 选区域中授予对.rdb 文件的读取权限

Amazon 2019 年 3 月 20 日之前推出的区域默认处于启用状态。您可以立即开始在这些 Amazon 地区工作。2019 年 3 月 20 日之后推出的区域默认处于禁用状态,如亚太地区(香港)和中东(巴林)。您必须按照 Amazon Web Services 一般参考中的管理 Amazon 区域所述,先启用或选择加入这些区域,然后才能使用它们。

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

授予对备份文件的 ElastiCache 读取权限
  1. 登录 Amazon Web Services Management Console 并打开 Amazon S3 控制台,网址为 https://console.aws.amazon.com/s3/

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

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

  4. 选择 .rdb 备份文件的名称。所选文件的名称将显示在页面顶部的选项卡上方。

  5. 选择权限选项卡。

  6. Permissions(权限)下,选择 Bucket policy(存储桶策略),然后选择 Edit(编辑)。

  7. 更新策略以授予执行操作 ElastiCache 所需的权限:

    • [ "Service" : "region-full-name.elasticache-snapshot.amazonaws.com" ] 添加到 Principal

    • 添加将快照导出到 Amazon S3 存储桶所需的以下权限:

      • "s3:GetObject"

      • "s3:ListBucket"

      • "s3:GetBucketAcl"

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

    { "Version": "2012-10-17", "Id": "Policy15397346", "Statement": [ { "Sid": "Stmt15399483", "Effect": "Allow", "Principal": { "Service": "ap-east-1.elasticache-snapshot.amazonaws.com" }, "Action": [ "s3:GetObject", "s3:ListBucket", "s3:GetBucketAcl" ], "Resource": [ "arn:aws:s3:::example-bucket", "arn:aws:s3:::example-bucket/backup1.rdb", "arn:aws:s3:::example-bucket/backup2.rdb" ] } ] }
  8. 选择保存更改

步骤 5:使用.rdb 文件数据为 ElastiCache 集群播种

现在,您可以创建 ElastiCache 集群并使用.rdb 文件中的数据为其做种子了。要创建集群,请按照创建集群从头开始创建 Redis OSS 复制组中的说明操作。请务必选择 Redis OSS 作为您的集群引擎。

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

使用.rdb 文件数据为 ElastiCache (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

  • 使用 Amazon CLI

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

  • 使用 ElastiCache API

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

重要

为 Redis OSS(已启用集群模式)集群做种时,必须配置新集群或复制组中的每个节点组(分片)。为此,请使用参数 --node-group-configuration(API:NodeGroupConfiguration)。有关更多信息,请参阅下列内容:

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