将 Babelfish 升级到新的主要版本
要进行主要版本升级,您需要先将适用于 Aurora PostgreSQL 的 Babelfish 数据库集群升级到支持主要版本升级的版本。要实现此目的,请对数据库集群应用补丁更新或次要版本升级。有关更多信息,请参阅 将 Babelfish 升级到新的次要版本。
下表显示了可以支持主要版本升级的 Aurora PostgreSQL 版本和 Babelfish 版本。
当前源版本 |
最新升级目标 |
---|---|
Aurora PostgreSQL(Babelfish) | Aurora PostgreSQL(Babelfish) |
15.10(3.8.0) |
16.6(4.4.0) |
15.8(3.7.0) |
16.6(4.4.0)、16.4(4.3.0) |
15.7(3.6.0) |
16.6(4.4.0)、16.4(4.3.0)、16.3(4.2.0) |
15.6(3.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) |
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) |
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) |
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) |
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.15(2.11.0) |
16.6(4.4.0) 15.10(3.8.0) |
14.13(2.10.0) |
16.6(4.4.0)、16.4(4.3.0) 15.10(3.8.0)、15.8(3.7.0) |
14.12(2.9.0) |
16.6(4.4.0)、16.4(4.3.0)、16.3(4.2.0) 15.10(3.8.0)、15.8(3.7.0)、15.7(3.6.0) |
14.11(2.8.0) |
16.6(4.4.0)、16.4(4.3.0)、16.3(4.2.0)、16.2(4.1.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) |
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.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) |
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.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) |
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.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) |
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.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) |
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.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 升级到新的主要版本之前
升级可能涉及短暂的中断。因此,建议您在维护时段或利用率低的其他时段执行或安排升级。
在执行主要版本升级之前
-
使用 确定您的 Babelfish 版本 中概述的命令识别现有 Aurora PostgreSQL 数据库集群的 Babelfish 版本。Aurora PostgreSQL 版本和 Babelfish 版本信息由 PostgreSQL 处理,因此请按照 To use the PostgreSQL port to query for version information 过程中详细介绍的步骤获取详细信息。
-
验证您的版本是否支持主要版本升级。有关支持主要版本升级功能的版本列表,请参阅 将 Babelfish 升级到新的次要版本 并执行必要的升级前任务。
例如,如果 Babelfish 版本在 Aurora PostgreSQL 13.5 数据库集群上运行并且您要升级到 Aurora PostgreSQL 15.2,则首先应用所有次要版本和补丁,以将集群升级到 Aurora PostgreSQL 14.6 或更高版本。当您的集群版本为 14.6 或更高版本时,继续执行主要版本升级过程。
-
创建当前 Babelfish 数据库集群的手动快照作为备份。备份允许您将集群还原到其 Aurora PostgreSQL 版本、Babelfish 版本,并将所有数据还原到升级前的状态。有关更多信息,请参阅创建数据库集群快照。如果您决定将此集群还原到其升级前的状态,请务必保留现有的自定义数据库集群参数组以供再次使用。有关更多信息,请参阅从数据库集群快照还原和参数组注意事项。
-
为目标 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 命令的输出中。 -
-
使用 Amazon Web Services Management Console 或 Amazon CLI 创建自定义数据库集群参数组。为您要升级的 Aurora PostgreSQL 版本选择适用的 Aurora PostgreSQL 系列。
提示
参数组在 Amazon Web Services 区域 级别进行管理。使用 Amazon CLI 时,您可以使用默认区域进行配置,而不是在命令中指定
--region
。要了解有关使用 Amazon CLI 的更多信息,请参阅《Amazon Command Line Interface 用户指南》中的快速设置。
执行主要版本升级
-
将 Aurora PostgreSQL 数据库集群升级到新的主要版本。有关更多信息,请参阅将 Aurora PostgreSQL 引擎升级到新的主要版本。
-
重启集群的写入器实例,以便参数设置生效。
在升级到新的主要版本之后
在主要版本升级到新的 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 -Usa
-P********
-ddbname
连接后,使用以下 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
' \ --regionus-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"
}
}
有关更多信息,请参阅在 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