使用外部创建的快照为新集群做种 - 适用于 Redis 的 Amazon MemoryDB

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

使用外部创建的快照为新集群做种

创建新 MemoryDB 集群时,可以使用 Redis .rdb 快照文件中的数据为它做种。

要从 MemoryDB 快照或 ElastiCache for Redis 快照为新 MemoryDB 集群做种,请参阅 从快照还原

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

  • 指定新集群中的分片数量。此数量可以与用于创建快照文件的集群中的分片数量不同。

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

重要
  • 您必须确保快照数据不超过节点的资源容量。

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

    有关节点类型和规范的完整列表,请参阅 MemoryDB 节点类型特定的参数

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

步骤 1:在外部集群上创建 redis 快照

创建快照为您的 MemoryDB 集群做种
  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 标准。否则,MemoryDB 无法访问您的备份文件。DNS 合规性规则包括:

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

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

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

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

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

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

    我们强烈建议您在与新 MemoryDB 集群相同的 AWS 区域创建 Amazon S3 存储桶。此方式可确保当 MemoryDB 从 Amazon S3 读取 .rdb 文件时,数据传输速度达到最高。

    注意

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

向 Amazon S3 存储桶添加文件夹
  1. 登录到 AWS Management Console,然后通过以下网址打开 Amazon S3 控制台:https://console.aws.amazon.com/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 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. 确认上传页面中列出了正确的文件,然后选择上传

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

有关更多信息,请参阅 Amazon Simple Storage Service 用户指南中的存储桶命名规则

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

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

授予 MemoryDB 对 .rdb 文件的读取访问权限

向 MemoryDB 授予对快照文件的读取访问权限
  1. 登录到 AWS Management Console,然后通过以下网址打开 Amazon S3 控制台:https://console.aws.amazon.com/s3/

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

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

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

  5. 选择权限选项卡。

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

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

    • [ "Service" : "region-full-name.memorydb-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": "us-east-1.memorydb-snapshot.amazonaws.com" }, "Action": [ "s3:GetObject", "s3:ListBucket", "s3:GetBucketAcl" ], "Resource": [ "arn:aws:s3:::example-bucket", "arn:aws:s3:::example-bucket/snapshot1.rdb", "arn:aws:s3:::example-bucket/snapshot2.rdb" ] } ] }
  8. 选择 Save(保存)。

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

现在,您已准备好创建 MemoryDB 集群并使用 .rdb 文件中的数据为其做种。要创建集群,请按照 创建 MemoryDB 集群 中的说明操作。

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

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

    选择 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-clustercreate-cluster 操作,请使用参数 --snapshot-arns 为各 .rdb 文件指定完全限定的 ARN。例如,arn:aws:s3:::myBucket/myFolder/myBackupFilename.rdb。ARN 必须解析为您存储在 Amazon S3 中的快照文件。

  • 使用 MemoryDB API

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

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