将 Babelfish 升级到新的主要版本 - Amazon Aurora

将 Babelfish 升级到新的主要版本

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

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

当前源版本

最新升级目标

Aurora PostgreSQL(Babelfish) Aurora PostgreSQL(Babelfish)

15.8(3.7.0)

16.4(4.3.0)

15.7(3.6.0)

16.4(4.3.0)、16.3(4.2.0)

15.6(3.5.0)

16.4(4.3.0)、16.3(4.2.0)、16.2(4.1.0)

15.5(3.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)

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)

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)

16.4(4.3.0)、16.3(4.2.0)、16.2(4.1.0)、16.1(4.0.0)

14.13(2.10.0)

16.4(4.3.0)

15.8(3.7.0)

14.12(2.9.0)

16.4(4.3.0)、16.3(4.2.0)

15.8(3.7.0)、15.7(3.6.0)

14.11(2.8.0)

16.4(4.3.0)、16.3(4.2.0)、16.2(4.1.0)

15.8(3.7.0)、15.7(3.6.0)、15.6(3.5.0)

14.10(2.7.0)

16.4(4.3.0)、16.3(4.2.0)、16.2(4.1.0)、16.1(4.0.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)

16.4(4.3.0)、16.3(4.2.0)、16.2(4.1.0)、16.1(4.0.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)

16.4(4.3.0)、16.3(4.2.0)、16.2(4.1.0)、16.1(4.0.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)

16.4(4.3.0)、16.3(4.2.0)、16.2(4.1.0)、16.1(4.0.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)

16.4(4.3.0)、16.3(4.2.0)、16.2(4.1.0)、16.1(4.0.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 升级到新的主要版本之前

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

在执行主要版本升级之前

  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 错误消息出现在 AWS Management Console 或 modify-db-cluster AWS CLI 命令的输出中。

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

    提示

    参数组在 AWS 区域 级别进行管理。使用 AWS CLI 时,您可以使用默认区域进行配置,而不是在命令中指定 --region。要了解有关使用 AWS CLI 的更多信息,请参阅《AWS 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 数据库集群升级到主要版本

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

当您发出此命令时,将在 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 中创建数据库集群参数组

使用 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