本文為英文版的機器翻譯版本,如內容有任何歧義或不一致之處,概以英文版為準。
將 Babelfish 升級至新的主要版本
若要進行主要版本升級,您必須先將 Babelfish for Aurora PostgreSQL 資料庫叢集升級至支援主要版本升級的版本。若要達成此目的,請將修補程式更新或次要版本升級套用至資料庫叢集。如需詳細資訊,請參閱 將 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 升級至新的主要版本之前
升級可能涉及短暫的中斷。因此,建議您在維護時段或其他低用量期間執行或安排升級。
執行主要版本升級之前
使用 中概述的命令來識別現有 Aurora PostgreSQL 資料庫叢集的 Babelfish 版本識別您的 Babelfish 版本。Aurora PostgreSQL 版本和 Babelfish 版本資訊由 Postgre 處理SQL,因此請依照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 資料庫版本準備自訂資料庫叢集參數群組。複製目前 Babelfish for Aurora PostgreSQL 資料庫叢集中 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
錯誤訊息會顯示在 或modify-db-cluster
AWS CLI 命令的輸出 AWS Management Console 中。使用 AWS Management Console 或 AWS CLI 建立自訂資料庫叢集參數群組。針對您要升級的 Aurora PostgreSQL 版本,選擇適用的 Aurora PostgreSQL 系列。
提示
參數群組是在 AWS 區域 層級管理。使用 時 AWS CLI,您可以使用預設區域來設定 ,而不是在 命令
--region
中指定 。若要進一步了解如何使用 AWS CLI,請參閱 AWS Command Line Interface 使用者指南 中的快速設定。
執行主要版本升級
-
將 Aurora PostgreSQL 資料庫叢集升級至新的主要版本。如需詳細資訊,請參閱將 Aurora 波斯特雷SQL引擎升級到新的主要版本。
-
重新啟動叢集的寫入器執行個體,以便參數設定可以生效。
升級至新的主要版本之後
在主要版本升級至新的 Aurora PostgreSQL 版本之後,資料表中包含資料IDENTITY
欄IDENTITY
的值可能大於升級前的值 (+32)。結果是,當下一資料列插入到這樣的資料表時,產生的身分資料欄值會跳至 +32 數字,並從那裡開始序列。這種情況不會對 Babelfish 資料庫叢集的函數產生負面影響。不過,如果需要,您可以根據資料欄的最大值重設序列物件。若要這麼做,請使用 sqlcmd
或其他SQL伺服器用戶端連線至 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伺服器資料庫 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
' \ --regionus-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-clusterCLI命令來修改叢集,以使用新版本和新的自訂資料庫叢集參數群組。您也會指定 --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-instanceCLI命令重新啟動叢集的寫入器執行個體,讓 參數設定生效。
aws rds reboot-db-instance \ --db-instance-identifier docs-lab-bfish-apg-14-instance-1\ --region us-west-1