本文属于机器翻译版本。若本译文内容与英语原文存在差异,则一律以英文原文为准。
导出备份
亚马逊 ElastiCache 支持将您的 ElastiCache (RedisOSS)备份导出到亚马逊简单存储服务(Amazon S3)存储桶,这样您就可以从外部访问该存储桶。 ElastiCache您可以使用 ElastiCache 控制台 AWS CLI、或导出备份 ElastiCache API。
如果您需要在其他 AWS 区域启动集群,则导出备份会很有帮助。您可以将数据导出到一个 AWS 区域,将.rdb 文件复制到新 AWS 区域,然后使用该.rdb 文件为新缓存做种子,而不必等待新集群通过使用进行填充。有关为新集群做种的信息,请参阅 教程:使用外部创建的备份为自己设计的新集群播种。您可能想要导出缓存数据的另一个原因是使用.rdb 文件进行离线处理。
重要
-
ElastiCache 备份和您要将其复制到的 Amazon S3 存储桶必须位于同一 AWS 区域。
尽管复制到 Amazon S3 存储桶的备份已加密,但我们强烈建议您不要将要存储备份的 Amazon S3 存储桶的访问权限授予他人。
-
使用数据分层功能的集群不支持将备份导出到 Amazon S3。有关更多信息,请参阅 数据分层 ElastiCache。
-
导出备份适用于 Valkey 和 Redis OSS 自己设计的集群、Serverless Valkey 和 Redis OSS 以及无服务器 Memcached。对于自行设计的 Memcached 集群,无法导出备份。
在将备份导出到 Amazon S3 存储桶之前,您必须将 Amazon S3 存储桶与备份位于同一 AWS 区域。授予对存储桶的 ElastiCache 访问权限。前两个步骤向您演示了如何执行此操作。
创建 Amazon S3 存储桶
以下步骤使用 Amazon S3 控制台创建用于导出和存储 ElastiCache 备份的 Amazon S3 存储桶。
创建 Amazon S3 存储桶
-
登录 AWS 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 存储桶的名称。
您的 Amazon S3 存储桶的名称必须DNS符合要求。否则,将 ElastiCache 无法访问您的备份文件。DNS合规规则是:
-
名称的长度必须为至少 3 个字符,且不能超过 63 个字符。
-
名称必须是由句点(.)分隔的一个或多个标签组成的系列,其中每个标签:
-
以小写字母或数字开头。
-
以小写字母或数字结尾。
-
仅包含小写字母、数字和短划线。
-
-
名称不能采用 IP 地址格式(例如 192.0.2.0)。
-
-
从区域列表中,为您的 Amazon S3 存储桶选择一个 AWS 区域。此 AWS 区域必须与您要导出的 ElastiCache 备份位于同一 AWS 区域。
-
选择创建。
-
有关创建 Amazon S3 存储桶的更多信息,请参阅 Amazon Simple Storage Service 用户指南中的创建存储桶。
授予对您的 Amazon S3 存储桶的 ElastiCache 访问权限
ElastiCache 为了能够将快照复制到 Amazon S3 存储桶,您必须更新存储桶策略以授予对存储桶的 ElastiCache 访问权限。
警告
虽然复制到 Amazon S3 存储桶的备份已加密,但是对您的 Amazon S3 存储桶拥有访问权限的任何人都可以访问您的数据。因此,我们强烈建议您设置IAM策略以防止未经授权访问此 Amazon S3 存储桶。有关更多信息,请参阅《Amazon S3 用户指南》中的管理访问权限。
要创建 Amazon S3 存储桶的适当权限,请执行以下步骤。
授予 ElastiCache 对 S3 存储桶的访问权限
-
登录 AWS Management Console 并打开 Amazon S3 控制台,网址为https://console.aws.amazon.com/s3/
。 -
选择要将备份复制到其中的 Amazon S3 存储桶的名称。这应该是您在创建 Amazon S3 存储桶中创建的 S3 存储桶。
-
选择 “权限” 选项卡,在 “权限” 下选择 “访问控制列表” (ACL),然后选择 “编辑”。
使用以下选项为被授权者添加规范 ID
540804c33a284a299d2547575ce1010f2312ef3da9b3a053c8bc45bf233e4353
:Objects: List, Write(对象:列出、写入)
存储桶ACL:读取、写入
注意
对于该PDT GovCloud 区域,规范 ID 为。
40fa568277ad703bd160f66ae4f83fc9dfdfd06c2f1b5060ca22442ac3ef8be6
对于该OSU GovCloud 区域,规范 ID 为。
c54286759d2a83da9c480405349819c993557275cf37d820d514b42da6893f5c
选择保存。
导出备 ElastiCache 份
现在,您已经创建了 S3 存储桶并授予了访问该存储桶的 ElastiCache 权限。接下来,您可以使用 ElastiCache 控制台 AWS CLI、或将快照导出 ElastiCache API到控制台。以下示例假设调用者的IAM身份具有以下额外的 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:::*" }] }
对于选择加入型区域,以下是 S3 存储桶的更新后策略具体形式的示例。[此示例使用亚太地区(香港)区域。]
{ "Version": "2012-10-17", "Id": "Policy15397346", "Statement": [ { "Sid": "Stmt15399483", "Effect": "Allow", "Principal": { "Service": "elasticache.amazonaws.com" }, "Action": "s3:*", "Resource": [ "arn:aws:s3:::hkg-elasticache-backup", "arn:aws:s3:::hkg-elasticache-backup/*" ] }, { "Sid": "Stmt15399484", "Effect": "Allow", "Principal": { "Service": "ap-east-1.elasticache-snapshot.amazonaws.com" }, "Action": "s3:*", "Resource": [ "arn:aws:s3:::hkg-elasticache-backup", "arn:aws:s3:::hkg-elasticache-backup/*" ] } ] }
以下步骤使用 ElastiCache 控制台将备份导出到 Amazon S3 存储桶,以便您可以从外部访问该存储桶 ElastiCache。Amazon S3 存储桶必须与 ElastiCache 备份位于同一 AWS 区域。
将 ElastiCache 备份导出到 Amazon S3 存储桶
-
登录 AWS Management Console 并打开 ElastiCache 控制台,网址为 https://console.aws.amazon.com/elasticache/
。 -
要查看您的备份列表,请从左侧导航窗格中,选择 Backups。
-
从备份列表中,选择要导出的备份名称左侧的复选框。
-
选择复制。
-
在 Create a Copy of the Backup?(创建备份副本?)中,执行以下操作:
-
在 New backup name 框中键入新备份的名称。
名称必须介于 1 到 1,000 个字符之间,并且可以采用 UTF -8 编码。
ElastiCache 将实例标识符和
.rdb
添加到您在此处输入的值中。例如,如果您输入my-exported-backup
,则 ElastiCache 创建my-exported-backup-0001.rdb
。 -
从 Target S3 Location(目标 S3 位置)列表中,选择要将备份复制到其中的 Amazon S3 存储桶(您在 创建 Amazon S3 存储桶 中创建的存储桶)的名称。
目标 S3 位置必须是备份 AWS 区域中具有以下权限的 Amazon S3 存储桶,导出过程才能成功。
对象访问 – Read(读取)和 Write(写入)。
权限访问 – Read(读取)。
有关更多信息,请参阅 授予对您的 Amazon S3 存储桶的 ElastiCache 访问权限。
-
选择复制。
-
注意
如果您的 S3 存储桶没有 ElastiCache 向其导出备份所需的权限,则会收到以下错误消息之一。返回到授予对您的 Amazon S3 存储桶的 ElastiCache 访问权限,添加指定权限并重试导出备份的操作。
-
ElastiCache 尚未被授予 S3 存储桶上的 %s READ 权限。
解决方案:在存储桶上添加 Read 权限。
-
ElastiCache 尚未被授予 S3 存储桶上的 %s WRITE 权限。
解决方案:在存储桶上添加 Write 权限。
-
ElastiCache 尚未被授予 S3 存储桶上的 READ _ ACP 权限 %s。
解决方案:为存储桶的权限访问添加 Read。
如果您想将备份复制到其他 AWS 区域,请使用 Amazon S3 将其复制。有关更多信息,请参阅 Amazon Simple Storage Service 用户指南中的复制对象。
导出无服务器缓存的备份
使用带有以下参数的export-serverless-cache-snapshot
CLI操作将备份导出到 Amazon S3 存储桶:
参数
-
--serverless-cache-snapshot-name
– 要复制的备份的名称。 -
--s3-bucket-name
– 您要将备份导出到其中的 Amazon S3 存储桶的名称。在指定存储桶中生成备份的副本。--s3-bucket-name
必须是备份 AWS 区域中具有以下权限的 Amazon S3 存储桶,导出过程才能成功。对象访问 – Read(读取)和 Write(写入)。
权限访问 – Read(读取)。
以下操作将备份复制到 my-s3-bucket。
对于 Linux、macOS 或 Unix:
aws elasticache export-serverless-cache-snapshot \ --serverless-cache-snapshot-name
automatic.my-redis-2023-11-27
\ --s3-bucket-namemy-s3-bucket
对于 Windows:
aws elasticache export-serverless-cache-snapshot ^ --serverless-cache-snapshot-name
automatic.my-redis-2023-11-27
^ --s3-bucket-namemy-s3-bucket
导出自行设计的集群的备份
使用带有以下参数的copy-snapshot
CLI操作将备份导出到 Amazon S3 存储桶:
参数
-
--source-snapshot-name
– 要复制的备份的名称。 -
--target-snapshot-name
– 备份副本的名称。名称必须介于 1 到 1,000 个字符之间,并且可以采用 UTF -8 编码。
ElastiCache 将实例标识符和
.rdb
添加到您在此处输入的值中。例如,如果您输入my-exported-backup
,则 ElastiCache 创建my-exported-backup-0001.rdb
。 -
--target-bucket
– 您要将备份导出到其中的 Amazon S3 存储桶的名称。在指定存储桶中生成备份的副本。--target-bucket
必须是备份 AWS 区域中具有以下权限的 Amazon S3 存储桶,导出过程才能成功。对象访问 – Read(读取)和 Write(写入)。
权限访问 – Read(读取)。
有关更多信息,请参阅 授予对您的 Amazon S3 存储桶的 ElastiCache 访问权限。
以下操作将备份复制到 my-s3-bucket。
对于 Linux、macOS 或 Unix:
aws elasticache copy-snapshot \ --source-snapshot-name
automatic.my-redis-primary-2016-06-27-03-15
\ --target-snapshot-namemy-exported-backup
\ --target-bucketmy-s3-bucket
对于 Windows:
aws elasticache copy-snapshot ^ --source-snapshot-name
automatic.my-redis-primary-2016-06-27-03-15
^ --target-snapshot-namemy-exported-backup
^ --target-bucketmy-s3-bucket