

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

# 將 Babelfish 升級至新的主要版本
<a name="babelfish-information-upgrading-major"></a>

對於主要版本升級，您必須先將 Babelfish for Aurora PostgreSQL 資料庫叢集升級至支援主要版本升級的版本。若要達成此目的，請將修補程式更新或次要版本升級套用至資料庫叢集。如需詳細資訊，請參閱 [將 Babelfish 升級至新的次要版本](babelfish-information-upgrading-minor.md)。

下表顯示可支援主要版本升級的 Aurora PostgreSQL 版本和 Babelfish 版本。


| 目前來源版本 | 最新升級目標 | 
| --- | --- | 
| Aurora PostgreSQL (Babelfish)  | Aurora PostgreSQL (Babelfish)  | 
|  16.9 (4.6.0)  |  17.5 (5.2.0)  | 
|  16.8 (4.5.0)  |  17.5 (5.2.0)、17.4 (5.1.0)  | 
|  16.6 (4.4.0)  |  17.5 (5.2.0)、17.4 (5.1.0)  | 
|  16.4 (4.3.0)  |  17.5 (5.2.0)、17.4 (5.1.0)  | 
|  16.3 (4.2.0)  |  17.5 (5.2.0)、17.4 (5.1.0)  | 
|  16.2 (4.1.0)  |  17.5 (5.2.0)、17.4 (5.1.0)  | 
|  16.1 (4.0.0)  |  17.5 (5.2.0)、17.4 (5.1.0)  | 
|  15.13 (3.10)  |  17.5 (5.2.0) 16.9 (4.6.0)  | 
|  15.12 (3.9.0)  |  17.5 (5.2.0)、17.4 (5.1.0) 16.9 (4.6.0)、16.8 (4.5.0)  | 
|  15.10 (3.8.0)  |  17.5 (5.2.0)、17.4 (5.1.0) 16.9 (4.6.0)、16.8 (4.5.0)、16.6 (4.4.0)  | 
|  15.8 (3.7.0)  |  17.5 (5.2.0)、17.4 (5.1.0) 16.9 (4.6.0)、16.8 (4.5.0)、16.6 (4.4.0)、16.4 (4.3.0)  | 
|  15.7 (3.6.0)  |  17.5 (5.2.0)、17.4 (5.1.0) 16.9 (4.6.0)、16.8 (4.5.0)、16.6 (4.4.0)、16.4 (4.3.0)、16.3 (4.2.0)  | 
|  15.6 (3.5.0)  |  17.5 (5.2.0)、17.4 (5.1.0) 16.9 (4.6.0)、16.8 (4.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)  |  17.5 (5.2.0)、17.4 (5.1.0) 16.9 (4.6.0)、16.8 (4.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.4 (3.3.0)  |  17.5 (5.2.0)、17.4 (5.1.0) 16.9 (4.6.0)、16.8 (4.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.3 (3.2.0)  |  17.5 (5.2.0)、17.4 (5.1.0) 16.9 (4.6.0)、16.8 (4.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.2 (3.1.0)  |  17.5 (5.2.0)、17.4 (5.1.0) 16.9 (4.6.0)、16.8 (4.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)  | 
|  14.18 (2.13.0)  |  17.5 (5.2.0) 16.9 (4.6.0) 15.13 (3.10.0)  | 
|  14.17 (2.12.0)  |  17.5 (5.2.0)、17.4 (5.1.0) 16.9 (4.6.0)、16.8 (4.5.0) 15.13 (3.10.0)、15.12 (3.9.0)  | 
|  14.15 (2.11.0)  |  17.5 (5.2.0)、17.4 (5.1.0) 16.9 (4.6.0)、16.8 (4.5.0)、16.6 (4.4.0) 15.13 (3.10.0)、15.12 (3.9.0)、15.10 (3.8.0)  | 
|  14.13 (2.10.0)  |  17.5 (5.2.0)、17.4 (5.1.0) 16.9 (4.6.0)、16.8 (4.5.0)、16.6 (4.4.0)、16.4 (4.3.0) 15.13 (3.10.0)、15.12 (3.9.0)、15.10 (3.8.0)、15.8 (3.7.0)  | 
|  14.12 (2.9.0)  |  17.5 (5.2.0)、17.4 (5.1.0) 16.9 (4.6.0)、16.8 (4.5.0)、16.6 (4.4.0)、16.4 (4.3.0)、16.3 (4.2.0) 15.13 (3.10.0)、15.12 (3.9.0)、15.10 (3.8.0)、15.8 (3.7.0)、15.7 (3.6.0)  | 
|  14.11 (2.8.0)  |  17.5 (5.2.0)、17.4 (5.1.0) 16.9 (4.6.0)、16.8 (4.5.0)、16.6 (4.4.0)、16.4 (4.3.0)、16.3 (4.2.0)、16.2 (4.1.0) 15.13 (3.10.0)、15.12 (3.9.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)  |  17.5 (5.2.0)、17.4 (5.1.0) 16.9 (4.6.0)、16.8 (4.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.13 (3.10.0)、15.12 (3.9.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)  |  17.5 (5.2.0)、17.4 (5.1.0) 16.9 (4.6.0)、16.8 (4.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.13 (3.10.0)、15.12 (3.9.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)  |  17.5 (5.2.0)、17.4 (5.1.0) 16.9 (4.6.0)、16.8 (4.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.13 (3.10.0)、15.12 (3.9.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)  |  17.5 (5.2.0)、17.4 (5.1.0) 16.9 (4.6.0)、16.8 (4.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.13 (3.10.0)、15.12 (3.9.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)  |  17.5 (5.2.0)、17.4 (5.1.0) 16.9 (4.6.0)、16.8 (4.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.13 (3.10.0)、15.12 (3.9.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 升級至新的主要版本之前
<a name="babelfish-information-upgrading-preliminary"></a>

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

**執行主要版本升級之前**

 

1. 使用[識別您的 Babelfish 版本](babelfish-information-identify-version.md)中概述的命令，識別現有 Aurora PostgreSQL 資料庫叢集的 Babelfish 版本。Aurora PostgreSQL 版本和 Babelfish 版本資訊是由 PostgreSQL 處理，因此請遵循[To use the PostgreSQL port to query for version information](babelfish-information-identify-version.md#apg-version-info-psql)程序中的詳細步驟來取得詳細資訊。

1. 驗證您的版本是否支援主要版本升級。如需支援主要版本升級功能的版本清單，請參閱 [將 Babelfish 升級至新的次要版本](babelfish-information-upgrading-minor.md) 並執行必要的升級前任務。

    例如，如果您的 Babelfish 版本是在 Aurora PostgreSQL 13.5 資料庫叢集上執行，而您想要升級至 Aurora PostgreSQL 15.2，請先套用所有次要版本和修補程式，將您的叢集升級至 Aurora PostgreSQL 14.6 或更高版本。當您的叢集為 14.6 或更高版本時，請繼續進行主要版本升級程序。

1. 建立目前 Babelfish 資料庫叢集的手動快照做為備份。備份可讓您將叢集還原至其 Aurora PostgreSQL 版本 (Babelfish 版本)，並將所有資料還原至升級前的狀態。如需詳細資訊，請參閱[建立資料庫叢集快照](USER_CreateSnapshotCluster.md)。如果您決定將此叢集還原至升級前的狀態，請務必讓現有的自訂資料庫叢集參數群組可再次使用。如需詳細資訊，請參閱[從資料庫叢集快照還原](aurora-restore-snapshot.md)及[參數群組考量](aurora-restore-snapshot.md#aurora-restore-snapshot.Parameters)。

1. 針對目標 PostgreSQL 資料庫版本準備自訂資料庫叢集參數群組。從目前 Babelfish for Aurora PostgreSQL 資料庫叢集複製 Babelfish 參數的設定。若要尋找所有 Babelfish 參數的清單，請參閱 [Babelfish 的資料庫叢集參數群組設定](babelfish-configuration.md)。對於主要版本升級，下列參數需要與來源資料庫叢集相同的設定。若要成功升級，所有設定都必須相同。
   + rds.babelfish\$1status
   + babelfishpg\$1tds.tds\$1default\$1numeric\$1precision
   + babelfishpg\$1tds.tds\$1default\$1numeric\$1scale
   + babelfishpg\$1tsql.database\$1name
   + babelfishpg\$1tsql.default\$1locale
   + babelfishpg\$1tsql.migration\$1mode
   + babelfishpg\$1tsql.server\$1collation\$1name
**警告**  
如果新 Aurora PostgreSQL 版本的自訂資料庫叢集參數群組中的 Babelfish 參數設定與您要升級之叢集的參數值不符，則 `ModifyDBCluster` 操作會失敗。`InvalidParameterCombination` 錯誤訊息會顯示在 或來自 `modify-db-cluster` AWS CLI 命令的輸出 AWS 管理主控台 中。

1. 使用 AWS 管理主控台 或 AWS CLI 建立自訂資料庫叢集參數群組。針對您要用於升級的 Aurora PostgreSQL 版本選擇適用的 Aurora PostgreSQL 系列。
**提示**  
參數群組是在 AWS 區域 層級管理。使用 時 AWS CLI，您可以使用預設區域來設定 ，而不是在 命令`--region`中指定 。若要進一步了解如何使用 AWS CLI，請參閱*AWS Command Line Interface 《 使用者指南*》中的[快速設定](https://docs.aws.amazon.com/cli/latest/userguide/getting-started-quickstart.html)。

## 執行主要版本升級
<a name="babelfish-performing-major-version-upgrade"></a>

1. 將 Aurora PostgreSQL 資料庫叢集升級至新的主要版本。如需詳細資訊，請參閱[將 Aurora PostgreSQL 引擎升級為新的主要版本](USER_UpgradeDBInstance.PostgreSQL.MajorVersion.md#USER_UpgradeDBInstance.Upgrading.Manual)。

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

## 升級至新的主要版本之後
<a name="babelfish-information-upgrading-post-upgrade"></a>

將主要版本升級至新的 Aurora PostgreSQL 版本之後，具有 `IDENTITY` 資料欄的資料表中的 `IDENTITY` 值可能會比升級前的值大 (\$132)。結果是，當下一資料列插入到這樣的資料表時，產生的身分資料欄值會跳至 \$132 數字，並從那裡開始序列。這種情況不會對 Babelfish 資料庫叢集的函數產生負面影響。不過，如果需要，您可以根據資料欄的最大值重設序列物件。若要這樣做，請使用 `sqlcmd` 或另一個 SQL Server 用戶端連線至 Babelfish 寫入器執行個體上的 T-SQL 連接埠。如需詳細資訊，請參閱[使用 SQL Server 用戶端來連線至資料庫叢集](babelfish-connect-sqlserver.md)。

```
sqlcmd -S bfish-db.cluster-123456789012.aws-region.rds.amazonaws.com,1433 -U
     sa -P ******** -d dbname
```

連線後，請使用下列 SQL 命令來產生陳述式，您可以將其用來植入相關聯的序列物件。這個 SQL 命令同時適用於單一資料庫和多資料庫 Babelfish 組態。如需這兩個部署模型的詳細資訊，請參閱 [搭配單一資料庫或多個資料庫來使用 Babelfish](babelfish-architecture.md#babelfish-single_vs_multi_db)。

```
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 資料庫叢集升級至主要版本
<a name="babelfish-information-upgrading-example"></a>

 在此範例中，您可以找到一系列 AWS CLI 命令，說明如何將執行 Babelfish 1.2.2 版的 Aurora PostgreSQL 13.6.4 資料庫叢集升級至 Aurora PostgreSQL 14.6。首先，針對 Aurora PostgreSQL 14 建立自訂資料庫叢集參數群組。接著，修改參數值以符合 Aurora PostgreSQL 第 13 版來源的參數值。最後，修改來源叢集來執行升級。如需詳細資訊，請參閱[Babelfish 的資料庫叢集參數群組設定](babelfish-configuration.md)。在該主題中，您也可以找到使用 AWS 管理主控台 執行升級的相關資訊。

使用 [create-db-cluster-parameter-group](https://docs.aws.amazon.com/cli/latest/reference/rds/create-db-cluster-parameter-group.html) 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 中建立資料庫叢集參數群組](USER_WorkingWithParamGroups.CreatingCluster.md)。

使用 [modify-db-cluster-parameter-group](https://docs.aws.amazon.com/cli/latest/reference/rds/modify-db-cluster-parameter-group.html) 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](https://docs.aws.amazon.com/cli/latest/reference/rds/modify-db-cluster.html) 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](https://docs.aws.amazon.com/cli/latest/reference/rds/reboot-db-instance.html) CLI 命令，重新啟動叢集的寫入器執行個體，以便參數設定可以生效。

```
aws rds reboot-db-instance \
--db-instance-identifier docs-lab-bfish-apg-14-instance-1\
--region us-west-1
```