将 Babelfish 集群升级到新版本 - Amazon Aurora
Amazon Web Services 文档中描述的 Amazon Web Services 服务或功能可能因区域而异。要查看适用于中国区域的差异,请参阅 中国的 Amazon Web Services 服务入门 (PDF)

将 Babelfish 集群升级到新版本

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 数据库集群 中所述,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 数据库集群升级到新的主要版本涉及到几项初步任务。有关更多信息,请参阅如何执行主要版本升级。要成功升级适用于 Aurora PostgreSQL 的 Babelfish 数据库集群,您需要为新的 Aurora PostgreSQL 版本创建自定义数据库集群参数组。这个新参数组必须包含与您正在升级的集群相同的 Babelfish 参数设置。有关更多信息以及主要版本升级源和目标的表,请参阅 将 Babelfish 升级到新的主要版本

次要版本升级和补丁

次要版本和补丁不要求为升级创建新的数据库集群参数组。次要版本和补丁可以使用次要版本升级过程,无论是自动应用还是手动应用。有关更多信息以及版本源和目标的表,请参阅 将 Babelfish 升级到新的次要版本

注意

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

将 Babelfish 升级到新的次要版本

新的次要版本仅包含向后兼容的更改。补丁版本包括对发布后的次要版本的重要修复。例如,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

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

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


                具有 Babelfish 的 Aurora PostgreSQL 数据库集群可用的次要版本升级。

要获取完整的版本详细信息,包括 patch 级别,您可以使用 aurora_version Aurora PostgreSQL 函数查询 Aurora PostgreSQL 数据库集群。有关更多信息,请参阅 中的 aurora_version。您可以在 确定您的 Babelfish 版本To use the PostgreSQL port to query for version information 过程中找到使用该函数的示例。

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

当前源版本

最新升级目标

其他可用的升级版本

Aurora PostgreSQL Babelfish Aurora PostgreSQLBabelfish 具有 Babelfish 选项的 Aurora PostgreSQL 版本

15.4

3.3.0

15.5

3.4.0

15.3.2

3.2.1

15.5

3.4.0

15.4

15.2.4

3.1.3

15.5

3.4.0

15.4

15.3

14.9.1

2.6.0

14.10

2.7.0

14.8.2

2.5.1

14.10

2.7.0

14.9.1

14.7.4

2.4.3

14.10

2.7.0

14.9.1

14.8.2

14.6.4

2.3.3

14.10

2.7.0

14.9.1

14.8.2

14.7.4

14.5.3

2.2.3

14.10

2.7.0

14.9.1

14.8.2

14.7.4

14.6.4

14.3.1

2.1.1

14.6

2.3.0

14.3.0

2.1.0

14.6

2.3.0

14.3.1

13.8

1.4.0

13.9

1.5

13.7.1

1.3.1

13.9

1.5

13.8

13.7.0

1.3.0

13.9

1.5

13.7.1

13.6.4

1.2.4

13.9

1.5

13.7

13.6.3

1.2.1

13.9

1.5

13.7

13.6.4

13.6.2

1.2.1

13.9

1.5

13.7

13.6.4

13.6.1

1.2.0

13.9

1.5

13.7

13.6.4

13.6.0

1.2.0

13.9

1.5

13.7

13.6.4

13.5

1.1.0

13.9

1.5

13.7

13.6

13.4

1.0.0

13.9

1.5

13.7

13.6

13.5

将 Babelfish 升级到新的主要版本

要进行主要版本升级,您需要先将适用于 Aurora PostgreSQL 的 Babelfish 数据库集群升级到支持主要版本升级的版本。要实现此目的,请对数据库集群应用补丁更新或次要版本升级。有关更多信息,请参阅 将 Babelfish 升级到新的次要版本

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

当前源版本

最新的可用升级目标

其他可用版本(次要版本升级)

Aurora PostgreSQL Babelfish Aurora PostgreSQLBabelfish Aurora PostgreSQL 版本(Babelfish 版本)

15.5

3.4.0

16.1

4.0.0

15.4

3.3.0

16.1

4.0.0

15.3

3.2.0

16.1

4.0.0

15.2

3.1.0

16.1

4.0.0

14.10

2.7.0

15.5

3.4.0

14.9

2.6.0

15.5

3.4.0

15.4(3.3.0)

14.8

2.5.0

15.5

3.4.0

15.4(3.3.0)

15.3(3.2.0)

14.7

2.4.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

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

1.3.1

14.6

2.3.0

13.8(1.4)

13.6.4

1.2.2

14.6

2.3.0

13.8(1.4)

13.7(1.3)

在将 Babelfish 升级到新的主要版本之前

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

在执行主要版本升级之前

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

  2. 验证您的版本是否支持主要版本升级。有关支持主要版本升级特征的版本列表,请参阅 将 Babelfish 升级到新的次要版本 并执行必要的升级前任务。

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

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

  4. 为目标 Aurora PostgreSQL 数据库版本准备自定义数据库集群参数组。从您当前的适用于 Aurora PostgreSQL 的 Babelfish 数据库集群中复制 Babelfish 参数的设置。要找到所有 Babelfish 参数的列表,请参阅 Babelfish 的数据库集群参数组设置。对于主要版本升级,以下参数需要与源数据库集群相同的设置。要使升级获得成功,所有设置都必须相同。

    • rds.babelfish_status

    • babelfishpg_tds.tds_default_numeric_precision

    • babelfishpg_tds.tds_default_numeric_scale

    • babelfishpg_tsql.database_name

    • babelfishpg_tsql.default_locale

    • babelfishpg_tsql.migration_mode

    • babelfishpg_tsql.server_collation_name

    警告

    如果新 Aurora PostgreSQL 版本的自定义数据库集群参数组中 Babelfish 参数的设置与您正在升级的集群的参数值不匹配,则 ModifyDBCluster 操作将失败。InvalidParameterCombination 错误消息出现在 Amazon Web Services Management Console 或 modify-db-cluster Amazon CLI 命令的输出中。

  5. 使用 Amazon Web Services Management Console 或 Amazon CLI 创建自定义数据库集群参数组。为您要升级的 Aurora PostgreSQL 版本选择适用的 Aurora PostgreSQL 系列。

    提示

    参数组在 Amazon Web Services 区域 级别进行管理。使用 Amazon CLI 时,您可以使用默认区域进行配置,而不是在命令中指定 --region。要了解有关使用 Amazon CLI 的更多信息,请参阅《Amazon Command Line Interface 用户指南》中的快速设置

执行主要版本升级

  1. 将 Aurora PostgreSQL 数据库集群升级到新的主要版本。有关更多信息,请参阅将 Aurora PostgreSQL 引擎升级到新的主要版本

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

在升级到新的主要版本之后

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

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

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

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 数据库集群升级到主要版本

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

使用 create-db-cluster-parameter-group 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

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

{ "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" } }

有关更多信息,请参阅创建数据库集群参数组

使用 modify-db-cluster-parameter-group 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 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 CLI 命令重启集群的写入器实例,以便参数设置生效。

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