

 从补丁 198 开始，Amazon Redshift 将不再支持创建新的 Python UDF。现有的 Python UDF 将继续正常运行至 2026 年 6 月 30 日。有关更多信息，请参阅[博客文章](https://aws.amazon.com/blogs/big-data/amazon-redshift-python-user-defined-functions-will-reach-end-of-support-after-june-30-2026/)。

# Amazon Redshift 快照和备份
<a name="working-with-snapshots"></a>

快照是集群的时间点备份。存在两种类型的快照：*自动*和*手动*。Amazon Redshift 通过使用加密的安全套接字层 (SSL) 连接，在 Amazon S3 内部存储这些快照。

Amazon Redshift 会自动拍摄递增快照，来跟踪自上次自动快照拍摄以来集群发生的变化。自动快照保留从快照还原集群所需的全部数据。您可以创建快照计划来控制何时拍摄自动快照，也可以随时拍摄手动快照。

当您从快照还原时，Amazon Redshift 将创建一个新集群并使该新集群在所有数据都已加载前可用，从而使您可以立即开始查询新集群。该集群将按需流式传输来自快照的数据以响应活动查询，然后在后台加载剩余的数据。

在启动集群时，可以设置自动快照和手动快照的保留期。您可以通过修改集群来更改自动快照和手动快照的默认保留期。您可以在创建快照时或通过修改快照来更改手动快照的保留期。

您可以通过下列方式监控快照进度：在 AWS 管理控制台中查看快照详细信息、调用 CLI 中的 [describe-cluster-snapshots](https://docs.aws.amazon.com/cli/latest/reference/redshift/describe-cluster-snapshots.html) 或调用 [DescribeClusterSnapshots](https://docs.aws.amazon.com/redshift/latest/APIReference/API_DescribeClusterSnapshots.html) API 操作。对于正在进行的快照，通过上述方式可以看到增量快照的大小、传输速率、已用时间以及估计的剩余时间等信息。

为了确保您的备份始终对集群可用，Amazon Redshift 将快照存储在由 Amazon Redshift 管理的内部托管 Amazon S3 桶中。要管理存储费用，请估计需要将自动快照保留多少天并相应地配置其保留期。删除所有不再需要的手动快照。有关备份存储成本的更多信息，请参阅 [Amazon Redshift 定价](https://aws.amazon.com/redshift/pricing/)。

您还可以使用 AWS Backup 创建和还原快照，这是一项完全托管式服务，有助于您在云端以及在本地集中管理和自动执行各种 AWS 服务中的数据保护。有关更多信息，请参阅 [AWS Backup 与 Amazon Redshift 集成](managing-aws-backup.md)。有关 AWS Backup 的信息，请参阅《AWS Backup Developer Guide》**中的 [What is AWS Backup?](https://docs.aws.amazon.com/aws-backup/latest/devguide/whatisbackup.html)

## 使用 Amazon Redshift Serverless 中的快照和备份
<a name="working-with-snapshots-serverless"></a>

Amazon Redshift Serverless 与预置集群一样，使您能够将备份作为命名空间中的对象和数据在某个时间点的表示形式。Amazon Redshift Serverless 中的备份有两种类型：手动创建的快照，以及 Amazon Redshift Serverless 自动创建的恢复点。可以在[快照和恢复点](https://docs.aws.amazon.com/redshift/latest/mgmt/serverless-snapshots-recovery-points.html)中找到有关使用 Amazon Redshift Serverless 快照的更多信息。

您也可以将快照从预置集群还原到无服务器命名空间。有关更多信息，请参阅[从快照还原无服务器命名空间](https://docs.aws.amazon.com/redshift/latest/mgmt/serverless-snapshot-restore.html)。

## 自动快照
<a name="about-automated-snapshots"></a>

当某个集群的自动快照处于启用状态时，Amazon Redshift 会定期拍摄该集群的快照。默认情况下，Amazon Redshift 大约每 8 小时或在每节点数据更改达到 5 GB 时拍摄一次快照，以先到者为准。如果您的数据大于 5 GB \$1 节点数，则自动快照创建间隔的最短时间为 15 分钟。或者，您也可以创建快照计划来控制何时拍摄自动快照。如果您使用自定义计划，则自动快照间隔的最短时间为 1 小时。当您创建集群时，自动快照默认处于启用状态。

系统会在保留期结束时删除自动快照。默认保留期为一天；不过，您可以使用 Amazon Redshift 控制台对其进行修改，也可以使用 Amazon Redshift API 或 CLI 以编程方式对其进行修改。

要禁用自动快照，只需将保留期设置为零即可。如果您禁用自动快照，则 Amazon Redshift 会停止拍摄快照并删除相应集群的任何现有自动快照。您不能为 RA3 节点类型禁用自动快照。您可以将 RA3 节点类型的自动保留期设置为 1-35 天。

只有 Amazon Redshift 才能删除自动快照；您不能手动删除它们。Amazon Redshift 会在下列情况下删除自动快照：快照的保留期结束时、您禁用了集群的自动快照或您删除了集群。*Amazon Redshift 会保留最新的自动快照，直到您禁用自动快照或删除集群为止。*

如果您想要将自动快照保留更长时间，则可以创建一份副本作为手动快照。自动快照会保留至保留期结束；而相应的手动快照在您将其手动删除前或保留期结束前将会一直保留。

## 自动快照计划
<a name="automated-snapshot-schedules"></a>

要精确控制拍摄快照的时间，您可以创建快照计划并将其附加到一个或多个集群。修改快照计划时，将修改所有关联集群的计划。如果集群未附加快照计划，其将使用默认的自动快照计划。

*快照计划* 是一组计划规则。您可以基于指定的时间间隔（例如每 8 小时或每 12 小时）定义简单的计划规则。也可以添加规则来在一周中的某些天、特定时间或特定时段拍摄快照。此外，您还可以使用类 Unix 系统的 cron 表达式定义规则。

## 快照计划格式
<a name="working-with-snapshot-scheduling"></a>

您可以在 Amazon Redshift 控制台中创建快照计划。然后，您可以将计划附加到集群来触发创建系统快照。可以将计划附加到多个集群，也可以在计划中创建多个 cron 定义来触发快照。

您可以使用 cron 语法为快照定义计划。这些计划的定义使用经过修改的类 Unix 系统的 [cron](http://en.wikipedia.org/wiki/Cron) 语法。您可以使用[协调世界时 (UTC)](http://en.wikipedia.org/wiki/Coordinated_Universal_Time) 格式指定时间。您可以创建最大频率为 1 小时、最小精度为 1 分钟的计划。

Amazon Redshift 修改后的 cron 表达式有 3 个必填字段，之间以空格分隔。

**语法**

```
cron(Minutes Hours Day-of-month Month Day-of-week Year)
```


| **字段** | **值** | **通配符** | 
| --- | --- | --- | 
|  分钟  |  0-59  |  , - \$1 /   | 
|  小时  |  0-23  |  , - \$1 /   | 
|  Day-of-month  |  1-31  |  , - \$1 ? / L W  | 
|  Month  |  1-12 或 JAN-DEC  |  , - \$1 /  | 
|  星期几  |  1–7 或 SUN-SAT  |  , - \$1 ? L \$1  | 
|  Year  |  1970-2199  |  , - \$1 /  | 

**通配符**
+ **,**（逗号）通配符包含其他值。在 `Day-of-week` 字段中，`MON,WED,FRI` 将包含星期一、星期三和星期五。总值限制为每字段 24 个。
+ **-**（破折号）通配符用于指定范围。在 `Hour` 字段中，1–15 将包含指定日期的 1 - 15 小时。
+ **\$1**（星号）通配符包含该字段中的所有值。在 `Hours` 字段中，**\$1** 将包含每个小时。
+ **/**（正斜杠）通配符用于指定增量。在 `Hours` 字段中，您可以输入 **1/10** 来指定从当天的第 1 个小时开始每隔 10 小时（例如，01:00、11:00 和 21:00）。
+ **?**（问号）通配符用于指定一个或另一个。在 `Day-of-month` 字段中，您可以输入 **7**，如果您不介意 7 日是星期几，则可以在“星期几”字段中输入 **?**。
+ ** 或 ** 字段中的 `Day-of-month`L`Day-of-week` 通配符用于指定月或周的最后一天。
+ `Day-of-month` 字段中的 **W** 通配符用于指定工作日。在 `Day-of-month` 字段中，`3W` 用于指定最靠近当月的第三周的日。
+ “Day-of-week”字段中的 **\$1** 通配符用于指定一个月内所指定星期几的特定实例。例如，3\$12 指该月的第二个星期二：3 指的是星期二，因为它是每周的第三天，2 是指该月内该类型的第二天。
**注意**  
如果使用 “\$1” 字符，则只能在星期字段中定义一个表达式。例如，“3\$11,6\$13”是无效的，因为它被解释为两个表达式。

**限制**
+ 您无法在同一 cron 表达式中为 `Day-of-month` 和 `Day-of-week` 字段同时指定值。如果您在其中一个字段中指定了值，则必须在另一个字段中使用 **?**（问号）。
+ 快照计划不支持以下频率：
  + 计划快照的频率超过每小时 1 次。
  + 计划快照的频率低于每天 1 次（24 小时）。

  如果您有重叠的计划导致在 1 小时时段内计划了多次快照，将产生验证错误。

在创建计划时，您可以使用以下示例 cron 字符串。


| 分钟 | 小时 | 星期几 | 意义 | 
| --- | --- | --- | --- | 
|  0  |  14-20/1  |  TUE  |  星期二下午 2 点到晚上 8 点之间，每小时拍摄一次。  | 
|  0  |  21  |  MON-FRI  |  每天晚上 9 点，星期一至星期五。  | 
|  30  |  0/6  |  SAT-SUN  |  星期六和星期日从当天午夜 30 分 (00:30) 开始，每 6 小时拍摄一次。这导致在每天的 [00:30、06:30、12:30 和 18:30] 拍摄快照。  | 
|  30  |  12/4  |  \$1  |  每天从 12:30 开始，每 4 小时拍摄一次。这将解析为 [12:30、16:30、20:30]。  | 

例如，要运行每天从 15:15 开始、每 2 小时拍摄一次的计划 （解析为 [15:15、17:15、19:15、21:15、23:15]），请指定：

```
cron(15 15/2 *)   
```

您可以在计划中创建多个 cron 计划定义。例如，以下 AWS CLI 命令在一个计划中包含两个 cron 计划。

```
create-snapshot-schedule --schedule-identifier "my-test" --schedule-definition "cron(0 17 SAT,SUN)" "cron(0 9,17 MON-FRI)"   
```

## 手动快照
<a name="about-manual-snapshots"></a>

您可以随时制作手动快照。默认情况下，即使您删除相应集群，手动快照也会无限期保留。您可以在创建手动快照时指定保留期，也可以通过修改快照来更改保留期。有关更改保留期的更多信息，请参阅[修改手动快照保留期](snapshot-manual-retention-period.md)。

如果删除某个快照，则无法启动任何引用该快照的新操作。不过，如果某个还原操作正在进行中，则该还原操作会运行完成。

Amazon Redshift 设有配额，用以限制您能够创建的手动快照的总数；该配额因不同的 AWS 账户及不同的 AWS 区域而异。默认的配额列出在 [Amazon Redshift 资源中的配额和限制](amazon-redshift-limits.md) 中。

## 快照存储
<a name="managing-snapshot-storage"></a>

由于快照会产生存储费用，因此，当您不再需要快照时，务必将其手动删除。在相应的快照保留期结束时，Amazon Redshift 将删除自动快照和手动快照。您也可以使用 AWS 管理控制台 或 [batch-delete-cluster-snapshots](https://docs.aws.amazon.com/cli/latest/reference/redshift/batch-delete-cluster-snapshots.html) CLI 命令来删除手动快照。

您可以通过修改手动快照设置来更改手动快照的保留期。

您可以使用 Amazon Redshift 控制台或 [describe-storage](https://docs.aws.amazon.com/cli/latest/reference/redshift/describe-storage.html) CLI 命令获取有关快照占用的存储量的信息。

## 从快照中排除表
<a name="snapshots-no-backup-tables"></a>

默认情况下，所有用户定义的永久表都包含在快照中。如果表（如暂存表）不需要备份，您可以显著降低创建快照并从快照还原所需的时间。您还可以使用无备份表减小在 Amazon S3 上占用的存储空间。要创建无备份表，请在创建该表时包含 BACKUP NO 参数。有关语法的更多信息，请参阅《Amazon Redshift 数据库开发人员指南》**中的 [CREATE TABLE](https://docs.aws.amazon.com/redshift/latest/dg/r_CREATE_TABLE_NEW.html) 和 [CREATE TABLE AS](https://docs.aws.amazon.com/redshift/latest/dg/r_CREATE_TABLE_AS.html)。

**注意**  
RA3 预调配集群和 Amazon Redshift Serverless 工作组不支持无备份表。在 RA3 集群和 Serverless 工作组中标记为无备份的表将被视为永久表，在拍摄快照时将始终对其进行备份，并在从快照还原时还原该表。要避免无备份表产生快照成本，请在拍摄快照之前将其截断。

# 创建手动快照
<a name="snapshot-create"></a>

您可以从如下所示的快照列表中创建集群的手动快照。您也可以在集群配置窗格中制作集群快照。有关更多信息，请参阅 [Amazon Redshift 快照和备份](working-with-snapshots.md)。

**注意**  
RA3 预调配集群和 Amazon Redshift Serverless 工作组不支持无备份表。在 RA3 集群和 Serverless 工作组中标记为无备份的表将被视为永久表，在拍摄快照时将始终对其进行备份，并在从快照还原时还原该表。要避免无备份表产生快照成本，请在拍摄快照之前将其截断。

**创建手动快照**

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

1. 在导航菜单上，选择**集群**、**快照**，然后选择**创建快照**。此时将显示用于创建手动快照的快照页面。

1. 输入快照定义的属性，然后选择**创建快照**。快照可能需要一段时间才可用。

# 创建快照计划
<a name="snapshot-schedule-create"></a>

Amazon Redshift 会定期自动对您的数据拍摄递增快照，并将其保存到 Amazon S3 中。此外，您可以随时对数据制作手动快照。

Amazon Redshift 控制台中的所有快照任务都从快照列表开始。您可以使用时间范围、快照类型以及与快照关联的集群来筛选该列表。此外，您可以按日期、大小和快照类型对列表进行排序。根据您选择的快照类型，您处理快照的选项可能有所不同。

要精确控制拍摄快照的时间，您可以创建快照计划并将其附加到一个或多个集群。您可以在创建集群时或通过修改集群来附加计划。有关更多信息，请参阅 [自动快照计划](working-with-snapshots.md#automated-snapshot-schedules)。

**要创建快照计划**

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

1. 在导航菜单上，选择**集群**、**快照**，然后选择**快照计划**选项卡。此时将显示快照计划。

1. 选择**添加计划**以显示添加计划的页面。

1. 输入计划定义的属性，然后选择**添加计划**。

1. 在显示的页面上，您可以将集群附加到新的快照计划，然后选择**确定**。

# 共享快照
<a name="working-with-snapshot-share-snapshot"></a>

您可以授权其他 AWS 客户账户访问现有手动快照，以与其共享该快照。对于每个快照，最多可以授权 20 个客户账户；对于每个 AWS Key Management Service (AWS KMS) 密钥，则最多可以授权 100 个。例如，如果您有 10 个快照，它们使用了一个 KMS 密钥加密，那么您可以授权 10 个 AWS 账户来还原每个快照，或者是其他组合：总共 100 账户以及每个快照不超过 20 个账户。然后，以用户身份登录其中一个已授权账户的人可以对快照加以说明，也可以还原快照以在其账户下创建一个新的 Amazon Redshift 集群。例如，如果您针对生产和测试使用不同的 AWS 客户账户，则用户可以使用生产账户登录并与使用测试账户的用户共享快照。然后，以测试账户用户身份登录的人可以还原快照以创建一个新的集群，该集群由测试账户所有，用于测试或诊断工作。

手动快照由在其下创建该快照的 AWS 客户账户永久所有。只有拥有相应快照的账户中的用户可以授权其他账户访问该快照或撤消授权。已授权账户中的用户只能对与其共享的任何快照加以说明或还原相应快照；他们无法复制或删除与其共享的快照。授权在快照所有者将其撤消之前保持有效。如果所有者撤消授权，则之前已获授权的用户将无法再看到相应快照，也无法再启动任何引用该快照的新操作。如果在所有者撤消授权时相应账户正在还原快照，则该还原操作会运行完成。您无法删除具有活跃授权的快照；必须先撤消所有授权。

AWS 客户账户始终能够访问相应账户所有的快照。如果尝试授予或撤消对所有者账户的访问权限，则会收到一条错误消息。您无法还原由非活动 AWS 客户账户所有的快照，也无法对其加以说明。

当您获得访问 AWS 客户账户的授权之后，该账户中便没有任何用户可以针对相应快照执行任何操作，除非他们代入的角色具有允许他们这样做的策略。
+ 快照拥有者账户中的用户只能在以下情况下授予和撤消快照访问权限：此类用户代入的角色具有相应的 IAM 策略，允许他们通过包含该快照的资源规范执行此类操作。例如，以下策略允许 AWS 账户（`012345678912`）中的用户或角色授权其他账户访问名为 `my-snapshot20130829` 的快照：

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

****  

  ```
  {
    "Version":"2012-10-17",		 	 	 
    "Statement":[
      {
        "Effect":"Allow",
        "Action":[
            "redshift:AuthorizeSnapshotAccess",
            "redshift:RevokeSnapshotAccess"
            ],
        "Resource":[
             "arn:aws:redshift:us-east-1:012345678912:snapshot:*/my-snapshot20130829"
            ]
      }
    ]
  }
  ```

------
+ 与其共享快照的 AWS 账户中的用户无法针对该快照执行操作，除非他们具有相应的权限允许他们执行这些操作。为此，您可以将策略分配给角色并代入该角色。
  + 要列出快照或对其加以说明，相应用户必须具有相应的 IAM 策略，允许他们执行 `DescribeClusterSnapshots` 操作。下方代码显示了一个示例：

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

****  

    ```
    {
      "Version":"2012-10-17",		 	 	 
      "Statement":[
        {
          "Effect":"Allow",
          "Action":[
              "redshift:DescribeClusterSnapshots"
              ],
          "Resource":[
               "*"
              ]
        }
      ]
    }
    ```

------
  + 要还原快照，用户必须代入角色，该角色具有相应的 IAM 策略允许他们执行 `RestoreFromClusterSnapshot` 操作，且该策略要有一个资源元素，同时涵盖他们尝试创建的集群以及相应快照。例如，如果账户 `012345678912` 中的用户与账户 `219876543210` 共享了快照 `my-snapshot20130829`，则为了通过还原快照来创建集群，账户 `219876543210` 中的用户必须代入具有如下策略的角色：

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

****  

    ```
    {
      "Version":"2012-10-17",		 	 	 
      "Statement":[
        {
          "Effect":"Allow",
          "Action":[
              "redshift:RestoreFromClusterSnapshot"
              ],
          "Resource":[
               "arn:aws:redshift:us-east-1:012345678912:snapshot:*/my-snapshot20130829",
               "arn:aws:redshift:us-east-1:219876543210:cluster:from-another-account"
              ]
        }
      ]
    }
    ```

------
  + 在撤销 AWS 账户对快照的访问权限后，该账户中的所有用户均无法访问该快照。即使这些账户具有允许对以前共享的快照资源执行操作的 IAM 策略，也是如此。

## 使用控制台共享集群快照
<a name="snapshot-share"></a>

在控制台上，您可以授权其他用户访问您拥有的手动快照，随后在不再需要时撤消该访问权限。

**要与另一个账户共享快照**

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

1. 在导航菜单上，选择**集群**、**快照**，然后选择要共享的手动快照。

1. 对于**操作**，选择**手动快照设置**以显示手动快照的属性。

1. 在**管理访问权限**部分中输入要与之共享的一个或多个账户，然后选择**保存**。

## 共享加密快照的安全注意事项
<a name="snapshot-share-access-kms-key"></a>

 当您提供对加密快照的访问权限时，Redshift 要求用于创建快照的 AWS KMS 客户托管式密钥与执行恢复的一个或多个账户共享。如果密钥未共享，尝试恢复快照将导致拒绝访问错误。接收账户不需要任何额外权限即可还原共享快照。当您授予快照访问权限并共享密钥时，授予访问权限的身份必须对用于加密快照的密钥具有 `kms:DescribeKey` 权限。有关此权限的更多详细信息，请参阅 [AWS KMS 权限](https://docs.aws.amazon.com/kms/latest/developerguide/kms-api-permissions-reference.html)。有关更多信息，请参阅 Amazon Redshift API 参考文档中的 [DescribeKey](https://docs.aws.amazon.com/kms/latest/APIReference/API_DescribeKey.html)。

客户托管的密钥策略可以通过编程方式或在 AWS Key Management Service 控制台中更新。

**注意**  
如果您使用默认 KMS 密钥，则无需在 AWS KMS 中采取任何操作或进行任何更改即可共享快照。

### 允许访问加密快照的 AWS KMS 密钥
<a name="snapshot-share-access-kms-key-allowing-access"></a>

共享加密快照的 AWS KMS 客户托管式密钥，请执行以下步骤更新密钥策略：

1. 使用 KMS 密钥策略中作为 `Principal` 共享的 AWS 账户的 Amazon 资源名称（ARN）更新 KMS 密钥策略。

1.  允许 `kms:Decrypt` 操作。

在下面的密钥策略示例中，用户 `111122223333` 是 KMS 密钥的所有者，而用户 `444455556666` 是与之共享密钥的账户。通过包含用户 `444455556666` 的根 AWS 账户身份的 ARN 作为策略的 `Principal`，以及通过允许 `kms:Decrypt` 操作，此密钥策略为 AWS 账户提供了访问 KMS 密钥的权限。

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

****  

```
{
    "Id": "key-policy-1",
    "Version":"2012-10-17",		 	 	 
    "Statement": [
        {
            "Sid": "Allow use of the key",
            "Effect": "Allow",
            "Principal": {
                "AWS": [
                    "arn:aws:iam::111122223333:user/KeyUser",
                    "arn:aws:iam::444455556666:root"
                ]
            },
            "Action": [
                "kms:Decrypt"
            ],
            "Resource": "*"
        }
    ]
}
```

------

授予客户托管式 KMS 密钥访问权限后，恢复加密快照的账户必须创建 AWS Identity and Access Management (IAM) 角色或用户（如果用户尚未拥有该角色）。此外，该 AWS 账户还必须将 IAM 策略附加到该 IAM 角色或用户，以允许他们使用您的 KMS 密钥恢复加密的数据库集群快照。

要详细了解如何提供对 AWS KMS 密钥的访问权限，请参阅《AWS Key Management Service 开发人员指南》中的[允许其他账户中的用户使用 KMS 密钥](https://docs.aws.amazon.com/kms/latest/developerguide/key-policy-modifying-external-accounts.html#cross-account-console)。

有关密钥策略的概览，请参阅 [Amazon Redshift 如何使用 AWS KMS](https://docs.aws.amazon.com/kms/latest/developerguide/services-redshift.html)。

# 复制自动快照
<a name="snapshot-copy"></a>

自动快照会在其保留期到期、您禁用自动快照或者您删除集群时自动删除。如果要保留自动快照，可将其复制到手动快照。

**复制自动快照**

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

1. 在导航菜单上，选择**集群**、**快照**，然后选择要复制的快照。

1. 对于**操作**，选择**复制自动快照**以复制快照。

1. 更新新快照的属性，然后选择**复制**。

# 将快照复制到其它 AWS 区域
<a name="cross-region-snapshot-copy"></a>

您可以配置 Amazon Redshift，以将集群的快照（自动或手动）自动复制到另一个 AWS 区域。在集群的主要 AWS 区域创建快照时，它会复制到辅助 AWS 区域。这两个 AWS 区域分别称为*源 AWS 区域*和*目标 AWS 区域*。如果您在另一个 AWS 区域中存储快照副本，则在有任何事情影响主要 AWS 区域时，您可以使用最新数据还原集群。您可以配置集群，一次仅将快照复制到一个目标 AWS 区域。有关 Amazon Redshift 区域的列表，请参阅《Amazon Web Services 一般参考》**中的[区域和端点](https://docs.aws.amazon.com/general/latest/gr/rande.html)。

启用 Amazon Redshift 以自动将快照复制到另一个 AWS 区域时，您需要指定要将快照复制到哪个目标 AWS 区域。对于自动快照，您也可以指定此类快照在目标 AWS 区域中的保留期。自动快照复制到目标 AWS 区域且达到保留期之后，便会从目标 AWS 区域删除。这样做可以降低快照的使用率。若要让自动快照在目标 AWS 区域中保留更短时间或更长时间，请更改此保留期。

您为复制到目标 AWS 区域的自动快照设置的保留期与源 AWS 区域中的自动快照的保留期无关。复制的快照的默认保留期为七天。该七天保留期仅适用于自动快照。在源和目标 AWS 区域中，将在快照保留期结束时或手动删除时删除手动快照。

您可以随时禁用集群的自动快照复制功能。当您禁用此功能时，快照将不再从源 AWS 区域复制到目标 AWS 区域。复制到目标 AWS 区域的所有自动快照都将在达到保留期时删除，除非您为其创建手动快照副本。此类手动快照以及从目标 AWS 区域复制的所有手动快照在您将其手动删除之前将会一直保留在目标 AWS 区域中。

若要更改用于接收复制快照的目标 AWS 区域，请先禁用自动复制功能。然后重新启用它，并指定新的目标 AWS 区域。

某个快照复制到目标 AWS 区域之后，便处于活动和可用状态，可用于还原相关内容。

要将 AWS KMS 加密的集群的快照复制到另一个 AWS 区域，则必须为 Amazon Redshift 创建授权，以在目标 AWS 区域中使用客户主密钥。然后在启用源 AWS 区域中的快照复制功能时选择该权限授予。有关配置快照复制授权的更多信息，请参阅[将 AWS KMS 加密的快照复制到另一个 AWS 区域](working-with-db-encryption.md#configure-snapshot-copy-grant)。

# 从快照还原集群
<a name="working-with-snapshot-restore-cluster-from-snapshot"></a>

快照包含来自您的集群上运行的任何数据库的数据。它还包含有关集群的信息，包括节点数、节点类型和管理员用户名。如果您从快照恢复集群，Amazon Redshift 会使用集群信息来创建新集群。然后它会从快照数据中恢复所有数据库。

**注意**  
RA3 预调配集群和 Amazon Redshift Serverless 工作组不支持无备份表。在 RA3 集群和 Serverless 工作组中标记为无备份的表将被视为永久表，在拍摄快照时将始终对其进行备份，并在从快照还原时还原该表。

对于从源快照创建的新集群，您可以选择配置，例如节点类型和节点数。如果您没有在请求中指定其他可用区，则该集群存储在相同的 AWS 区域和可用区。当您从快照还原集群时，可为新集群选择兼容的维护跟踪。

**注意**  
当您将快照恢复到具有不同配置的集群时，该快照必须在集群版本为 1.0.10013 或更高版本的集群上获取。

恢复正在进行时，事件通常按以下顺序发出：

1. RESTORE\$1STARTED – 当恢复过程开始时发送 REDSHIFT-EVENT-2008。

1. RESTORE\$1SUCCEEDED – 新集群已创建时发送 REDSHIFT-EVENT-3003。

   集群可用于查询。

1. DATA\$1TRANSFER\$1COMPLETED – 数据传输完成时发送 REDSHIFT-EVENT-3537。

**注意**  
RA3 集群仅发出 RESTORE\$1STARTED 和 RESTORE\$1SUCCEEDED 事件。由于 RA3 节点类型将数据存储在 Amazon Redshift 托管存储中，因此在 RESTORE 成功后不会进行显式的数据传输。使用 RA3 节点，作为正常查询处理的一部分，数据在 RA3 节点和 Amazon Redshift 托管存储之间持续传输。RA3 节点在本地缓存热数据，并自动将查询频率较低的数据块保存在 Amazon Redshift 托管存储中。

您可以通过下列方式监控还原进度：调用 [DescribeClusters](https://docs.aws.amazon.com/redshift/latest/APIReference/API_DescribeClusters.html) API 操作或在 AWS 管理控制台 中查看集群详细信息。对于正在进行的还原，通过上述方式可以看到快照数据的大小、传输速率、已用时间以及估计的剩余时间等信息。有关这些指标的说明，请参阅 [RestoreStatus](https://docs.aws.amazon.com/redshift/latest/APIReference/API_RestoreStatus.html)。

您无法使用快照将活动的集群还原为之前的状态。

**注意**  
当您将快照还原为新集群时，如果您没有指定其他值，则使用默认的安全组和参数组。

出于以下原因，您可能想要将快照恢复到具有不同配置的集群：
+ 集群由较小的节点类型组成，且您想要将它合并到具有较少节点的较大节点类型。
+ 您监控工作负载并确定需要迁移到具有更多 CPU 和存储的节点类型。
+ 您想要衡量具有不同节点类型的测试工作负载的性能。

还原具有以下限制：
+ 新的节点配置必须为现有数据提供足够的存储空间。甚至在添加节点时，由于数据的重新分配方式，新配置可能没有足够的存储空间。
+ 还原操作将检查快照是否在与新集群的集群版本兼容的集群版本上创建。如果新集群的版本级别太早，则恢复操作将失败，并在错误消息中报告更多信息。
+ 可还原到的可能配置（节点数和节点类型）取决于原始集群中的节点数量和新集群的目标节点类型。要确定可能的配置，您可以使用 Amazon Redshift 控制台或 `describe-node-configuration-options` AWS CLI 命令结合 `action-type restore-cluster`。有关使用 Amazon Redshift 控制台进行还原的更多信息，请参阅[从快照还原集群](#working-with-snapshot-restore-cluster-from-snapshot)。

以下步骤使用 AWS CLI 获取具有许多节点的集群，并将它合并到具有较少节点数的更大节点类型。在此示例中，我们从一个具有 24 个 节点的源集群开始。在本例中，假设我们已经为此集群创建了一个快照，并且我们想要将它恢复到更大的节点类型。

1.  运行以下命令，获取 24 节点 集群的详细信息。

   ```
   aws redshift describe-clusters --region eu-west-1 --cluster-identifier mycluster-123456789012
   ```

1. 运行以下命令，获取快照的详细信息。

   ```
   aws redshift describe-cluster-snapshots --region eu-west-1 --snapshot-identifier mycluster-snapshot
   ```

1. 运行以下命令，描述此快照可用的选项。

   ```
   aws redshift describe-node-configuration-options --snapshot-identifier mycluster-snapshot --region eu-west-1 --action-type restore-cluster
   ```

   此命令会返回一个选项列表，包括每个选项的建议节点类型、节点数和磁盘利用率。在此示例中，上述命令列出以下可能的节点配置。我们选择恢复到三节点 集群。

   ```
   {
       "NodeConfigurationOptionList": [
           {
               "EstimatedDiskUtilizationPercent": 65.26134808858235,
               "NodeType": "dc2.large",
               "NumberOfNodes": 24
           },
           {
               "EstimatedDiskUtilizationPercent": 32.630674044291176,
               "NodeType": "dc2.large",
               "NumberOfNodes": 48
           },
           {
               "EstimatedDiskUtilizationPercent": 65.26134808858235,
               "NodeType": "dc2.8xlarge",
               "NumberOfNodes": 3
           },
           {
               "EstimatedDiskUtilizationPercent": 48.94601106643677,
               "NodeType": "dc2.8xlarge",
               "NumberOfNodes": 4
           },
           {
               "EstimatedDiskUtilizationPercent": 39.156808853149414,
               "NodeType": "dc2.8xlarge",
               "NumberOfNodes": 5
           },
           {
               "EstimatedDiskUtilizationPercent": 32.630674044291176,
               "NodeType": "dc2.8xlarge",
               "NumberOfNodes": 6
           }
       ]
   }
   ```

1. 运行以下命令，将快照恢复到我们选择的集群配置。恢复此集群之后，我们拥有与源集群相同的内容，但数据已合并到三个 `dc2.8xlarge` 节点。

   ```
   aws redshift restore-from-cluster-snapshot --region eu-west-1 --snapshot-identifier mycluster-snapshot --cluster-identifier mycluster-123456789012-x --node-type dc2.8xlarge --number-of-nodes 3
   ```

如果您有预留节点，例如 DC2 预留节点，则可以升级到 RA3 预留节点。您可以在从快照还原或执行弹性调整大小时执行此操作。您可以使用控制台引导您完成此过程。有关升级到 RA3 节点的更多信息，请参阅[升级到 RA3 节点类型](https://docs.aws.amazon.com/redshift/latest/mgmt/working-with-clusters.html#rs-upgrading-to-ra3)。

**在控制台上从快照还原集群**

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

1. 在导航菜单上，选择**集群**、**快照**，然后选择要还原的快照。

1. 选择**从快照还原**以查看使用快照信息创建的新集群的**集群配置**和**集群详细信息**值。

1. 更新新集群的属性，然后选择**从快照中还原集群**。

还原集群快照后，还原后的数据仓库将使用拍摄快照时使用的相同自定义 AWS KMS 密钥进行加密。如果快照没有自定义 KMS 密钥，则 Amazon Redshift 的备份加密逻辑将取决于以下因素：
+ 您要将快照还原到的 Amazon Redshift 数据仓库的类型。
+ 拍摄快照时集群的加密类型。

要了解从集群快照还原数据仓库后如何对其进行加密，请参阅下表：


| 目标类型 | 快照加密类型 | 目标加密类型 | 
| --- | --- | --- | 
|  预置集群  |  使用 AWS 托管式密钥进行加密  |  使用 AWS 托管式密钥进行加密  | 
|  预置集群  |  使用 AWS 拥有的密钥进行加密  |  使用 AWS 拥有的密钥进行加密  | 
|  无服务器命名空间  |  使用 AWS 托管式密钥进行加密  |  使用 AWS 拥有的密钥进行加密  | 
|  无服务器命名空间  |  使用 AWS 拥有的密钥进行加密  |  使用 AWS 拥有的密钥进行加密  | 

如果在创建快照时，AWS Secrets Manager 已在管理集群的管理员密码，则您必须继续使用 AWS Secrets Manager 来管理管理员密码。还原集群后，您可以在集群详细信息页面中更新集群的管理员凭证，从而选择停止使用密钥。

如果您有预留节点，则可以升级到 RA3 预留节点。您可以在从快照还原或执行弹性调整大小时执行此操作。您可以使用控制台引导您完成此过程。有关升级到 RA3 节点的更多信息，请参阅[升级到 RA3 节点类型](https://docs.aws.amazon.com/redshift/latest/mgmt/working-with-clusters.html#rs-upgrading-to-ra3)。

# 从快照中还原表
<a name="working-with-snapshot-restore-table-from-snapshot"></a>

您可以从快照还原单个表而不是还原整个集群。在从快照还原单个表时，您需要指定源快照、数据库、架构和表名，以及目标数据库、架构和已还原表的新表名。

**注意**  
RA3 预调配集群和 Amazon Redshift Serverless 工作组不支持无备份表。在 RA3 集群和 Serverless 工作组中标记为无备份的表将被视为永久表，在拍摄快照时将始终对其进行备份，并在从快照还原时还原该表。但是，不支持选择性还原无备份表。

新表名不能是现有表的名称。要将现有表替换为从快照还原的表，请先重命名或删除现有表，然后再从快照还原表。

使用源表的列定义、表属性和列属性（外键除外）创建目标表。为了防止因依赖项而导致发生冲突，目标表不从源表继承外键。不向目标表应用任何依赖项（例如，源表上的视图或授予的权限）。

如果源表的拥有者存在，那么该数据库用户是已还原的表的拥有者，前提是该用户拥有足够的权限，可成为指定的数据库和模式中关系的拥有者。否则，已还原的表由在启动集群时创建的管理员用户所有。

已还原的表将返回在执行备份时其所处的状态。这包括由 Amazon Redshift 对[可序列化隔离](https://docs.aws.amazon.com/redshift/latest/dg/c_serial_isolation.html)的符合性定义的事务可见性规则，这意味着数据将立即对在备份后启动的进行中事务可见。

从快照还原表受以下限制：
+ 您只能将表还原到当前正在运行的活动集群，并且只能从针对该集群制作的快照还原表。
+ 一次只能还原一个表。
+ 无法从在调整集群大小之前拍摄的集群快照还原表。一个例外是，如果节点类型没有更改，则可以在弹性大小调整后还原表。
+ 不向目标表应用任何依赖项（例如，源表上的视图或授予的权限）。
+ 如果为正在还原的表启用行级安全性，Amazon Redshift 将还原已启用行级安全性的表。

**从快照还原表**

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

1. 在导航菜单上，选择**集群**，然后选择还原表要使用的集群。

1. 对于**操作**，请选择**还原表**以便显示**还原表**页面。

1. 输入要使用的快照、源表和目标表的相关信息，然后选择**还原表**。

**Example 示例：使用 AWS CLI 从快照中还原表**  
以下示例使用 `restore-table-from-cluster-snapshot` AWS CLI 命令从 `my-source-table` 上的 `sample-database` 架构中还原 `my-snapshot-id` 表。您可以使用 AWS CLI 命令 `describe-table-restore-status` 查看还原操作的状态。此示例将快照还原到具有新表名 `mycluster-example` 的 `my-new-table` 集群。  

```
aws redshift restore-table-from-cluster-snapshot --cluster-identifier mycluster-example 
                                                 --new-table-name my-new-table 
                                                 --snapshot-identifier my-snapshot-id 
                                                 --source-database-name sample-database 
                                                 --source-table-name my-source-table
```

# 从快照还原无服务器命名空间
<a name="snapshot-restore-provisioned-to-serverless"></a>

 从快照还原无服务器命名空间会将命名空间的所有数据库替换为快照中的数据库。有关无服务器快照的更多信息，请参阅[快照和恢复点](https://docs.aws.amazon.com/redshift/latest/mgmt/serverless-snapshots-recovery-points.html)。在您将预置的集群快照还原到 Amazon Redshift Serverless 命名空间时，Amazon Redshift 会自动将带有交错键的表转换为复合键。有关排序键的更多信息，请参阅[使用排序键](https://docs.aws.amazon.com/redshift/latest/dg/t_Sorting_data.html)。

将快照从您的预置集群还原到无服务器命名空间：

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

1. 在导航菜单上，选择**集群**、**快照**，然后选择要使用的快照。

1. 选择**从快照还原**、**还原到无服务器命名空间**。

1. 选择您要还原到的命名空间。

1. 确认想要从快照还原。选择**还原**。此操作将使用预置集群中的数据来替换无服务器命名空间中的所有数据库。

# 为未加密的集群配置跨区域快照复制
<a name="snapshot-crossregioncopy-configure"></a>

您可以配置 Amazon Redshift，以将集群的快照复制到其他 AWS 区域。要配置跨区域快照复制，您需要为每个集群启用该复制功能，并配置复制快照的位置以及在目标 AWS 区域中保留复制的自动或手动快照的时间。如果为集群启用了跨区域复制，所有新的手动和自动快照将复制到指定的 AWS 区域。复制的快照名称带有前缀：**copy:**。

**配置跨区域快照**

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

1. 在导航菜单上，选择**集群**，然后选择要移动其快照的集群。

1. 对于**操作**，选择**配置跨区域快照**。

   此时将显示“配置跨区域”对话框。

1. 对于**复制快照**，选择**是**。

1. 在**目标 AWS 区域**中，选择要将快照复制到的 AWS 区域。

1. 在**自动快照保留期(天)** 中，选择您希望自动快照被删除之前在目标 AWS 区域中保留的天数。

1. 在**手动快照保留期**中，选择您希望手动快照被删除之前在目标 AWS 区域中保留的天数。如果选择**自定义值**，则保留期必须在 1 到 3653 天之间。

1. 选择**保存**。

# 为 AWS KMS 加密的集群配置跨区域快照副本
<a name="xregioncopy-kms-encrypted-snapshot"></a>

 启动 Amazon Redshift 集群时，您可以为您在目标 AWS 区域中的账户中的根密钥配置快照复制授予。如果您未配置授予，则将使用默认 AWS 拥有的密钥对目标区域中的快照进行加密。通过执行此操作，您可以使 Amazon Redshift 在目标 AWS 区域执行加密操作。

以下过程说明了为 AWS KMS 加密的集群启用跨区域快照复制的过程。要详细了解 Amazon Redshift 中的加密功能以及快照复制授予，请参阅[将 AWS KMS 加密的快照复制到另一个 AWS 区域](working-with-db-encryption.md#configure-snapshot-copy-grant)。

**要为 AWS KMS 加密的集群配置跨区域快照**

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

1. 在导航菜单上，选择**集群**，然后选择要移动其快照的集群。

1. 对于**操作**，选择**配置跨区域快照**。

   此时将显示“配置跨区域”对话框。

1. 对于**复制快照**，选择**是**。

1. 在**目标 AWS 区域**中，选择要将快照复制到的 AWS 区域。

1. 在**自动快照保留期(天)** 中，选择您希望自动快照被删除之前在目标 AWS 区域中保留的天数。

1. 在**手动快照保留期**中，选择您希望手动快照被删除之前在目标 AWS 区域中保留的天数。如果选择**自定义值**，则保留期必须在 1 到 3653 天之间。

1. 选择**保存**。

# 修改手动快照保留期
<a name="snapshot-manual-retention-period"></a>

您可以通过修改快照设置来更改手动快照的保留期。

**更改手动快照保留期**

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

1. 在导航菜单上，选择**集群**、**快照**，然后选择要更改的手动快照。

1. 对于**操作**，选择**手动快照设置**以显示手动快照的属性。

1. 输入快照定义的修订属性，然后选择**保存**。

# 修改跨区域快照复制的保留期
<a name="snapshot-crossregioncopy-modify"></a>

在配置跨区域快照复制后，您可能希望更改这些设置。您可以选择新的天数并保存更改，从而轻松更改保留期。

**警告**  
在配置跨区域快照复制后，您无法修改目标 AWS 区域。  
如果要将快照复制到其他 AWS 区域，请先禁用跨区域快照复制。然后使用新的目标 AWS 区域和保留期重新启用它。在禁用跨区域快照复制后，将删除任何复制的自动快照。因此，在禁用跨区域快照复制之前，您应该确定是否具有任何要保留的快照，并将其复制到手动快照。

**修改跨区域快照**

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

1. 在导航菜单上，选择**集群**，然后选择要修改其快照的集群。

1. 对于**操作**，请选择**配置跨区域快照**以显示快照的属性。

1. 输入快照定义的修订属性，然后选择**保存**。

# 删除手动快照
<a name="snapshot-delete"></a>

您可以通过在快照列表中选择一个或多个快照来删除手动快照。

**删除手动快照**

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

1. 在导航菜单上，选择**集群**、**快照**，然后选择要删除的快照。

1. 对于**操作**，选择**删除快照**以删除快照。

1. 确认删除列出的快照，然后选择**删除**。