导出备份 - Amazon ElastiCache for Redis
Amazon Web Services 文档中描述的 Amazon Web Services 服务或功能可能因区域而异。要查看适用于中国区域的差异,请参阅 中国的 Amazon Web Services 服务入门 (PDF)

导出备份

Amazon ElastiCache 支持将 ElasticCache 备份导出到 Amazon Simple Storage Service(Amazon S3)存储桶,因此您可以从 ElastiCache 之外访问该备份。您可以使用 ElastiCache 控制台、Amazon CLI 或 ElastiCache API 导出备份。

当您需要在其他 Amazon 区域启动集群时,导出备份会很有用。您可以导出您在某个 Amazon 区域中的数据,将 .rdb 文件复制到新的 Amazon 区域,然后使用该 .rdb 文件为新集群设定种子而不用等待新集群在使用过程中填充。有关为新集群做种的信息,请参阅 使用外部创建的备份为新集群设定种子。您可能希望导出集群数据的另一个原因是将 .rdb 文件用于脱机处理。

重要
  • ElastiCache 备份以及您希望将该备份复制到其中的 Amazon S3 存储桶必须位于同一个 Amazon 区域中。

    尽管复制到 Amazon S3 存储桶的备份已加密,但我们强烈建议您不要将要存储备份的 Amazon S3 存储桶的访问权限授予他人。

  • 使用数据分层功能的集群不支持将备份导出到 Amazon S3。有关更多信息,请参阅数据分层

您必须具有与备份位于同一个 Amazon 区域的 Amazon S3 存储桶,才能将备份导出到 Amazon S3 存储桶。向 ElastiCache 授予对存储桶的访问权限。前两个步骤向您演示了如何执行此操作。

警告

以下方案会以您可能不希望的方式公开您的数据:

  • 其他人具有您将备份导出到其中的 Amazon S3 存储桶的访问权限时。

    要控制对备份的访问权限,请将对 Amazon S3 存储桶的访问权限仅授予您允许访问数据的人员。有关管理对 Amazon S3 存储桶的访问权限的信息,请参阅 Amazon S3 开发人员指南中的管理访问权限

  • 其他人有权使用 CopySnapshot API 操作时。

    有权限使用 CopySnapshot API 操作的用户或组可以创建自己的 Amazon S3 存储桶并将备份复制到其中。要控制对您的备份的访问权限,请使用 Amazon Identity and Access Management(IAM)策略来控制谁可以使用 CopySnapshot API。有关使用 IAM 控制 ElastiCache API 操作使用的更多信息,请参阅 ElastiCache 用户指南中的 适用于 Amazon ElastiCache 的 Identity and Access Management

步骤 1:创建 Amazon S3 存储桶

以下过程使用 Amazon S3 控制台创建您可以在其中导出和存储 ElastiCache 备份的 Amazon S3 存储桶。

创建 Amazon S3 存储桶
  1. 登录到 Amazon Web Services Management Console,然后通过以下网址打开 Amazon S3 控制台:https://console.aws.amazon.com/s3/

  2. 选择 Create Bucket(创建存储桶)。

  3. Create a Bucket - Select a Bucket Name and Region 中,执行以下操作:

    1. Bucket Name(存储桶名称)中键入 Amazon S3 存储桶的名称。

      Amazon S3 存储桶的名称必须符合 DNS 标准。否则,ElastiCache 无法访问您的备份文件。DNS 合规性规则包括:

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

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

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

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

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

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

    2. Region(区域)列表中,选择 Amazon S3 存储桶的 Amazon 区域。此 Amazon 区域必须与要导出 ElastiCache 备份的 Amazon 区域为同一个区域。

    3. 选择 Create(创建)。

有关创建 Amazon S3 存储桶的更多信息,请参阅 Amazon Simple Storage Service 用户指南中的创建存储桶

步骤 2:授予 ElastiCache 对 Amazon S3 存储桶的访问权限

为了使 ElastiCache 能够将快照复制到 Amazon S3 存储桶,您必须更新您的存储桶策略以授予 ElastiCache 对存储桶的访问权限。

警告

虽然复制到 Amazon S3 存储桶的备份已加密,但是对您的 Amazon S3 存储桶拥有访问权限的任何人都可以访问您的数据。因此,我们强烈建议您设置 IAM 策略来防止未经授权访问此 Amazon S3 存储桶。有关更多信息,请参阅《Amazon S3 用户指南》中的管理访问权限

要创建 Amazon S3 存储桶的适当权限,请执行以下步骤。

向 ElastiCache 授予对 S3 存储桶的访问权限
  1. 登录到 Amazon Web Services Management Console,然后通过以下网址打开 Amazon S3 控制台:https://console.aws.amazon.com/s3/

  2. 选择要将备份复制到其中的 Amazon S3 存储桶的名称。这应该是您在步骤 1:创建 Amazon S3 存储桶中创建的 S3 存储桶。

  3. 选择 Permissions(权限)选项卡,然后在 Permissions(权限)下,选择 Access control list(ACL)[访问控制列表(ACL)],再选择 Edit(编辑)。

  4. 使用以下选项为被授权者添加规范 ID 540804c33a284a299d2547575ce1010f2312ef3da9b3a053c8bc45bf233e4353

    • Objects: List, Write(对象:列出、写入)

    • Bucket ACL: Read, Write(存储桶 ACL:读取、写入)

      注意

      对于 GovCloud 区域,规范 ID 为 40fa568277ad703bd160f66ae4f83fc9dfdfd06c2f1b5060ca22442ac3ef8be6

  5. 选择 Save(保存)。

步骤 3:导出 ElastiCache 备份

现在您已经创建了 S3 存储桶并向 ElastiCache 授予了访问存储桶的权限。接下来,您可以使用 ElastiCache 控制台、Amazon 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:::*" }] }

默认情况下,在 2019 年 3 月 20 日之前推出的 Amazon 区域为已启用状态。您可以立即开始在这些 Amazon 区域中工作。2019 年 3 月 20 日之后推出的区域默认处于禁用状态,如亚太地区(香港)和中东(巴林)。您必须按照 Amazon Web Services 一般参考中的管理 Amazon 区域所述,先启用或选择加入这些区域,然后才能使用它们。

对于选择加入型区域,以下是 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 备份位于同一 Amazon 区域。

将 ElastiCache 备份导出到 Amazon S3 存储桶
  1. 登录 Amazon Web Services Management Console 并打开 ElastiCache 控制台(https://console.aws.amazon.com/elasticache/)。

  2. 要查看您的备份列表,请从左侧导航窗格中,选择 Backups

  3. 从备份列表中,选择要导出的备份名称左侧的复选框。

  4. 选择 Copy(复制)。

  5. Create a Copy of the Backup?(创建备份副本?)中,执行以下操作:

    1. New backup name 框中键入新备份的名称。

      名称必须在 1 到 1000 个字符之间,并能够以 UTF-8 编码。

      ElastiCache 会向您在此处输入的值添加实例标识符和 .rdb。例如,如果您输入 my-exported-backup,则 ElastiCache 会创建 my-exported-backup-0001.rdb

    2. Target S3 Location(目标 S3 位置)列表中,选择要将备份复制到其中的 Amazon S3 存储桶(您在 步骤 1:创建 Amazon S3 存储桶 中创建的存储桶)的名称。

      目标 S3 位置必须是备份所在 Amazon 区域内的 Amazon S3 存储桶并具有以下权限,导出过程才能成功。

      • 对象访问 – Read(读取)Write(写入)

      • 权限访问 – Read(读取)

      有关更多信息,请参阅步骤 2:授予 ElastiCache 对 Amazon S3 存储桶的访问权限

    3. 选择 Copy(复制)。

注意

如果您的 S3 存储桶没有供 ElastiCache 将备份导出到其中所需的权限,则您会收到以下某个错误消息。返回到步骤 2:授予 ElastiCache 对 Amazon S3 存储桶的访问权限,添加指定权限并重试导出备份的操作。

  • 未授予 ElastiCache 在 S3 存储桶上的 READ 权限 %s。

    解决方案:在存储桶上添加 Read 权限。

  • 未授予 ElastiCache 在 S3 存储桶上的 WRITE 权限 %s。

    解决方案:在存储桶上添加 Write 权限。

  • 未授予 ElastiCache 在 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 编码。

    ElastiCache 会向您在此处输入的值添加实例标识符和 .rdb。例如,如果您输入 my-exported-backup,则 ElastiCache 会创建 my-exported-backup-0001.rdb

  • --target-bucket – 您要将备份导出到其中的 Amazon S3 存储桶的名称。在指定存储桶中生成备份的副本。

    --target-bucket 必须是备份所在 Amazon 区域内的 Amazon S3 存储桶并具有以下权限,导出过程才能成功。

    • 对象访问 – Read(读取)Write(写入)

    • 权限访问 – Read(读取)

    有关更多信息,请参阅步骤 2:授予 ElastiCache 对 Amazon S3 存储桶的访问权限

以下操作将备份复制到 my-s3-bucket。

对于 Linux、macOS 或 Unix:

aws elasticache copy-snapshot \ --source-snapshot-name automatic.my-redis-primary-2016-06-27-03-15 \ --target-snapshot-name my-exported-backup \ --target-bucket my-s3-bucket

对于 Windows:

aws elasticache copy-snapshot ^ --source-snapshot-name automatic.my-redis-primary-2016-06-27-03-15 ^ --target-snapshot-name my-exported-backup ^ --target-bucket my-s3-bucket
注意

如果您的 S3 存储桶没有供 ElastiCache 将备份导出到其中所需的权限,则您会收到以下某个错误消息。返回到步骤 2:授予 ElastiCache 对 Amazon S3 存储桶的访问权限,添加指定权限并重试导出备份的操作。

  • 未授予 ElastiCache 在 S3 存储桶上的 READ 权限 %s。

    解决方案:在存储桶上添加 Read 权限。

  • 未授予 ElastiCache 在 S3 存储桶上的 WRITE 权限 %s。

    解决方案:在存储桶上添加 Write 权限。

  • 未授予 ElastiCache 在 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 编码。

    ElastiCache 会向您在此处输入的值添加实例标识符和 .rdb。例如,如果您输入 my-exported-backup,则将获得 my-exported-backup-0001.rdb

  • TargetBucket – 您要将备份导出到其中的 Amazon S3 存储桶的名称。在指定存储桶中生成备份的副本。

    TargetBucket 必须是备份所在 Amazon 区域内的 Amazon S3 存储桶并具有以下权限,导出过程才能成功。

    • 对象访问 – Read(读取)Write(写入)

    • 权限访问 – Read(读取)

    有关更多信息,请参阅步骤 2:授予 ElastiCache 对 Amazon S3 存储桶的访问权限

以下示例演示将自动备份复制到 Amazon S3 存储桶 my-s3-bucket

https://elasticache.us-west-2.amazonaws.com/ ?Action=CopySnapshot &SourceSnapshotName=automatic.my-redis-primary-2016-06-27-03-15 &TargetBucket=my-s3-bucket &TargetSnapshotName=my-backup-copy &SignatureVersion=4 &SignatureMethod=HmacSHA256 &Timestamp=20141201T220302Z &Version=2016-01-01 &X-Amz-Algorithm=&AWS;4-HMAC-SHA256 &X-Amz-Date=20141201T220302Z &X-Amz-SignedHeaders=Host &X-Amz-Expires=20141201T220302Z &X-Amz-Credential=<credential> &X-Amz-Signature=<signature>
注意

如果您的 S3 存储桶没有供 ElastiCache 将备份导出到其中所需的权限,则您会收到以下某个错误消息。返回到步骤 2:授予 ElastiCache 对 Amazon S3 存储桶的访问权限,添加指定权限并重试导出备份的操作。

  • 未授予 ElastiCache 在 S3 存储桶上的 READ 权限 %s。

    解决方案:在存储桶上添加 Read 权限。

  • 未授予 ElastiCache 在 S3 存储桶上的 WRITE 权限 %s。

    解决方案:在存储桶上添加 Write 权限。

  • 未授予 ElastiCache 在 S3 存储桶上的 READ_ACP 权限 %s。

    解决方案:为存储桶的权限访问添加 Read

有关更多信息,请参阅 Amazon ElastiCache API 参考中的 CopySnapshot

如果您要将备份复制到其他 Amazon 区域,请使用 Amazon S3 的复制操作将导出的备份复制到其他 Amazon 区域中的 Amazon S3 存储桶。有关更多信息,请参阅 Amazon Simple Storage Service 用户指南中的复制对象