將 Babelfish 升級至新的主要版本 - Amazon Aurora

本文為英文版的機器翻譯版本,如內容有任何歧義或不一致之處,概以英文版為準。

將 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 升級至新的主要版本之前

升級可能涉及短暫的中斷。因此,建議您在維護時段或其他低用量期間執行或安排升級。

執行主要版本升級之前

  1. 使用 中概述的命令來識別現有 Aurora PostgreSQL 資料庫叢集的 Babelfish 版本識別您的 Babelfish 版本。Aurora PostgreSQL 版本和 Babelfish 版本資訊由 Postgre 處理SQL,因此請依照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 資料庫版本準備自訂資料庫叢集參數群組。複製目前 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 中。

  5. 使用 AWS Management Console 或 AWS CLI 建立自訂資料庫叢集參數群組。針對您要升級的 Aurora PostgreSQL 版本,選擇適用的 Aurora PostgreSQL 系列。

    提示

    參數群組是在 AWS 區域 層級管理。使用 時 AWS CLI,您可以使用預設區域來設定 ,而不是在 命令--region中指定 。若要進一步了解如何使用 AWS CLI,請參閱 AWS Command Line Interface 使用者指南 中的快速設定

執行主要版本升級

  1. 將 Aurora PostgreSQL 資料庫叢集升級至新的主要版本。如需詳細資訊,請參閱將 Aurora 波斯特雷SQL引擎升級到新的主要版本

  2. 重新啟動叢集的寫入器執行個體,以便參數設定可以生效。

升級至新的主要版本之後

在主要版本升級至新的 Aurora PostgreSQL 版本之後,資料表中包含資料IDENTITYIDENTITY的值可能大於升級前的值 (+32)。結果是,當下一資料列插入到這樣的資料表時,產生的身分資料欄值會跳至 +32 數字,並從那裡開始序列。這種情況不會對 Babelfish 資料庫叢集的函數產生負面影響。不過,如果需要,您可以根據資料欄的最大值重設序列物件。若要這麼做,請使用 sqlcmd或其他SQL伺服器用戶端連線至 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伺服器資料庫 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-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