

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

# 导出备份
<a name="backups-exporting"></a>

亚马逊 ElastiCache 支持将您 ElastiCache 的 Redis OSS 备份导出到亚马逊简单存储服务 (Amazon S3) 存储桶，这样您就可以从外部访问该存储桶。 ElastiCache您可以使用 ElastiCache 控制台 AWS CLI、或 ElastiCache API 导出备份。

如果您需要在其他 AWS 区域启动集群，则导出备份会很有帮助。您可以将数据导出到一个 AWS 区域，将.rdb 文件复制到新 AWS 区域，然后使用该.rdb 文件为新缓存做种子，而不必等待新集群通过使用进行填充。有关为新集群做种的信息，请参阅 [教程：使用外部创建的备份为新的基于节点的集群制作种子](backups-seeding-redis.md)。您可能希望导出缓存数据的另一个原因是将 .rdb 文件用于脱机处理。

**重要**  
 ElastiCache 备份和您要将其复制到的 Amazon S3 存储桶必须位于同一 AWS 区域。  
尽管复制到 Amazon S3 存储桶的备份已加密，但我们强烈建议您不要将要存储备份的 Amazon S3 存储桶的访问权限授予他人。
使用数据分层功能的集群不支持将备份导出到 Amazon S3。有关更多信息，请参阅 [数据分层 ElastiCache](data-tiering.md)。
导出备份适用于：基于节点的 Valkey 集群、基于节点的 Redis OSS 集群以及 Valkey、Memcached 和 Redis OSS 无服务器缓存。导出备份不适用于基于节点的 Memcached 集群。

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

## 创建 Amazon S3 存储桶
<a name="backups-exporting-create-s3-bucket"></a>

以下步骤使用 Amazon S3 控制台创建用于导出和存储 ElastiCache 备份的 Amazon S3 存储桶。

**创建 Amazon S3 存储桶**

1. 登录 AWS 管理控制台 并打开 Amazon S3 控制台，网址为[https://console.aws.amazon.com/s3/](https://console.aws.amazon.com/s3/)。

1. 选择**创建存储桶**。

1. 在 **Create a Bucket - Select a Bucket Name and Region** 中，执行以下操作：

   1. 在 **Bucket Name（存储桶名称）**中键入 Amazon S3 存储桶的名称。

      您的 Amazon S3 存储桶的名称必须是 DNS-compliant。否则，将 ElastiCache 无法访问您的备份文件。DNS 合规性规则包括：
      + 名称的长度必须为至少 3 个字符，且不能超过 63 个字符。
      + 名称必须是由句点（.）分隔的一个或多个标签组成的系列，其中每个标签：
        + 以小写字母或数字开头。
        + 以小写字母或数字结尾。
        + 仅包含小写字母、数字和短划线。
      + 名称不能采用 IP 地址格式（例如 192.0.2.0）。

   1. 从**区域**列表中，为您的 Amazon S3 存储桶选择一个 AWS 区域。此 AWS 区域必须与您要导出的 ElastiCache 备份位于同一 AWS 区域。

   1. 选择**创建**。

有关创建 Amazon S3 存储桶的更多信息，请参阅 *Amazon Simple Storage Service 用户指南*中的[创建存储桶](https://docs.aws.amazon.com/AmazonS3/latest/userguide/CreatingaBucket.html)。

## 授予对您的 Amazon S3 存储桶的 ElastiCache 访问权限
<a name="backups-exporting-grant-access"></a>

ElastiCache 需要访问您的 Amazon S3 存储桶才能将快照复制到该存储桶。我们建议使用 Amazon S3 存储桶策略而不是访问控制列表 (ACL) 来授予访问权限。

**警告**  
虽然复制到 Amazon S3 存储桶的备份已加密，但是对您的 Amazon S3 存储桶拥有访问权限的任何人都可以访问您的数据。因此，我们强烈建议您设置 IAM 策略来防止未经授权访问此 Amazon S3 存储桶。有关更多信息，请参阅《Amazon S3 用户指南》**中的[管理访问权限](https://docs.aws.amazon.com/AmazonS3/latest/userguide/s3-access-control.html)。

将以下存储桶策略添加到您的 Amazon S3 存储桶。`{{amzn-s3-demo-bucket}}`替换为您的 Amazon S3 存储桶的`{{region}}`名称和存储桶所在的 AWS 区域（例如，`us-east-1`）。

------
#### [ JSON ]

****  

```
{
    "Version":"2012-10-17",		 	 	 
    "Statement": [
        {
            "Sid": "ElastiCacheSnapshotExport",
            "Effect": "Allow",
            "Principal": {
                "Service": "{{region}}.elasticache-snapshot.amazonaws.com"
            },
            "Action": [
                "s3:PutObject",
                "s3:GetObject",
                "s3:ListBucket",
                "s3:GetBucketAcl",
                "s3:ListMultipartUploadParts",
                "s3:ListBucketMultipartUploads"
            ],
            "Resource": [
                "arn:aws:s3:::{{amzn-s3-demo-bucket}}",
                "arn:aws:s3:::{{amzn-s3-demo-bucket}}/*"
            ]
        }
    ]
}
```

------

**使用 Amazon S3 控制台添加存储桶策略**

1. 登录 AWS 管理控制台 并打开 Amazon S3 控制台，网址为[https://console.aws.amazon.com/s3/](https://console.aws.amazon.com/s3/)。

1. 选择要将备份复制到其中的 Amazon S3 存储桶的名称。这应该是您在[创建 Amazon S3 存储桶](#backups-exporting-create-s3-bucket)中创建的 S3 存储桶。

1. 选择 **Permissions（权限）**选项卡。

1. 在 **Bucket policy（存储桶策略）**下，请选择 **Edit（编辑）**。

1. 将存储桶策略粘贴到策略编辑器中。用您的值替换`{{region}}`和`{{amzn-s3-demo-bucket}}`占位符。

1. 选择**保存更改**。

有关从 ACL 迁移到存储桶策略的更多信息，请参阅 Amazon S3 *用户指南中的授予亚马逊 ElastiCache （Redis OSS）访问您的 S3* [存储桶](https://docs.aws.amazon.com/AmazonS3/latest/userguide/object-ownership-migrating-acls-prerequisites.html#object-ownership-elasticache-redis)的权限。

## 导出备 ElastiCache 份
<a name="backups-exporting-procedures"></a>

现在，您已经创建了 S3 存储桶并授予了访问该存储桶的 ElastiCache 权限。接下来，您可以使用 ElastiCache 控制台、 AWS CLI 或 ElastiCache API 将快照导出到控制台。

### 导出备 ElastiCache 份（控制台）
<a name="backups-exporting-CON"></a>

以下步骤使用 ElastiCache 控制台将备份导出到 Amazon S3 存储桶，以便您可以从外部访问该存储桶 ElastiCache。Amazon S3 存储桶必须与 ElastiCache 备份位于同一 AWS 区域。

**将 ElastiCache 备份导出到 Amazon S3 存储桶**

1. 登录 AWS 管理控制台 并打开 ElastiCache 控制台，网址为[https://console.aws.amazon.com/elasticache/](https://console.aws.amazon.com/elasticache/)。

1. 要查看您的备份列表，请从左侧导航窗格中，选择 **Backups**。

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

1. 选择**复制**。

1. 在 **Create a Copy of the Backup?（创建备份副本?）**中，执行以下操作：

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

      名称必须介于 1 到 1,000 个字符之间，并且可以 UTF-8 编码。

      ElastiCache 将实例标识符和`.rdb`添加到您在此处输入的值中。例如，如果您输入 `my-exported-backup`，则 ElastiCache 创建 `my-exported-backup-0001.rdb`。

   1. 从 **Target S3 Location（目标 S3 位置）**列表中，选择要将备份复制到其中的 Amazon S3 存储桶（您在 [创建 Amazon S3 存储桶](#backups-exporting-create-s3-bucket) 中创建的存储桶）的名称。

      **目标 S3 位置**必须是备份 AWS 区域中具有以下权限的 Amazon S3 存储桶，导出过程才能成功。
      + 对象访问 – **Read（读取）**和 **Write（写入）**。
      + 权限访问 – **Read（读取）**。

      有关更多信息，请参阅 [授予对您的 Amazon S3 存储桶的 ElastiCache 访问权限](#backups-exporting-grant-access)。

   1. 选择**复制**。

**注意**  
如果您的 S3 存储桶没有 ElastiCache 向其导出备份所需的权限，则会收到以下错误消息之一。返回到[授予对您的 Amazon S3 存储桶的 ElastiCache 访问权限](#backups-exporting-grant-access)，添加指定权限并重试导出备份的操作。  
ElastiCache 尚未被授予 S3 存储桶上的 %s 读取权限。  
**解决方案：**在存储桶上添加 Read 权限。
ElastiCache 尚未被授予 S3 存储桶上的 %s 写入权限。  
**解决方案：**在存储桶上添加 Write 权限。
ElastiCache 尚未被授予 S3 存储桶上的 READ\_ACP 权限 %s。  
**解决方案：**为存储桶的权限访问添加 **Read**。

如果您想将备份复制到其他 AWS 区域，请使用 Amazon S3 将其复制。有关更多信息，请参阅 *Amazon Simple Storage Service 用户指南*中的[复制对象](https://docs.aws.amazon.com/AmazonS3/latest/userguide/MakingaCopyofanObject.html)。

### 导出 ElastiCache 无服务器备份 (AWS CLI)
<a name="backups-exporting-CLI"></a>

**导出无服务器缓存的备份**

使用带有以下参数的 `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-name {{my-s3-bucket}}
```

对于 Windows：

```
aws elasticache export-serverless-cache-snapshot ^
    --serverless-cache-snapshot-name {{automatic.my-redis-2023-11-27}} ^
    --s3-bucket-name {{my-s3-bucket}}
```

### 导出基于节点的 ElastiCache 集群备份 (AWS CLI)
<a name="backups-exporting-self-designed-CON"></a>

**导出基于节点的集群的备份**

使用带有以下参数的 `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 访问权限](#backups-exporting-grant-access)。

以下操作将备份复制到 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}}
```