將 Babelfish 叢集升級至新版本 - Amazon Aurora

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

將 Babelfish 叢集升級至新版本

新版的 Babelfish 可與 13.4 版後的部份新 Aurora PostgreSQL 資料庫引擎版本搭配使用。Babelfish 的每個新版本都有自己的版本編號。與 Aurora PostgreSQL 一樣,Babelfish 會針對版本使用 major.minor.patch 命名方式。例如,第一個 Babelfish 版本 (Babelfish 1.0.0 版) 可用作 Aurora PostgreSQL 13.4.0 的一部分。

Babelfish 不需要個別的安裝程序。如建立 Babelfish for Aurora PostgreSQL DB 叢集中所述,Turn on Babelfish (開啟 Babelfish) 是您在建立 Aurora PostgreSQL 資料庫叢集時選擇的一個選項。

同樣地,您無法獨立於支援的 Aurora 資料庫叢集升級 Babelfish。若要將現有的 Babelfish for Aurora PostgreSQL 資料庫叢集升級至新的 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 資料庫叢集升級至新的主要版本,涉及數個初步任務。如需更多詳細資訊,請參閱 如何執行主要版本升級。若要成功升級 Babelfish for Aurora PostgreSQL 資料庫叢集,您需要為新的 Aurora PostgreSQL 版本建立自訂資料庫叢集參數群組。這個新參數群組必須包含與您要升級之叢集相同的 Babelfish 參數設定。如需主要版本升級來源和目標的詳細資訊和資料表,請參閱 將 Babelfish 升級至新的主要版本

次要版本升級和修補程式

次要版本和修補程式不需要建立新的資料庫叢集參數群組,即可進行升級。次要版本和修補程式可以使用次要版本升級程序,無論是自動套用還是手動套用。如需版本來源和目標的詳細資訊和資料表,請參閱 將 Babelfish 升級至新的次要版本

注意

在執行主要或次要升級之前,請將所有擱置中維護任務套用至 Babelfish for Aurora PostgreSQL 叢集。

將 Babelfish 升級至新的次要版本

新的次要版本僅包含回溯相容的變更。修補程式版本中包含其發行後次要版本的重要修正。例如,第一個發行的 Aurora PostgreSQL 13.4 的版本標籤為 Aurora PostgreSQL 13.4.0。至今已發行該次要版本的數個修補程式,包括 Aurora PostgreSQL 13.4.1、13.4.2 和 13.4.4。您可以在該版本的 Aurora PostgreSQL 版本備註頂端的 Patch releases (修補程式版本清單) 中找到適用於每個 Aurora PostgreSQL 版本的修補程式。如需範例,請參閱《Aurora PostgreSQL 版本備註》中的 PostgreSQL 14.3

如果您的 Aurora PostgreSQL 資料庫叢集設定為搭配 Auto minor version upgrade (自動次要版本升級) 選項,則您的 Babelfish for Aurora PostgreSQL 資料庫叢集會在叢集的維護時段期間自動升級。若要進一步了解自動次要版本升級 (AmVU) 以及如何使用它,請參閱 Aurora 資料庫叢集的自動次要版本升級。如果您的叢集不是 AmVU,則您可以透過回應維護任務,或修改叢集以使用新版本,手動將 Babelfish for Aurora PostgreSQL 資料庫叢集升級至新的次要版本。

當您選擇要安裝的 Aurora PostgreSQL 版本時,以及當您在 AWS Management Console中檢視現有的 Aurora PostgreSQL 資料庫叢集時,版本僅會顯示 major.minor 數字。例如,來自主控台針對具有 Aurora PostgreSQL 13.4 的現有 Babelfish for Aurora PostgreSQL 資料庫叢集的下圖建議將叢集升級至 13.7 版,這是 Aurora PostgreSQL 的新次要版本。

次要版本升級適用於具有 Babelfish 的 Aurora PostgreSQL 資料庫叢集。

若要取得完整的版本詳細資訊 (包括修補程式等級),您可以使用 aurora_version Aurora PostgreSQL 函數查詢 Aurora PostgreSQL 資料庫叢集。如需詳細資訊,請參閱 Aurora PostgreSQL 函數參考 中的 aurora_version。您可以在To use the PostgreSQL port to query for version information識別您的 Babelfish 版本程序中尋找使用函數的範例。

下表顯示 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 升級至新的主要版本

對於主要版本升級,您必須先將 Babelfish for Aurora PostgreSQL 資料庫叢集升級至支援主要版本升級的版本。若要達成此目的,請將修補程式更新或次要版本升級套用至資料庫叢集。如需詳細資訊,請參閱 將 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

14.7

2.4.0

15.5

3.4.0

15.4(3.3.0)

15.3

15.2

14.6

2.3.0

15.5

3.4.0

15.4(3.3.0)

15.3

15.2

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. 針對目標 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 錯誤訊息會出現在 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 值並關閉任何間隙。以下顯示使用範例 SQL Server 資料庫 (Northwind),在 Babelfish 叢集上執行時的輸出。

-------------------------------------------------------- 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 命令為新版本建立資料庫叢集參數群組。

對於LinuxmacOS、或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" } }

如需詳細資訊,請參閱建立資料庫叢集參數群組

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