本文属于机器翻译版本。若本译文内容与英语原文存在差异,则一律以英文原文为准。
导出快照
MemoryDB for Redis 支持将 MemoryDB 快照导出到 Amazon Simple Storage Service (Amazon S3) 存储桶,因此您可以从 MemoryDB 之外访问它。导出的 MemoryDB 快照与开源 Redis 完全兼容,可以使用相应的 Redis 版本或工具进行加载。您可以使用 MemoryDB 控制台、或 MemoryDB AP Amazon CLI I 导出快照。
当您需要在其他Amazon区域启动集群时,导出快照会很有用。您可以导出您在某个 Amazon 区域中的数据,将 .rdb 文件复制到新的 Amazon 区域,然后使用该 .rdb 文件为新集群设定种子而不用等待新集群在使用过程中填充。有关为新集群做种的信息,请参阅 使用外部创建的快照为新集群设定种子。您可能希望导出集群数据的另一个原因是将 .rdb 文件用于脱机处理。
重要
-
MemoryDB 快照以及您希望将该快照复制到其中的 Amazon S3 存储桶必须位于同一Amazon个区域中。
尽管复制到 Amazon S3 存储桶的快照已加密,但我们强烈建议您不要将要存储快照的 Amazon S3 存储桶的访问权限授予他人。
使用数据分层功能的集群不支持使用数据分层功能将快照导出到 Amazon S3 的快照。有关更多信息,请参阅数据分层:
您必须具有与快照位于同一个Amazon区域的 Amazon S3 存储桶,才能将快照导出到 Amazon S3 存储桶,才能将快照导出到 Amazon S3 存储桶。授予 Memon 对存储桶的访问权限。前两个步骤向您演示了如何执行此操作。
警告
以下方案会以您可能不希望的方式公开您的数据:
-
其他人具有您将快照导出到其中的 Amazon S3 存储桶的访问权限时。
要控制对您的快照的访问权限,请将对 Amazon S3 存储桶的访问权限仅授予您允许访问数据的人员。有关管理对 Amazon S3 存储桶的访问权限的信息,请参阅 Amazon S3 开发人员指南中的管理访问权限。
-
当其他人有权使用 CopySnapshot API 操作时。
有权限使用
CopySnapshot
API 操作的用户或组可以创建自己的 Amazon S3 存储桶并将快照复制到其中。要控制对您的快照的访问权限,请使用 Amazon Identity and Access Management (IAM) 策略来控制谁可以使用CopySnapshot
API。有关使用 IAM 控制 MemoryDB API 操作使用的更多信息,请参阅 Mem ory DB 用户指南适用于 Redis 的 MemoryDB 中的身份和访问管理中的。
步骤 1:创建 Amazon S3 存储桶
以下过程使用 Amazon S3 控制台创建 Amazon S3 存储桶,您可以在其中导出和存储 MemoryDB 快照。
创建 Amazon S3 存储桶
-
登录到 Amazon Web Services Management Console,然后通过以下网址打开 Amazon S3 控制台:https://console.aws.amazon.com/s3/
。 -
选择 Create Bucket(创建存储桶)。
-
在 Create a Bucket - Select a Bucket Name and Region 中,执行以下操作:
-
在 Bucket Name(存储桶名称)中键入 Amazon S3 存储桶的名称。
-
从Region(区域)列表中,选择 Amazon S3 存储桶的 Amazon 区域。此Amazon区域必须与要导出 MemoryDB 快照的Amazon区域为同一个区域。
-
选择创建。
-
有关创建 Amazon S3 存储桶的更多信息,请参阅 Amazon Simple Storage Service 用户指南中的创建存储桶。
步骤 2:授予 MAmazon S3 存储桶的内存访问权限
默认情况下,在 2019 年 3 月 20 日之前推出的 Amazon 区域为已启用状态。您可以立即开始在这些 Amazon 区域中工作。默认情况下禁用 2019 年 3 月 20 日之后推出的区域,默认处于禁用状态。您必须按照管理Amazon区域所述,先启用或选择加入这些区域,然后才能使用它们。
授予 MemoryDB 对区域中的 S3 存储桶的访问权限 Amazon
要对Amazon区域中的 Amazon S3 存储桶创建适当的权限,请执行以下步骤。
授予 MameryS3 存储桶的访问权限
-
登录到Amazon Web Services Management Console,然后通过以下网址打开 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"
以下是更新策略具体形式的示例。
{ "Version": "2012-10-17", "Id": "Policy15397346", "Statement": [ { "Sid": "Stmt15399483", "Effect": "Allow", "Principal": { "Service": "
aws-region
.memorydb-snapshot.amazonaws.com" }, "Action": [ "s3:PutObject", "s3:GetObject", "s3:ListBucket", "s3:GetBucketAcl", "s3:ListMultipartUploadParts", "s3:ListBucketMultipartUploads" ], "Resource": [ "arn:aws:s3:::example-bucket", "arn:aws:s3:::example-bucket/*" ] } ] }
步骤 3:导出内存数据库快照
现在,您已经创建了 S3 存储桶并向 MemoryDB 授予了访问存储桶的权限。将 S3 对象所有权更改为已启用 ACL-首选存储桶所有者。接下来,您可以使用 MemoryDB 控制台、Amazon CLI 或 MemoryDB API 将快照导出到存储桶。下面假设您拥有以下附加的 S3 特定 IAM 权限。
{ "Version": "2012-10-17", "Statement": [{ "Effect": "Allow", "Action": [ "s3:GetBucketLocation", "s3:ListAllMyBuckets", "s3:PutObject", "s3:GetObject", "s3:DeleteObject", "s3:ListBucket" ], "Resource": "arn:aws:s3:::*" }] }
以下过程使用 MemoryDB 控制台将快照导出到 Amazon S3 存储桶,以便从 MemoryDB 之外访问它。Amazon S3 存储桶必须与 MemoryDB 快照位于同一Amazon区域。
将 Mazon S3 快照导出到 Amazon S3 存储桶
-
要查看快照列表,请从左侧导航窗格中选择快照。
-
从快照列表中,选中要导出的快照的名称左侧的单选按钮。
-
选择 Copy(复制)。
-
在 Create a Copy of the Backup?(创建备份副本?)中,执行以下操作:
-
在 Ne w snap shot 名称框中,键入您的新快照名称。
名称必须在 1 到 1000 个字符之间,并能够以 UTF-8 编码。
MemoryDB 会向您在此处输入的值添加分区标识符和
.rdb
shard 标识符,添加分区标识符 例如,如果你输入my-exported-snapshot
,MemoryDB 会创建。my-exported-snapshot-0001.rdb
-
从 Target S3 Location(目标 S3 位置)列表中,选择要将快照复制到其中的 Amazon S3 存储桶(您在中创建的存储桶步骤 1:创建 Amazon S3 存储桶)的名称。
目标 S3 位置必须是快照所在Amazon区域内的 Amazon S3 存储桶并具有以下权限,导出过程才能成功。
对象访问 – Read(读取)和 Write(写入)。
权限访问 – Read(读取)。
有关更多信息,请参阅步骤 2:授予 MAmazon S3 存储桶的内存访问权限:
-
选择 Copy(复制)。
-
注意
如果您的 S3 存储桶没有供 MemoryDB 将快照导出到其中所需的权限,则您会收到以下某个错误消息。步骤 2:授予 MAmazon S3 存储桶的内存访问权限返回添加指定的权限,然后重试导出快照。
-
MemoryDB 尚未被授予 S3 存储桶上的 %s 读取权限。
解决方案:在存储桶上添加 Read 权限。
-
MemoryDB 尚未被授予 S3 存储桶上的 %s 写入权限。
解决方案:在存储桶上添加 Write 权限。
-
MemoryDB 尚未被授予 S3 存储桶上的 READ_ACP 权限 %s。
解决方案:为存储桶的权限访问添加 Read。
如果想要将您的快照复制到其他Amazon区域,使用Amazon S3 来复制快照。有关更多信息,请参阅《Amazon Simple Storage Service 用户指南》中的复制对象。
使用带有以下参数的 copy-snapshot
CLI 操作将快照导出到 Amazon S3 存储桶:
参数
-
--source-snapshot-name
— 要复制的快照的名称。 -
--target-snapshot-name
— 快照副本的名称。名称必须在 1 到 1000 个字符之间,并能够以 UTF-8 编码。
MemoryDB 会向您在此处输入的值添加分区标识符和
.rdb
SHARD 标识符,添加分区标 例如,如果你输入my-exported-snapshot
,MemoryDB 会创建。my-exported-snapshot-0001.rdb
-
--target-bucket
— 您要将快照导出到其中的 Amazon S3 存储桶的名称。快照的副本是在指定的存储段中创建的。--target-bucket
必须是快照所在Amazon区域内的 Amazon S3 存储桶并具有以下权限,导出过程才能成功。对象访问 – Read(读取)和 Write(写入)。
权限访问 – Read(读取)。
有关更多信息,请参阅步骤 2:授予 MAmazon S3 存储桶的内存访问权限:
以下操作将快照复制到 my-s3-bucket。
对于 Linux、macOS 或 Unix:
aws memorydb copy-snapshot \ --source-snapshot-name
automatic.my-primary-2021-06-27-03-15
\ --target-snapshot-namemy-exported-snapshot
\ --target-bucketmy-s3-bucket
对于 Windows:
aws memorydb copy-snapshot ^ --source-snapshot-name
automatic.my-primary-2021-06-27-03-15
^ --target-snapshot-namemy-exported-snapshot
^ --target-bucketmy-s3-bucket
注意
如果您的 S3 存储桶没有供 MemoryDB 将快照导出到其中所需的权限,则您会收到以下某个错误消息。步骤 2:授予 MAmazon S3 存储桶的内存访问权限返回添加指定的权限,然后重试导出快照。
-
MemoryDB 尚未被授予 S3 存储桶上的 %s 读取权限。
解决方案:在存储桶上添加 Read 权限。
-
MemoryDB 尚未被授予 S3 存储桶上的 %s 写入权限。
解决方案:在存储桶上添加 Write 权限。
-
MemoryDB 尚未被授予 S3 存储桶上的 READ_ACP 权限 %s。
解决方案:为存储桶的权限访问添加 Read。
有关更多信息,请参阅《Amazon CLI 命令参考》中的 copy-snapshot
。
如果想要将您的快照复制到其他Amazon区域,使用Amazon S3 的复制操作。有关更多信息,请参阅《Amazon Simple Storage Service 用户指南》中的复制对象。
使用具有以下参数的 CopySnapshot
API 操作将快照导出到 Amazon S3 存储桶。
参数
-
SourceSnapshotName
— 要复制的快照的名称。 -
TargetSnapshotName
— 快照副本的名称。名称必须在 1 到 1000 个字符之间,并能够以 UTF-8 编码。
MemoryDB 会向您在此处输入的值添加分区标识符和
.rdb
shard 标识符,添加分区标识符 例如,如果您输入my-exported-snapshot
,则将获得my-exported-snapshot-0001.rdb
。 -
TargetBucket
— 您要将快照导出到其中的 Amazon S3 存储桶的名称。快照的副本是在指定的存储段中创建的。TargetBucket
必须是快照所在Amazon区域内的 Amazon S3 存储桶并具有以下权限,导出过程才能成功。对象访问 – Read(读取)和 Write(写入)。
权限访问 – Read(读取)。
有关更多信息,请参阅步骤 2:授予 MAmazon S3 存储桶的内存访问权限:
以下示例将自动快照复制到 Amazon S3 存储桶my-s3-bucket
。
https://memory-db.us-east-1.amazonaws.com/ ?Action=CopySnapshot &SourceSnapshotName=automatic.my-primary-2021-06-27-03-15 &TargetBucket=my-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:授予 MAmazon S3 存储桶的内存访问权限返回添加指定的权限,然后重试导出快照。
-
MemoryDB 尚未被授予 S3 存储桶上的 %s 读取权限。
解决方案:在存储桶上添加 Read 权限。
-
MemoryDB 尚未被授予 S3 存储桶上的 %s 写入权限。
解决方案:在存储桶上添加 Write 权限。
-
MemoryDB 尚未被授予 S3 存储桶上的 READ_ACP 权限 %s。
解决方案:为存储桶的权限访问添加 Read。
有关更多信息,请参阅CopySnapshot。
如果您要将快照复制到其他Amazon区域,请使用 Amazon S3 的复制操作将导出的快照复制到其他Amazon区域中的 Amazon S3 存储桶。有关更多信息,请参阅《Amazon Simple Storage Service 用户指南》中的复制对象。