

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

# 重新定位集群
<a name="managing-cluster-recovery"></a>

通过在 Amazon Redshift 中使用*重新定位*，您可以让 Amazon Redshift 将集群移动到另一个可用区 (AZ)，而不会丢失任何数据或对您的应用程序进行更改。通过重新定位，您可以在集群上出现服务中断时继续操作，而产生的影响最小。

开启集群重新定位后，Amazon Redshift 可能会在某些情况下选择重新定位集群。特别是，当当前可用区中的问题阻碍了最佳集群操作或提高服务可用性时，会发生这种情况。您还可以在给定可用区中的资源限制中断集群操作的情况下调用重新定位功能。例如，恢复集群或调整集群大小的功能。Amazon Redshift 提供重新定位功能，无需额外付费。

当 Amazon Redshift 集群重新定位到新的可用区时，新集群具有与原始集群相同的端点。您的应用程序可以重新连接到端点并继续操作，而不会进行修改或丢失数据。但是，由于给定可用区中的潜在资源限制，重新定位可能并不总是可能的。

只有 RA3 实例类型支持 Amazon Redshift 集群重新放置。RA3 实例类型使用 Redshift 托管存储 (RMS) 作为持久存储层。集群数据的最新副本始终提供在 Amazon 区域中的其他可用区中。换句话说，您可以将 Amazon Redshift 集群重新定位到另一个可用区，而不会丢失任何数据。

当您开启集群的重新定位时，Amazon Redshift 会将您的集群迁移到代理后面。这样做有助于实现对集群计算资源的位置无关访问。迁移会导致重新引导集群。当集群重新定位到另一个可用区时，在新集群在新可用区中重新联机时，会发生中断。但是，您无需对应用程序进行任何更改，因为即使集群重新定位到新的可用区后，集群端点仍保持不变。

默认情况下，在新创建或还原的 RA3 集群（其子网组包含多个可用区）上，集群重新定位处于启用状态。在创建预置集群时，Amazon Redshift 将 5439 指定为默认端口。您可以更改为 5431-5455 或 8191-8215 端口范围内的另一个端口。（不要更改为超出范围的端口。这会导致错误。） 要更改预置集群的默认端口，请使用 Amazon Redshift 控制台、Amazon CLI 或 Amazon Redshift API。要更改无服务器工作组的默认端口，请使用 Amazon CLI 或 Amazon Redshift Serverless API。

如果您开启重新定位，并且您当前使用领导节点 IP 地址来访问集群或使用增强型 VPC 路由，请确保更改该访问权限。反之，请使用与集群的 Virtual Private Cloud (VPC) 端点关联的 IP 地址。要查找此集群 IP 地址，在集群详细信息页面的**网络和安全**部分中查找和使用 VPC 终端节点。要获取有关 VPC 终端节点的更多详细信息，请登录 Amazon VPC 控制台。

您也可以使用 Amazon Command Line Interface (Amazon CLI) 命令 `describe-vpc-endpoints` 获取与端点关联的弹性网络接口。您可以使用 `describe-network-interfaces` 命令获取关联的 IP 地址。有关 Amazon Redshift Amazon CLI 命令的更多信息，请参阅 *Amazon CLI 命令参考*中的[可用命令](https://docs.amazonaws.cn/cli/latest/reference/redshift/index.html) 

## 限制
<a name="limitations-recovery"></a>

使用 Amazon Redshift 重新定位时，请注意以下限制：
+ 由于给定可用区中的潜在资源限制，可能无法在所有情况下进行集群重新定位。如果发生这种情况，Amazon Redshift 不会更改原始集群。
+ 产品的 DC2 实例系列不支持重新定位。
+ 您不能跨 Amazon 区域执行重新定位。
+ Amazon Redshift 重新定位原定设置为端口号 5439。您也可以更改为 5431-5455 或 8191-8215 范围内的另一个端口。

## 使用控制台管理重新定位
<a name="cluster-recovery-console"></a>

您可以使用 Amazon Redshift 控制台管理集群重新定位的设置。

### 在创建新集群时关闭重新定位
<a name="enable-relocate-new-cluster."></a>

在创建新集群时，可以使用以下过程关闭重新定位。

**为新集群关闭重新定位**

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

1. 在导航菜单上，选择**集群**。

1. 选择**创建集群**以创建新集群。有关如何创建集群的更多信息，请参阅《Amazon Redshift 入门指南》**中的 [Amazon Redshift 预置数据仓库入门](https://docs.amazonaws.cn/redshift/latest/gsg/new-user.html)。

1. 在**备份**下，对于**集群重新定位**选择**禁用**。默认情况下，重新定位处于开启状态。

1. 选择**创建集群**。

### 修改现有集群的重新定位
<a name="modify-relocate-cluster."></a>

使用以下过程更改现有集群的重新定位设置。

**要修改现有集群的重新定位设置**

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

1. 在导航菜单上，选择**集群**。这将列出您的账户在当前 Amazon 区域中的集群。列表中的各个列中显示了每个集群的一部分属性。

1. 从列表中选择您要修改的集群的名称。此时将会显示集群详细信息页面。

1. 选择**维护**选项卡，然后在**备份详细信息**部分中选择**编辑**。

1. 在**备份**下，选择**已禁用**。默认情况下，重新定位处于开启状态。

1. 选择**修改集群**。

### 重新定位集群
<a name="relocate-cluster."></a>

使用以下过程手动将集群重新定位到其他可用区。当您希望在辅助可用区中测试网络设置或当您在当前可用区中遇到资源限制时，这一点尤其有用。

**要将集群重新定位到其他可用区**

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

1. 在导航菜单上，选择**集群**。这将列出您的账户在当前 Amazon 区域中的集群。列表中的各个列中显示了每个集群的一部分属性。

1. 从列表中选择您要移动的集群的名称。此时将会显示集群详细信息页面。

1. 对于**操作**，选择**重新定位**。此时将显示**重新定位集群**页面。

1. （可选）选择一个**可用区**。如果您没有选择可用区，Amazon Redshift 会为您选择一个可用区。

Amazon Redshift 开始重新定位并将集群显示为重新定位。重新定位完成后，集群状态将更改为可用。

## 使用 Amazon Redshift CLI 管理重新定位
<a name="cluster-recovery-cli"></a>

您可以使用 Amazon 命令行界面 (CLI) 管理集群重新定位的设置。

使用 Amazon CLI，以下示例命令会创建一个开启了重新定位且名为 **mycluster** 的 Amazon Redshift 集群。

```
aws redshift create-cluster --cluster-identifier mycluster --number-of-nodes 2 --master-username enter a username --master-user-password enter a password --node-type ra3.4xlarge --port 5439 --no-availability-zone-relocation
```

如果您的当前集群使用不同的端口，您必须在修改它以开启重新定位之前，将其修改为使用 5431-5455 或 8191-8215 端口范围内的端口。原定设置为 5439。下面的示例命令会在集群没有使用给定范围内的端口时修改端口。

```
aws redshift modify-cluster --cluster-identifier mycluster --port 5439
```

以下示例命令在 Amazon Redshift 集群上包括 availability-zone-relocation 参数。

```
aws redshift modify-cluster --cluster-identifier mycluster --availability-zone-relocation
```

以下示例命令在 Amazon Redshift 集群上关闭 availability-zone-relocation 参数。

```
aws redshift modify-cluster --cluster-identifier mycluster --no-availability-zone-relocation
```

以下示例命令将在 Amazon Redshift 集群上调用重新定位。

```
aws redshift modify-cluster --cluster-identifier mycluster --availability-zone us-east-1b
```