Amazon ElastiCache
用户指南 (API Version 2015-02-02)
AWS 服务或AWS文档中描述的功能,可能因地区/位置而异。请点击 Amazon AWS 入门,可查看中国地区的具体差异

使用外部创建的备份为新集群做种 (Redis)

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

要从在 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) 来加密 Redis .rdb 文件。

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

步骤 1:创建 Redis 备份

创建将从中为面向 Redis 的 ElastiCache 实例做种的 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 管理控制台并通过以下网址打开 Amazon S3 控制台:https://console.amazonaws.cn/s3/

  2. 按照 Amazon Simple Storage Service 控制台用户指南创建存储桶的说明来创建 Amazon S3 存储桶。

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

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

    • 名称必须是一系列由句点 (.) 隔开的一个或多个标签,每个标签都遵从以下规则:

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

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

      • 只允许使用小写字母、数字和短划线。

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

    我们强烈建议您在与新的面向 Redis 的 ElastiCache 集群相同的区域创建 Amazon S3 存储桶。此方式将确保在 ElastiCache 从 Amazon S3 读取您的 .rdb 文件时,数据传输速度最快。

    安全建议

    为尽可能安全地保留数据,请在允许存储桶及其内容可用于为新 Redis 集群做种的同时,尽可能限制您 Amazon S3 存储桶上的权限。

将文件夹添加到 Amazon S3 存储桶

  1. 登录 AWS 管理控制台并通过以下网址打开 Amazon S3 控制台:https://console.amazonaws.cn/s3/

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

  3. 选择 Create folder

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

  5. 选择 Save

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

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

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

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

  1. 登录 AWS 管理控制台并通过以下网址打开 Amazon S3 控制台:https://console.amazonaws.cn/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 对备份文件的读取访问权限

  1. 登录 AWS 管理控制台并通过以下网址打开 Amazon S3 控制台:https://console.amazonaws.cn/s3/

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

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

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

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

    在 S3 控制台中选择的文件

  5. 选择 Permissions

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

    1. 其他 AWS 账户的访问权限下,选择+ 添加账户

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

      • 中国(北京) 区域:

        Copy
        b14d6a125bdf69854ed8ef2e71d8a20b7c490f252229b806e514966e490b8d83

         

      • AWS GovCloud (US)区域:

        Copy
        40fa568277ad703bd160f66ae4f83fc9dfdfd06c2f1b5060ca22442ac3ef8be6

        重要

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

      • 所有其他区域 -

        Copy
        540804c33a284a299d2547575ce1010f2312ef3da9b3a053c8bc45bf233e4353
    3. 通过为以下对象选择来对存储桶设置权限:

      1. 读取对象

      2. 读取对象权限

    4. 选择 Save

  7. 选择 Overview

  8. 选择 Download

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

现在,您已准备好创建 ElastiCache 集群并使用 .rdb 文件中的数据为其做种。要创建集群,请按照创建集群从头开始创建具有副本的 Redis 集群中的说明操作。请确保选择 Redis 作为集群引擎。

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

  • 通过 ElastiCache 控制台使用 .rdb 文件数据为 ElastiCache 集群做种

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

     

  • 通过 AWS CLI 使用 .rdb 文件数据为 ElastiCache 集群做种

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

     

  • 通过 ElastiCache API 使用 .rdb 文件数据为 ElastiCache 集群做种

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

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