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

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

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

创建新 MemoryDB 集群时,可以使用 Valkey 或 Redis OSS .rdb 快照文件中的数据来作为种子。

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

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

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

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

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

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

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

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

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

创建快照为您的 MemoryDB 集群做种
  1. 连接到现有 Valkey 或 Redis OSS 实例。

  2. 运行 BGSAVESAVE 操作以创建快照。记录 .rdb 文件的位置。

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

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

有关创建快照的其他信息,请参阅持久化

步骤 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. 选择保存

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

步骤 3:将快照上传到 Amazon S3

现在,上传您在步骤 1:在外部集群上创建快照中创建的 .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. 选择保存

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

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

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

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

    选择引擎之后,展开高级设置部分,然后找到将数据导入集群。在 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 获取事件消息。