本文属于机器翻译版本。若本译文内容与英语原文存在差异,则一律以英文原文为准。
导出快照
MemoryDB 支持将 MemoryDB 快照导出到 Amazon Simple Storage Service(Amazon S3)存储桶,这让您可以从 MemoryDB 之外访问它。导出的 MemoryDB 快照完全符合 Valkey 和开源 Redis OSS,并且可以使用适当的版本或工具进行加载。您可以使用 MemoryDB 控制台AWS CLI、或 MemoryDB API 导出快照。
如果您需要在其他AWS区域启动集群,则导出快照会很有帮助。您可以将数据导出到一个AWS区域,将.rdb 文件复制到新AWS区域,然后使用该.rdb 文件为新集群做种子,而不必等待新集群通过使用进行填充。有关为新集群做种的信息,请参阅 使用外部创建的快照为新集群做种。您可能希望导出集群数据的另一个原因是将 .rdb 文件用于脱机处理。
重要
-
MemoryDB 快照和您要将其复制到的 Amazon S3 存储桶必须位于同一AWS区域。
尽管复制到 Amazon S3 存储桶的快照已加密,但我们强烈建议您不要将要存储快照的 Amazon S3 存储桶的访问权限授予他人。
使用数据分层功能的集群不支持将快照导出到 Amazon S3。有关更多信息,请参阅 数据分层。
在将快照导出到 Amazon S3 存储桶之前,您必须将 Amazon S3 存储桶与快照位于同一AWS区域。向 MemoryDB 授予对存储桶的访问权限。前两个步骤向您演示了如何执行此操作。
警告
以下方案会以您可能不希望的方式公开您的数据:
-
其他人具有您将快照导出到其中的 Amazon S3 存储桶的访问权限时。
要控制对快照的访问权限,请将对 Amazon S3 存储桶的访问权限仅授予您允许访问数据的人员。有关管理对 Amazon S3 存储桶的访问权限的信息,请参阅 Amazon S3 开发人员指南中的管理访问权限。
-
当其他人有权使用 CopySnapshot API 操作时。
有权限使用
CopySnapshotAPI 操作的用户或组可以创建自己的 Amazon S3 存储桶并将快照复制到其中。要控制对快照的访问权限,请使用 AWS Identity and Access Management (IAM) 策略来控制谁有权使用CopySnapshotAPI。有关使用 IAM 控制 MemoryDB API 操作使用的更多信息,请参阅 MemoryDB 用户指南中的 MemoryDB 中的身份和访问管理。
步骤 1:创建 Amazon S3 存储桶
以下过程使用 Amazon S3 控制台创建您可以在其中导出和存储 MemoryDB 快照的 Amazon S3 存储桶。
创建 Amazon S3 存储桶
-
登录AWS 管理控制台并打开 Amazon S3 控制台,网址为https://console.aws.amazon.com/s3/
。 -
选择创建存储桶。
-
在 Create a Bucket - Select a Bucket Name and Region 中,执行以下操作:
-
在 Bucket Name(存储桶名称)中键入 Amazon S3 存储桶的名称。
-
从区域列表中,为您的 Amazon S3 存储桶选择一个AWS区域。此AWS区域必须与您要导出的 MemoryDB 快照位于同一AWS区域。
-
选择创建。
-
有关创建 Amazon S3 存储桶的更多信息,请参阅 Amazon Simple Storage Service 用户指南中的创建存储桶。
步骤 2:授予 MemoryDB 对 Amazon S3 存储桶的访问权限
AWS2019 年 3 月 20 日之前推出的区域默认处于启用状态。您可以立即开始在这些AWS地区工作。2019 年 3 月 20 日之后推出的区域默认情况下处于禁用状态。您必须按照管理 AWS 区域所述,先启用或选择加入这些区域,然后才能使用它们。
授予 MemoryDB 访问某个区域内您的 S3 存储桶的权限 AWS
要在某个AWS区域的 Amazon S3 存储桶上创建适当的权限,请执行以下步骤。
向 MemoryDB 授予对 S3 存储桶的访问权限
-
登录AWS 管理控制台并打开 Amazon S3 控制台,网址为https://console.aws.amazon.com/s3/
。 -
选择要将快照复制到其中的 Amazon S3 存储桶的名称。这应该是您在步骤 1:创建 Amazon S3 存储桶中创建的 S3 存储桶。
-
选择权限选项卡,在权限下面,选择存储桶策略。
-
更新策略以授予 MemoryDB 执行操作所需的权限:
将
[ "Service" : "添加到region-full-name.memorydb-snapshot.amazonaws.com" ]Principal。添加将快照导出到 Amazon S3 存储桶所需的以下权限。
"s3:PutObject""s3:GetObject""s3:ListBucket""s3:GetBucketAcl""s3:ListMultipartUploadParts""s3:ListBucketMultipartUploads"
以下是更新策略具体形式的示例。
步骤 3:导出 MemoryDB 快照
现在您已经创建了 S3 存储桶并向 MemoryDB 授予了访问它的权限。将 S3 对象所有权更改为ACLs 已启用-首选存储桶所有者。接下来,你可以使用 MemoryDB 控制台、CL AWS I 或 MemoryDB API 将快照导出到控制台。下面假设您拥有以下附加的 S3 特定 IAM 权限。
以下步骤使用 MemoryDB 控制台将备份导出到 Amazon S3 存储桶,以便从 MemoryDB 外部访问它。Amazon S3 存储桶必须与 MemoryDB 快照位于同一AWS区域。
将 MemoryDB 快照导出到 Amazon S3 桶
-
登录AWS 管理控制台并打开 MemoryDB 控制台,网址为。https://console.aws.amazon.com/memorydb/
-
要查看您的快照列表,请从左侧导航窗格中,选择快照。
-
在快照列表中,选择要导出的快照名称左侧的单选按钮。
-
选择复制。
-
在 Create a Copy of the Backup?(创建备份副本?)中,执行以下操作:
-
在新快照名称框中,输入新快照的名称。
名称必须在 1 到 1000 个字符之间,并能够以 UTF-8 编码。
MemoryDB 对您在此处输入的值添加分片标识符和
.rdb。例如,如果您输入my-exported-snapshot,则 MemoryDB 创建my-exported-snapshot-0001.rdb。 -
从目标 S3 位置列表中,选择要将快照复制到其中的 Amazon S3 存储桶(您在 步骤 1:创建 Amazon S3 存储桶 中创建的存储桶)的名称。
目标 S3 位置必须是快照AWS区域中具有以下权限的 Amazon S3 存储桶,导出过程才能成功。
对象访问 – Read(读取)和 Write(写入)。
权限访问 – Read(读取)。
有关更多信息,请参阅 步骤 2:授予 MemoryDB 对 Amazon S3 存储桶的访问权限。
-
选择复制。
-
注意
如果您的 S3 存储桶没有供 MemoryDB 将快照导出到其中所需的权限,则您将收到以下某个错误消息。返回到 步骤 2:授予 MemoryDB 对 Amazon S3 存储桶的访问权限,添加指定权限并重试导出快照的操作。
-
未授予 MemoryDB 在 S3 存储桶上的 READ 权限 %s。
解决方案:在存储桶上添加 Read 权限。
-
未授予 MemoryDB 在 S3 存储桶上的 WRITE 权限 %s。
解决方案:在存储桶上添加 Write 权限。
-
未授予 MemoryDB 在 S3 存储桶上的 READ_ACP 权限 %s。
解决方案:为存储桶的权限访问添加 Read。
如果您想将快照复制到其他AWS区域,请使用 Amazon S3 将其复制。有关更多信息,请参阅 Amazon Simple Storage Service 用户指南中的复制对象。
使用带有以下参数的 copy-snapshot CLI 操作将快照导出到 Amazon S3 存储桶:
Parameters
-
--source-snapshot-name– 要复制的快照的名称。 -
--target-snapshot-name– 快照副本的名称。名称必须在 1 到 1000 个字符之间,并能够以 UTF-8 编码。
MemoryDB 对您在此处输入的值添加分片标识符和
.rdb。例如,如果您输入my-exported-snapshot,则 MemoryDB 创建my-exported-snapshot-0001.rdb。 -
--target-bucket– 您要将快照导出到其中的 Amazon S3 存储桶的名称。在指定存储桶中生成快照的副本。--target-bucket必须是快照AWS所在区域中具有以下权限的 Amazon S3 存储桶,导出过程才能成功。对象访问 – Read(读取)和 Write(写入)。
权限访问 – Read(读取)。
有关更多信息,请参阅 步骤 2:授予 MemoryDB 对 Amazon S3 存储桶的访问权限。
以下操作将快照复制到 amzn-s3-demo-bucket。
对于 Linux、macOS 或 Unix:
aws memorydb copy-snapshot \ --source-snapshot-nameautomatic.my-primary-2021-06-27-03-15\ --target-snapshot-namemy-exported-snapshot\ --target-bucketamzn-s3-demo-bucket
对于 Windows:
aws memorydb copy-snapshot ^ --source-snapshot-nameautomatic.my-primary-2021-06-27-03-15^ --target-snapshot-namemy-exported-snapshot^ --target-bucketamzn-s3-demo-bucket
注意
如果您的 S3 存储桶没有供 MemoryDB 将快照导出到其中所需的权限,则您将收到以下某个错误消息。返回到 步骤 2:授予 MemoryDB 对 Amazon S3 存储桶的访问权限,添加指定权限并重试导出快照的操作。
-
未授予 MemoryDB 在 S3 存储桶上的 READ 权限 %s。
解决方案:在存储桶上添加 Read 权限。
-
未授予 MemoryDB 在 S3 存储桶上的 WRITE 权限 %s。
解决方案:在存储桶上添加 Write 权限。
-
未授予 MemoryDB 在 S3 存储桶上的 READ_ACP 权限 %s。
解决方案:为存储桶的权限访问添加 Read。
有关更多信息,请参阅《AWS CLI Command Reference》中的 copy-snapshot。
如果您想将快照复制到其他AWS区域,请使用 Amazon S3 副本。有关更多信息,请参阅 Amazon Simple Storage Service 用户指南中的复制对象。
使用带有以下参数的 CopySnapshot API 操作将快照导出到 Amazon S3 存储桶。
Parameters
-
SourceSnapshotName– 要复制的快照的名称。 -
TargetSnapshotName– 快照副本的名称。名称必须在 1 到 1000 个字符之间,并能够以 UTF-8 编码。
MemoryDB 对您在此处输入的值添加分片标识符和
.rdb。例如,如果您输入my-exported-snapshot,则将获得my-exported-snapshot-0001.rdb。 -
TargetBucket– 您要将快照导出到其中的 Amazon S3 存储桶的名称。在指定存储桶中生成快照的副本。TargetBucket必须是快照AWS所在区域中具有以下权限的 Amazon S3 存储桶,导出过程才能成功。对象访问 – Read(读取)和 Write(写入)。
权限访问 – Read(读取)。
有关更多信息,请参阅 步骤 2:授予 MemoryDB 对 Amazon S3 存储桶的访问权限。
以下示例演示将自动快照复制到 Amazon S3 存储桶 amzn-s3-demo-bucket。
https://memory-db.us-east-1.amazonaws.com/ ?Action=CopySnapshot &SourceSnapshotName=automatic.my-primary-2021-06-27-03-15 &TargetBucket=&example-s3-bucket; &TargetSnapshotName=my-snapshot-copy &SignatureVersion=4 &SignatureMethod=HmacSHA256 &Timestamp=20210801T220302Z &Version=2021-01-01 &X-Amz-Algorithm=Amazon4-HMAC-SHA256 &X-Amz-Date=20210801T220302Z &X-Amz-SignedHeaders=Host &X-Amz-Expires=20210801T220302Z &X-Amz-Credential=<credential> &X-Amz-Signature=<signature>
注意
如果您的 S3 存储桶没有供 MemoryDB 将快照导出到其中所需的权限,则您将收到以下某个错误消息。返回到 步骤 2:授予 MemoryDB 对 Amazon S3 存储桶的访问权限,添加指定权限并重试导出快照的操作。
-
未授予 MemoryDB 在 S3 存储桶上的 READ 权限 %s。
解决方案:在存储桶上添加 Read 权限。
-
未授予 MemoryDB 在 S3 存储桶上的 WRITE 权限 %s。
解决方案:在存储桶上添加 Write 权限。
-
未授予 MemoryDB 在 S3 存储桶上的 READ_ACP 权限 %s。
解决方案:为存储桶的权限访问添加 Read。
有关更多信息,请参阅 CopySnapshot。
如果您想将快照复制到其他AWS区域,请使用 Amazon S3 副本将导出的快照复制到另一个AWS区域的 Amazon S3 存储桶。有关更多信息,请参阅 Amazon Simple Storage Service 用户指南中的复制对象。