

 从补丁 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/)。

# 从快照还原集群
<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)。