使用外部创建的备份为新集群设定种子 - Amazon ElastiCache for Redis

使用外部创建的备份为新集群设定种子

创建新 Redis 集群时,可以使用 Redis .rdb 备份文件中的数据为它做种。如果您当前在 ElastiCache 外部管理 Redis 实例,并要使用现有 Redis 数据填充新的 ElastiCache for Redis 集群,则为集群设定种子可能十分有用。

要从在 Amazon ElastiCache 中创建的 Redis 备份为新 Redis 集群设定种子,请参阅 从备份还原(可选择调整集群大小)

使用 Redis .rdb 文件为新 Redis 集群做种时,您可以执行以下操作:

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

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

  • 为新集群指定不同的节点类型 – 大于或小于创建备份的集群中使用的节点类型。如果您决定缩减到较小的节点类型,则必须确保新节点类型拥有足量内存以适应您的数据和 Redis 开销。有关更多信息,请参阅 确保具有用于创建 Redis 快照的足够内存

  • 以不同于创建备份文件时所用集群中的方法将您的键分发到新 Redis(已启用集群模式)集群的槽中。

注意

无法从 Redis(已启用集群模式)集群中创建的 .rdb 文件为 Redis(已禁用集群模式)集群设定种子。

重要
  • 您必须确保 Redis 备份数据不超过节点的资源容量。例如,您无法将具有 5 GB Redis 数据的 .rdb 文件上传到具有 2.9 GB 内存的 cache.m3.medium 节点。

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

    有关节点类型和规范的完整列表,请参阅 特定于 Redis 节点类型的参数Amazon ElastiCache 产品功能和详细信息

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

在接下来的部分中,您可以找到一些主题,引导您将 Redis 集群从 ElastiCache for Redis 外部迁移到 ElastiCache for Redis。

步骤 1:创建 Redis 备份

创建要为 ElastiCache for Redis 实例设定种子的 Redis 备份

  1. 连接到您的现有 Redis 实例。

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

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

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

有关创建备份的其他信息,请参阅 Redis 网站上的 Redis 持久化

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

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

创建 Amazon S3 存储桶

  1. 登录到 AWS 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 for Redis 集群所在同一个 AWS 区域中创建 Amazon S3 存储桶。此方式可确保当 ElastiCache 从 Amazon S3 读取 .rdb 文件时,数据传输速度达到最高。

    注意

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

向 Amazon S3 存储桶添加文件夹

  1. 登录到 AWS Management Console,然后通过以下网址打开 Amazon S3 控制台:https://console.aws.amazon.com/s3/

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

  3. 选择 Create folder

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

  5. 选择保存

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

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

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

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

  1. 登录到 AWS Management Console,然后通过以下网址打开 Amazon S3 控制台:https://console.aws.amazon.com/s3/

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

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

  4. 选择 Upload

  5. 选择 Add files

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

  7. 选择 Open

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

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

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

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

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

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

根据您的 AWS 区域选择方法:

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

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

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

  1. 登录到 AWS Management Console,然后通过以下网址打开 Amazon S3 控制台:https://console.aws.amazon.com/s3/

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

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

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

    图像:在 S3 控制台中选择的文件
  5. 选择 Permissions

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

    1. Access for other AWS accounts(对其他亚马逊云科技账户的访问权限)下,选择 Add grantee(添加被授权者)

    2. 在框中添加 AWS 区域的规范 ID,如以下所示:

      • AWS GovCloud (US-West) 区域:

        40fa568277ad703bd160f66ae4f83fc9dfdfd06c2f1b5060ca22442ac3ef8be6
        重要

        备份必须位于 AWS GovCloud (US) 中的 S3 存储桶内,以便您将它下载到 AWS GovCloud (US) 中的 Redis 集群。

      • 默认启用的 AWS 区域:

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

      • 读取对象

      • 读取对象权限

    4. 选择保存

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

授予 ElastiCache 对选择加入区域中 .rdb 文件的读取访问权限

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

授予 ElastiCache 对选择加入 AWS 区域中备份文件的读取访问权限

  1. 登录到 AWS Management Console,然后通过以下网址打开 Amazon S3 控制台:https://console.aws.amazon.com/s3/

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

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

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

    图像:在 S3 控制台中选择的文件
  5. 选择 Permissions 选项卡。

  6. Permissions (权限) 下,选择 Bucket policy (存储桶策略)

  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" ] } ] }

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

现在,您已准备好创建 ElastiCache 集群并使用 .rdb 文件中的数据为其设定种子。要创建集群,请按照创建集群从头创建 Redis 复制组中的说明操作。请确保选择 Redis 作为集群引擎。

您用来告知 ElastiCache 在何处查找已上传到 Amazon S3 的 Redis 备份的方法取决于您创建集群时采用的方法:

使用 .rdb 文件数据为 ElastiCache for Redis 集群或复制组设定种子

  • 使用 ElastiCache 控制台

    选择 Redis 引擎之后,展开 Advanced Redis settings 部分,然后找到 Import data to cluster。在 Seed RDB file S3 location(使用 RDB 文件 S3 位置设定种子)框中,键入文件的 Amazon S3 路径。如果您有多个 .rdb 文件,则以逗号分隔的列表形式键入各文件的路径。Amazon S3 路径类似于 myBucket/myFolder/myBackupFilename.rdb

  • 使用 AWS 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(已启用集群模式)集群设定种子时,您必须在新集群或复制组中配置每个节点组(分区)。为此,请使用参数 --node-group-configuration(API:NodeGroupConfiguration)。有关更多信息,请参阅下列内容:

在创建集群的过程中,Redis 备份中的数据将写入集群。您可通过查看 ElastiCache 事件消息来监控进度。为此,请参阅 ElastiCache 控制台,然后选择 Cache Events(缓存事件)。您还可以使用 AWS ElastiCache 命令行界面或 ElastiCache API 获取事件消息。有关更多信息,请参阅 查看 ElastiCache 事件