

# 将 Babelfish 集群升级到新版本
<a name="babelfish-information-upgrading"></a>

Babelfish 的新版本将在 Aurora PostgreSQL 数据库引擎 13.4 版之后的一些新版本中提供。每个新版本的 Babelfish 都有自己的版本号。与 Aurora PostgreSQL 一样，Babelfish 对版本使用 *major*.*minor*.*patch* 命名方案。例如，第一个 Babelfish 版本（即 Babelfish 1.0.0）作为 Aurora PostgreSQL 13.4.0 的一部分提供。

Babelfish 不需要单独的安装过程。如 [创建 Babelfish for Aurora PostgreSQL 数据库集群](babelfish-create.md) 中所述，**Turn on Babelfish**（打开 Babelfish）是您在创建 Aurora PostgreSQL 数据库集群时选择的选项。

同样，您不能独立于支持的 Aurora 数据库集群升级 Babelfish。要将现有适用于 Aurora PostgreSQL 的 Babelfish 数据库集群升级到新版本的 Babelfish，请将 Aurora PostgreSQL 数据库集群升级到支持要使用的 Babelfish 版本的新版本。您遵循的升级过程取决于支持 Babelfish 部署的 Aurora PostgreSQL 版本，如下所示。

**主要版本升级。**  
您必须先将以下 Aurora PostgreSQL 版本升级到 Aurora PostgreSQL 14.6 及更高版本，然后才能升级到 Aurora PostgreSQL 15.2 版本。  
+ Aurora PostgreSQL 13.8 及所有更高版本
+ Aurora PostgreSQL 13.7.1 及所有更高次要版本
+ Aurora PostgreSQL 13.6.4 及所有更高次要版本
您可以将 Aurora PostgreSQL 14.6 及更高版本升级到 Aurora PostgreSQL 15.2 及更高版本。  
将 Aurora PostgreSQL 数据库集群升级到新的主要版本涉及到几项初步任务。有关更多信息，请参阅 [执行主要版本升级](USER_UpgradeDBInstance.PostgreSQL.MajorVersion.md)。要成功升级适用于 Aurora PostgreSQL 的 Babelfish 数据库集群，您需要为新的 Aurora PostgreSQL 版本创建自定义数据库集群参数组。这个新参数组必须包含与您正在升级的集群相同的 Babelfish 参数设置。有关更多信息以及主要版本升级源和目标的表，请参阅 [将 Babelfish 升级到新的主要版本](babelfish-information-upgrading-major.md)。

**次要版本升级和补丁**  
次要版本和补丁不要求为升级创建新的数据库集群参数组。次要版本和补丁可以使用次要版本升级过程，无论是自动应用还是手动应用。有关更多信息以及版本源和目标的表，请参阅 [将 Babelfish 升级到新的次要版本](babelfish-information-upgrading-minor.md)。

**注意**  
在执行主要或次要升级之前，将所有待处理的维护任务应用于适用于 Aurora PostgreSQL 的 Babelfish 集群。

**Topics**
+ [将 Babelfish 升级到新的次要版本](babelfish-information-upgrading-minor.md)
+ [将 Babelfish 升级到新的主要版本](babelfish-information-upgrading-major.md)

# 将 Babelfish 升级到新的次要版本
<a name="babelfish-information-upgrading-minor"></a>

次要版本更新旨在保持向后兼容性。但是，在某些情况下，关键安全修复或重要错误修复可能无法完全向后兼容。*补丁*版本包括对发布后的次要版本的重要修复。例如，Aurora PostgreSQL 13.4 的第一个版本的版本标签是 Aurora PostgreSQL 13.4.0。迄今为止，该次要版本的多个补丁已经发布，包括 Aurora PostgreSQL 13.4.1、13.4.2 和 13.4.4。您可以在每个 Aurora PostgreSQL 版本的 Aurora PostgreSQL 发布说明顶部的 **Patch releases**（补丁版本）列表中找到该版本的可用补丁。有关示例，请参阅《Aurora PostgreSQL 发布说明》**中的 [PostgreSQL 14.3](https://docs.aws.amazon.com/AmazonRDS/latest/AuroraPostgreSQLReleaseNotes/AuroraPostgreSQL.Updates.html#AuroraPostgreSQL.Updates.20180305.143X)。

如果为 Aurora PostgreSQL 数据库集群配置了 **Auto minor version upgrade**（自动次要版本升级）选项，则适用于 Aurora PostgreSQL 的 Babelfish 数据库集群将在集群的维护时段内自动升级。要了解有关自动次要版本升级（AmVU）及其使用方法的更多信息，请参阅[Aurora 数据库集群的自动次要版本升级](USER_UpgradeDBInstance.Maintenance.md#Aurora.Maintenance.AMVU)。如果您的集群没有使用 AmVU，您可以通过响应维护任务或修改集群以使用新版本，手动将适用于 Aurora PostgreSQL 的 Babelfish 数据库集群升级到新的次要版本。

当您选择要安装的 Aurora PostgreSQL 版本以及在 AWS 管理控制台 中查看现有的 Aurora PostgreSQL 数据库集群时，版本仅显示 *major*.*minor* 数字。例如，控制台上的以下图片显示了现有的适用于 Aurora PostgreSQL 的 Babelfish 数据库集群（具有 Aurora PostgreSQL 13.4），该图建议将该集群升级到 Aurora PostgreSQL 的新次要版本，即版本 13.7。

![\[具有 Babelfish 的 Aurora PostgreSQL 数据库集群可用的次要版本升级。\]](http://docs.aws.amazon.com/zh_cn/AmazonRDS/latest/AuroraUserGuide/images/apg-minor-upgrade-available-bfish-cluster.png)


要获取完整的版本详细信息，包括 *patch* 级别，您可以使用 `aurora_version` Aurora PostgreSQL 函数查询 Aurora PostgreSQL 数据库集群。有关更多信息，请参阅[Aurora PostgreSQL 函数参考‏‏‏‏‏‏](Appendix.AuroraPostgreSQL.Functions.md) 中的 [aurora\$1version](aurora_version.md)。您可以在 [确定您的 Babelfish 版本](babelfish-information-identify-version.md) 的 [To use the PostgreSQL port to query for version information](babelfish-information-identify-version.md#apg-version-info-psql) 过程中找到使用该函数的示例。

下表显示 Aurora PostgreSQL 和 Babelfish 版本以及可以支持次要版本升级过程的可用目标版本。


| 当前源版本 | 最新升级目标 | 
| --- | --- | 
| Aurora PostgreSQL（Babelfish）  | Aurora PostgreSQL（Babelfish）  | 
|  17.4（5.1）  |  17.5（5.2）  | 
|  16.8（4.5）  |  16.9（4.6）  | 
|  16.6（4.4.0）  |  16.9（4.6）、16.8（4.5.0）  | 
|  16.4（4.3.0）  |  16.9（4.6）、16.8（4.5.0）、16.6（4.4.0）  | 
|  16.3（4.2.0）  |  16.9（4.6）、16.8（4.5.0）、16.6（4.4.0）、16.4（4.3.0）  | 
|  16.2（4.1.0）  |  16.9（4.6）、16.8（4.5.0）、16.6（4.4.0）、16.4（4.3.0）、16.3（4.2.0）  | 
|  16.1（4.0.0）  |  16.9（4.6）、16.8（4.5.0）、16.6（4.4.0）、16.4（4.3.0）、16.3（4.2.0）、16.2（4.1.0）  | 
|  15.12（3.9.0）  |  15.13（3.10）  | 
|  15.10（3.8.0）  |  15.13（3.10）、15.12（3.9.0）  | 
|  15.8（3.7.0）  |  15.13（3.10）、15.12（3.9.0）、15.10（3.8.0）  | 
|  15.7（3.6.0）  |  15.13（3.10）、15.12（3.9.0）、15.10（3.8.0）、15.8（3.7.0）  | 
|  15.6（3.5.0）  |  15.13（3.10）、15.12（3.9.0）、15.10（3.8.0）、15.8（3.7.0）、15.7（3.6.0）  | 
|  15.5（3.4.0）  |  15.13（3.10）、15.12（3.9.0）、15.10（3.8.0）、15.8（3.7.0）、15.7（3.6.0）、15.6（3.5.0）  | 
|  15.4（3.3.0）  |  15.13（3.10）、15.12（3.9.0）、15.10（3.8.0）、15.8（3.7.0）、15.7（3.6.0）、15.6（3.5.0）、15.5（3.4.0）  | 
|  15.12（3.9.0）、15.3（3.2.0）  |  15.13（3.10）、15.12（3.9.0）、15.10（3.8.0）、15.8（3.7.0）、15.7（3.6.0）、15.6（3.5.0）、15.5（3.4.0）、15.4（3.3.0）  | 
|  15.2（3.1.0）  |  15.13（3.10）、15.12（3.9.0）、15.10（3.8.0）、15.8（3.7.0）、15.7（3.6.0）、15.6（3.5.0）、15.5（3.4.0）、15.4（3.3.0）、15.3（3.2.0）  | 
|  14.17（2.12.0）  |  14.18（2.13.0）  | 
|  14.15（2.11.0）  |  14.18（2.13.0）、14.17（2.12.0）  | 
|  14.13（2.10.0）  |  14.18（2.13.0）、14.17（2.12.0）、14.15（2.11.0）  | 
|  14.12（2.9.0）  |  14.18（2.13.0）、14.17（2.12.0）、14.15（2.11.0）、14.13（2.10.0）  | 
|  14.11（2.8.0）  |  14.18（2.13.0）、14.17（2.12.0）、14.15（2.11.0）、14.13（2.10.0）、14.12（2.9.0）  | 
|  14.10（2.7.0）  | 14.18（2.13.0）、14.17（2.12.0）、14.15（2.11.0）、14.13（2.10.0）、14.12（2.9.0）、14.11（2.8.0） | 
|  14.9（2.6.0）  |  14.18（2.13.0）、14.17（2.12.0）、14.15（2.11.0）、14.13（2.10.0）、14.12（2.9.0）、14.11（2.8.0）、14.10（2.7.0）  | 
|  14.8（2.5.0）  |  14.18（2.13.0）、14.17（2.12.0）、14.15（2.11.0）、14.13（2.10.0）、14.12（2.9.0）、14.11（2.8.0）、14.10（2.7.0）、14.9（2.6.0）  | 
|  14.7（2.4.0）  |  14.18（2.13.0）、14.17（2.12.0）、14.15（2.11.0）、14.13（2.10.0）、14.12（2.9.0）、14.11（2.8.0）、14.10（2.7.0）、14.9（2.6.0）、14.8（2.5.0）  | 
|  14.6（2.3.0）  |  14.18（2.13.0）、14.17（2.12.0）、14.15（2.11.0）、14.13（2.10.0）、14.12（2.9.0）、14.11（2.8.0）、14.10（2.7.0）、14.9（2.6.0）、14.8（2.5.0）、14.7（2.4.0）  | 
|  14.5（2.2.0）  |  14.18（2.13.0）、14.17（2.12.0）、14.15（2.11.0）、14.13（2.10.0）、14.12（2.9.0）、14.11（2.8.0）、14.10（2.7.0）、14.9（2.6.0）、14.8（2.5.0）、14.7（2.4.0）、14.6（2.3.0）  | 
|  14.3（2.1.0）  |  14.18（2.13.0）、14.6（2.3.0）  | 
|  13.8（1.4.0）  |  13.9（1.5.0）  | 
|  13.7（1.3.0）  |  13.9（1.5.0）、13.8（1.4.0）  | 

# 将 Babelfish 升级到新的主要版本
<a name="babelfish-information-upgrading-major"></a>

要进行主要版本升级，您需要先将适用于 Aurora PostgreSQL 的 Babelfish 数据库集群升级到支持主要版本升级的版本。要实现此目的，请对数据库集群应用补丁更新或次要版本升级。有关更多信息，请参阅 [将 Babelfish 升级到新的次要版本](babelfish-information-upgrading-minor.md)。

下表显示了可以支持主要版本升级的 Aurora PostgreSQL 版本和 Babelfish 版本。


| 当前源版本 | 最新升级目标 | 
| --- | --- | 
| Aurora PostgreSQL（Babelfish）  | Aurora PostgreSQL（Babelfish）  | 
|  16.9（4.6.0）  |  17.5（5.2.0）  | 
|  16.8（4.5.0）  |  17.5（5.2.0）、17.4（5.1.0）  | 
|  16.6（4.4.0）  |  17.5（5.2.0）、17.4（5.1.0）  | 
|  16.4（4.3.0）  |  17.5（5.2.0）、17.4（5.1.0）  | 
|  16.3（4.2.0）  |  17.5（5.2.0）、17.4（5.1.0）  | 
|  16.2（4.1.0）  |  17.5（5.2.0）、17.4（5.1.0）  | 
|  16.1（4.0.0）  |  17.5（5.2.0）、17.4（5.1.0）  | 
|  15.13（3.10）  |  17.5（5.2.0） 16.9（4.6.0）  | 
|  15.12（3.9.0）  |  17.5（5.2.0）、17.4（5.1.0） 16.9（4.6.0）、16.8（4.5.0）  | 
|  15.10（3.8.0）  |  17.5（5.2.0）、17.4（5.1.0） 16.9（4.6.0）、16.8（4.5.0）、16.6（4.4.0）  | 
|  15.8（3.7.0）  |  17.5（5.2.0）、17.4（5.1.0） 16.9（4.6.0）、16.8（4.5.0）、16.6（4.4.0）、16.4（4.3.0）  | 
|  15.7（3.6.0）  |  17.5（5.2.0）、17.4（5.1.0） 16.9（4.6.0）、16.8（4.5.0）、16.6（4.4.0）、16.4（4.3.0）、16.3（4.2.0）  | 
|  15.6（3.5.0）  |  17.5（5.2.0）、17.4（5.1.0） 16.9（4.6.0）、16.8（4.5.0）、16.6（4.4.0）、16.4（4.3.0）、16.3（4.2.0）、16.2（4.1.0）  | 
|  15.5（3.4.0）  |  17.5（5.2.0）、17.4（5.1.0） 16.9（4.6.0）、16.8（4.5.0）、16.6（4.4.0）、16.4（4.3.0）、16.3（4.2.0）、16.2（4.1.0）、16.1（4.0.0）  | 
|  15.4（3.3.0）  |  17.5（5.2.0）、17.4（5.1.0） 16.9（4.6.0）、16.8（4.5.0）、16.6（4.4.0）、16.4（4.3.0）、16.3（4.2.0）、16.2（4.1.0）、16.1（4.0.0）  | 
|  15.3（3.2.0）  |  17.5（5.2.0）、17.4（5.1.0） 16.9（4.6.0）、16.8（4.5.0）、16.6（4.4.0）、16.4（4.3.0）、16.3（4.2.0）、16.2（4.1.0）、16.1（4.0.0）  | 
|  15.2（3.1.0）  |  17.5（5.2.0）、17.4（5.1.0） 16.9（4.6.0）、16.8（4.5.0）、16.6（4.4.0）、16.4（4.3.0）、16.3（4.2.0）、16.2（4.1.0）、16.1（4.0.0）  | 
|  14.18（2.13.0）  |  17.5（5.2.0） 16.9（4.6.0） 15.13（3.10.0）  | 
|  14.17（2.12.0）  |  17.5（5.2.0）、17.4（5.1.0） 16.9（4.6.0）、16.8（4.5.0） 15.13（3.10.0）、15.12（3.9.0）  | 
|  14.15（2.11.0）  |  17.5（5.2.0）、17.4（5.1.0） 16.9（4.6.0）、16.8（4.5.0）、16.6（4.4.0） 15.13（3.10.0）、15.12（3.9.0）、15.10（3.8.0）  | 
|  14.13（2.10.0）  |  17.5（5.2.0）、17.4（5.1.0） 16.9（4.6.0）、16.8（4.5.0）、16.6（4.4.0）、16.4（4.3.0） 15.13（3.10.0）、15.12（3.9.0）、15.10（3.8.0）、15.8（3.7.0）  | 
|  14.12（2.9.0）  |  17.5（5.2.0）、17.4（5.1.0） 16.9（4.6.0）、16.8（4.5.0）、16.6（4.4.0）、16.4（4.3.0）、16.3（4.2.0） 15.13（3.10.0）、15.12（3.9.0）、15.10（3.8.0）、15.8（3.7.0）、15.7（3.6.0）  | 
|  14.11（2.8.0）  |  17.5（5.2.0）、17.4（5.1.0） 16.9（4.6.0）、16.8（4.5.0）、16.6（4.4.0）、16.4（4.3.0）、16.3（4.2.0）、16.2（4.1.0） 15.13（3.10.0）、15.12（3.9.0）、15.10（3.8.0）、15.8（3.7.0）、15.7（3.6.0）、15.6（3.5.0）  | 
|  14.10（2.7.0）  |  17.5（5.2.0）、17.4（5.1.0） 16.9（4.6.0）、16.8（4.5.0）、16.6（4.4.0）、16.4（4.3.0）、16.3（4.2.0）、16.2（4.1.0）、16.1（4.0.0） 15.13（3.10.0）、15.12（3.9.0）、15.10（3.8.0）、15.8（3.7.0）、15.7（3.6.0）、15.6（3.5.0）、15.5（3.4.0）  | 
|  14.9（2.6.0）  |  17.5（5.2.0）、17.4（5.1.0） 16.9（4.6.0）、16.8（4.5.0）、16.6（4.4.0）、16.4（4.3.0）、16.3（4.2.0）、16.2（4.1.0）、16.1（4.0.0） 15.13（3.10.0）、15.12（3.9.0）、15.10（3.8.0）、15.8（3.7.0）、15.7（3.6.0）、15.6（3.5.0）、15.5（3.4.0）、15.4（3.3.0）  | 
|  14.8（2.5.0）  |  17.5（5.2.0）、17.4（5.1.0） 16.9（4.6.0）、16.8（4.5.0）、16.6（4.4.0）、16.4（4.3.0）、16.3（4.2.0）、16.2（4.1.0）、16.1（4.0.0） 15.13（3.10.0）、15.12（3.9.0）、15.10（3.8.0）、15.8（3.7.0）、15.7（3.6.0）、15.6（3.5.0）、15.5（3.4.0）、15.4（3.3.0）、15.3（3.2.0）  | 
|  14.7（2.4.0）  |  17.5（5.2.0）、17.4（5.1.0） 16.9（4.6.0）、16.8（4.5.0）、16.6（4.4.0）、16.4（4.3.0）、16.3（4.2.0）、16.2（4.1.0）、16.1（4.0.0） 15.13（3.10.0）、15.12（3.9.0）、15.10（3.8.0）、15.8（3.7.0）、15.7（3.6.0）、15.6（3.5.0）、15.5（3.4.0）、15.4（3.3.0）、15.3（3.2.0）、15.2（3.1.0）  | 
|  14.6（2.3.0）  |  17.5（5.2.0）、17.4（5.1.0） 16.9（4.6.0）、16.8（4.5.0）、16.6（4.4.0）、16.4（4.3.0）、16.3（4.2.0）、16.2（4.1.0）、16.1（4.0.0） 15.13（3.10.0）、15.12（3.9.0）、15.10（3.8.0）、15.8（3.7.0）、15.7（3.6.0）、15.6（3.5.0）、15.5（3.4.0）、15.4（3.3.0）、15.3（3.2.0）、15.2（3.1.0）  | 
|  13.9（1.5.0）  |  14.6（2.3.0）  | 
|  13.8（1.4.0）  | 14.6（2.3.0） | 
|  13.7（1.3.0）  |  14.6（2.3.0）  | 

## 在将 Babelfish 升级到新的主要版本之前
<a name="babelfish-information-upgrading-preliminary"></a>

升级可能涉及短暂的中断。因此，建议您在维护时段或利用率低的其他时段执行或安排升级。

**在执行主要版本升级之前**

 

1. 使用 [确定您的 Babelfish 版本](babelfish-information-identify-version.md) 中概述的命令识别现有 Aurora PostgreSQL 数据库集群的 Babelfish 版本。Aurora PostgreSQL 版本和 Babelfish 版本信息由 PostgreSQL 处理，因此请按照 [To use the PostgreSQL port to query for version information](babelfish-information-identify-version.md#apg-version-info-psql) 过程中详细介绍的步骤获取详细信息。

1. 验证您的版本是否支持主要版本升级。有关支持主要版本升级功能的版本列表，请参阅 [将 Babelfish 升级到新的次要版本](babelfish-information-upgrading-minor.md) 并执行必要的升级前任务。

    例如，如果 Babelfish 版本在 Aurora PostgreSQL 13.5 数据库集群上运行并且您要升级到 Aurora PostgreSQL 15.2，则首先应用所有次要版本和补丁，以将集群升级到 Aurora PostgreSQL 14.6 或更高版本。当您的集群版本为 14.6 或更高版本时，继续执行主要版本升级过程。

1. 创建当前 Babelfish 数据库集群的手动快照作为备份。备份允许您将集群还原到其 Aurora PostgreSQL 版本、Babelfish 版本，并将所有数据还原到升级前的状态。有关更多信息，请参阅[创建数据库集群快照](USER_CreateSnapshotCluster.md)。如果您决定将此集群还原到其升级前的状态，请务必保留现有的自定义数据库集群参数组以供再次使用。有关更多信息，请参阅[从数据库集群快照还原](aurora-restore-snapshot.md)和[参数组注意事项](aurora-restore-snapshot.md#aurora-restore-snapshot.Parameters)。

1. 为目标 Aurora PostgreSQL 数据库版本准备自定义数据库集群参数组。从您当前的适用于 Aurora PostgreSQL 的 Babelfish 数据库集群中复制 Babelfish 参数的设置。要找到所有 Babelfish 参数的列表，请参阅 [Babelfish 的数据库集群参数组设置](babelfish-configuration.md)。对于主要版本升级，以下参数需要与源数据库集群相同的设置。要使升级获得成功，所有设置都必须相同。
   + rds.babelfish\$1status
   + babelfishpg\$1tds.tds\$1default\$1numeric\$1precision
   + babelfishpg\$1tds.tds\$1default\$1numeric\$1scale
   + babelfishpg\$1tsql.database\$1name
   + babelfishpg\$1tsql.default\$1locale
   + babelfishpg\$1tsql.migration\$1mode
   + babelfishpg\$1tsql.server\$1collation\$1name
**警告**  
如果新 Aurora PostgreSQL 版本的自定义数据库集群参数组中 Babelfish 参数的设置与您正在升级的集群的参数值不匹配，则 `ModifyDBCluster` 操作将失败。`InvalidParameterCombination` 错误消息出现在 AWS 管理控制台 或 `modify-db-cluster` AWS CLI 命令的输出中。

1. 使用 AWS 管理控制台 或 AWS CLI 创建自定义数据库集群参数组。为您要升级的 Aurora PostgreSQL 版本选择适用的 Aurora PostgreSQL 系列。
**提示**  
参数组在 AWS 区域 级别进行管理。使用 AWS CLI 时，您可以使用默认区域进行配置，而不是在命令中指定 `--region`。要了解有关使用 AWS CLI 的更多信息，请参阅《AWS Command Line Interface 用户指南》**中的[快速设置](https://docs.aws.amazon.com/cli/latest/userguide/getting-started-quickstart.html)。

## 执行主要版本升级
<a name="babelfish-performing-major-version-upgrade"></a>

1. 将 Aurora PostgreSQL 数据库集群升级到新的主要版本。有关更多信息，请参阅 [将 Aurora PostgreSQL 引擎升级到新的主要版本](USER_UpgradeDBInstance.PostgreSQL.MajorVersion.md#USER_UpgradeDBInstance.Upgrading.Manual)。

1. 重启集群的写入器实例，以便参数设置生效。

## 在升级到新的主要版本之后
<a name="babelfish-information-upgrading-post-upgrade"></a>

在主要版本升级到新的 Aurora PostgreSQL 版本后，带有 `IDENTITY` 列的表中的 `IDENTITY` 值可能比升级前的值更大（\$132）。结果是，当将下一行插入到此类表中时，生成的身份列值会跳至 \$132 数字并从那里开始序列。这种情况不会对 Babelfish 数据库集群的功能产生负面影响。但如果需要，可以根据列的最大值重置序列对象。为此，请使用 `sqlcmd` 或另一个 SQL Server 客户端连接到 Babelfish 写入器实例上的 T-SQL 端口。有关更多信息，请参阅 [使用 SQL Server 客户端连接到数据库集群](babelfish-connect-sqlserver.md)。

```
sqlcmd -S bfish-db.cluster-123456789012.aws-region.rds.amazonaws.com,1433 -U
     sa -P ******** -d dbname
```

连接后，使用以下 SQL 命令生成可用于为关联序列对象做种子的语句。此 SQL 命令同时适用于单一数据库和多数据库 Babelfish 配置。有关这两种部署模型的更多信息，请参阅 [将 Babelfish 与单个数据库或多个数据库结合使用](babelfish-architecture.md#babelfish-single_vs_multi_db)。

```
DECLARE @schema_prefix NVARCHAR(200) = ''
IF current_setting('babelfishpg_tsql.migration_mode') = 'multi-db'
    SET @schema_prefix = db_name() + '_'
SELECT 'SELECT setval(pg_get_serial_sequence(''' + @schema_prefix + schema_name(tables.schema_id)
    + '.' + tables.name + ''', ''' + columns.name + '''),(select max(' + columns.name + ')
    FROM ' + schema_name(tables.schema_id) + '.' + tables.name + '));
    'FROM sys.tables tables JOIN sys.columns
    columns ON tables.object_id = columns.object_id
    WHERE columns.is_identity = 1
GO
```

该查询会生成一系列 SELECT 语句，然后您可以运行这些语句来重置最大 IDENTITY 值并缩小任何差距。下面显示了使用在 Babelfish 集群上运行的示例 SQL Server 数据库 Northwind 时的输出。

```
--------------------------------------------------------
SELECT setval(pg_get_serial_sequence('northwind_dbo.categories', 'categoryid'),(select max(categoryid)
    FROM dbo.categories));

SELECT setval(pg_get_serial_sequence('northwind_dbo.orders', 'orderid'),(select max(orderid)
    FROM dbo.orders));
                                                                                                                        
SELECT setval(pg_get_serial_sequence('northwind_dbo.products', 'productid'),(select max(productid)
    FROM dbo.products));
                                                                                                                        
SELECT setval(pg_get_serial_sequence('northwind_dbo.shippers', 'shipperid'),(select max(shipperid)
    FROM dbo.shippers));
                                                                                                                        
SELECT setval(pg_get_serial_sequence('northwind_dbo.suppliers', 'supplierid'),(select max(supplierid)
    FROM dbo.suppliers));
                                                                                                                        
(5 rows affected)
```

逐条运行语句以重置序列值。

## 示例：将 Babelfish 数据库集群升级到主要版本
<a name="babelfish-information-upgrading-example"></a>

 在此示例中，您可以找到一系列 AWS CLI 命令，这些命令解释了如何将运行 Babelfish 版本 1.2.2 的 Aurora PostgreSQL 13.6.4 数据库集群升级到 Aurora PostgreSQL 14.6。首先，为 Aurora PostgreSQL 14 创建一个自定义数据库集群参数组。接下来，修改参数值，使其与 Aurora PostgreSQL 版本 13 源中的参数值相匹配。最后，您可以通过修改源集群来执行升级。有关更多信息，请参阅 [Babelfish 的数据库集群参数组设置](babelfish-configuration.md)。在该主题中，您还可以找到有关使用 AWS 管理控制台 执行升级的信息。

使用 [create-db-cluster-parameter-group](https://docs.aws.amazon.com/cli/latest/reference/rds/create-db-cluster-parameter-group.html) CLI 命令为新版本创建数据库集群参数组。

对于 Linux、macOS 或 Unix：

```
aws rds create-db-cluster-parameter-group \
    --db-cluster-parameter-group-name docs-lab-babelfish-apg-14 \
    --db-parameter-group-family aurora-postgresql14 \
    --description 'New custom parameter group for upgrade to new major version' \
    --region us-west-1
```

当您发出此命令时，将在 AWS 区域 中创建自定义数据库集群参数组。您将看到类似以下内容的输出。

```
{
    "DBClusterParameterGroup": {
        "DBClusterParameterGroupName": "docs-lab-babelfish-apg-14",
        "DBParameterGroupFamily": "aurora-postgresql14",
        "Description": "New custom parameter group for upgrade to new major version",
        "DBClusterParameterGroupArn": "arn:aws:rds:us-west-1:111122223333:cluster-pg:docs-lab-babelfish-apg-14"
    }
}
```

有关更多信息，请参阅[在 Amazon Aurora 中创建数据库集群参数组](USER_WorkingWithParamGroups.CreatingCluster.md)。

使用 [modify-db-cluster-parameter-group](https://docs.aws.amazon.com/cli/latest/reference/rds/modify-db-cluster-parameter-group.html) CLI 命令修改设置，使其与源集群相匹配。

对于：Windows

```
aws rds modify-db-cluster-parameter-group --db-cluster-parameter-group-name docs-lab-babelfish-apg-14 ^
  --parameters "ParameterName=rds.babelfish_status,ParameterValue=on,ApplyMethod=pending-reboot" ^
 "ParameterName=babelfishpg_tds.tds_default_numeric_precision,ParameterValue=38,ApplyMethod=pending-reboot" ^
 "ParameterName=babelfishpg_tds.tds_default_numeric_scale,ParameterValue=8,ApplyMethod=pending-reboot" ^
 "ParameterName=babelfishpg_tsql.database_name,ParameterValue=babelfish_db,ApplyMethod=pending-reboot" ^
 "ParameterName=babelfishpg_tsql.default_locale,ParameterValue=en-US,ApplyMethod=pending-reboot" ^
 "ParameterName=babelfishpg_tsql.migration_mode,ParameterValue=single-db,ApplyMethod=pending-reboot" ^
 "ParameterName=babelfishpg_tsql.server_collation_name,ParameterValue=sql_latin1_general_cp1_ci_as,ApplyMethod=pending-reboot"
```

响应类似于以下内容。

```
{
    "DBClusterParameterGroupName": "docs-lab-babelfish-apg-14"
}
```

使用 [modify-db-cluster](https://docs.aws.amazon.com/cli/latest/reference/rds/modify-db-cluster.html) CLI 命令修改集群，以使用新版本和新的自定义数据库集群参数组。您还可指定 `--allow-major-version-upgrade` 参数，如以下示例中所示。

```
aws rds modify-db-cluster \
--db-cluster-identifier docs-lab-bfish-apg-14 \
--engine-version 14.6 \
--db-cluster-parameter-group-name docs-lab-babelfish-apg-14 \
--allow-major-version-upgrade \
--region us-west-1 \
--apply-immediately
```

使用 [reboot-db-instance](https://docs.aws.amazon.com/cli/latest/reference/rds/reboot-db-instance.html) CLI 命令重启集群的写入器实例，以便参数设置生效。

```
aws rds reboot-db-instance \
--db-instance-identifier docs-lab-bfish-apg-14-instance-1\
--region us-west-1
```