

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

# 執行次要版本升級
<a name="USER_UpgradeDBInstance.PostgreSQL.MinorUpgrade"></a>

您可以使用下列方法來升級資料庫叢集的次要版本或修補資料庫叢集：

**Topics**
+ [執行次要版本升級之前](#USER_UpgradeDBInstance.PostgreSQL.BeforeMinor)
+ [如何執行次要版本升級和套用修補程式](#USER_UpgradeDBInstance.PostgreSQL.Minor)
+ [次要版本升級和零停機時間修補](#USER_UpgradeDBInstance.PostgreSQL.Minor.zdp)
+ [零停機時間修補的限制](#USER_UpgradeDBInstance.PostgreSQL.Minor.zdp.limitations)
+ [將 Aurora PostgreSQL 引擎升級為新的次要版本](#USER_UpgradeDBInstance.MinorUpgrade)

## 執行次要版本升級之前
<a name="USER_UpgradeDBInstance.PostgreSQL.BeforeMinor"></a>

建議您執行下列動作，以減少次要版本升級期間的停機時間：
+ Aurora 資料庫叢集維護應在低流量期間執行。使用 Performance Insights 來識別這些時段，以正確設定維護時段。如需 Performance Insights 的詳細資訊，請參閱[在 Amazon RDS 上使用 Performance Insights 監控資料庫負載](https://docs.aws.amazon.com/AmazonRDS/latest/UserGuide/USER_PerfInsights.html)。如需資料庫叢集維護時段的詳細資訊，請參閱 [調整偏好的資料庫叢集維護時段](USER_UpgradeDBInstance.Maintenance.md#AdjustingTheMaintenanceWindow.Aurora)。
+ 最佳實務是支援指數退避和抖動 AWS SDKs。如需詳細資訊，請參閱[指數退避和抖動](https://aws.amazon.com/blogs/architecture/exponential-backoff-and-jitter/)。

## 如何執行次要版本升級和套用修補程式
<a name="USER_UpgradeDBInstance.PostgreSQL.Minor"></a>

 AWS 區域 只有在嚴格測試之後， 才會提供次要版本升級和修補程式。在發佈升級和修補程式之前，Aurora PostgreSQL 會進行測試，以確保在次要社群版本發佈後出現的已知安全問題、錯誤和其他問題，不會破壞 Aurora PostgreSQL 機群的穩定性。

如果您開啟**啟用自動次要版本升級**，Aurora PostgreSQL 會在指定維護時段期間定期升級您的資料庫叢集。確定已對 Aurora PostgreSQL 資料庫叢集中的所有執行個體開啟**啟用自動次要版本升級**選項。如需了解如何設定**自動次要版本升級**，以及該設定套用於叢集和執行個體層級時如何運作，請參閱 [Aurora 資料庫叢集的自動次要版本升級](USER_UpgradeDBInstance.Maintenance.md#Aurora.Maintenance.AMVU)。

使用 [describe-db-instances](https://docs.aws.amazon.com/cli/latest/reference/rds/describe-db-instances.html) AWS CLI 命令，檢查所有 Aurora PostgreSQL 資料庫叢集的**啟用自動次要版本升級**選項的值。

```
aws rds describe-db-instances \
  --query '*[].{DBClusterIdentifier:DBClusterIdentifier,DBInstanceIdentifier:DBInstanceIdentifier,AutoMinorVersionUpgrade:AutoMinorVersionUpgrade}'
```

此查詢會傳回一個清單，其中列出所有的 Aurora 資料庫叢集，以及 `AutoMinorVersionUpgrade` 設定的狀態值為 `true` 或 `false` 的執行個體。命令假設您已將 AWS CLI 設定為以預設值為目標 AWS 區域。

如需 AmVU 選項及如何修改 Aurora 資料庫叢集以使用的詳細資訊，請參閱 [Aurora 資料庫叢集的自動次要版本升級](USER_UpgradeDBInstance.Maintenance.md#Aurora.Maintenance.AMVU)。

您可以透過回應維護任務，或修改叢集以使用新版本，將 Aurora PostgreSQL 資料庫叢集升級為新的次要版本。

您可以識別 Aurora PostgreSQL 資料庫叢集適用的任何升級或修補程式，方法是使用 RDS 主控台，然後開啟 **Recommendations** (建議) 功能表。在此，您可以找到各種維護問題的清單，例如 **Old minor versions** (舊次要版本)。視您的生產環境而定，您可以選擇 **Schedule** (排程) 升級，或選擇 **Apply now** (立即套用) 立即採取動作，如下所示。

![\[此主控台圖顯示升級到較新次要版本的建議。\]](http://docs.aws.amazon.com/zh_tw/AmazonRDS/latest/AuroraUserGuide/images/apg-maintenance-upgrade-minor.png)


若要進一步了解如何維護 Aurora 資料庫叢集，包括如何手動套用修補程式和次要版本升級，請參閱 [維持​ 為 Amazon Aurora​ 資料庫叢集](USER_UpgradeDBInstance.Maintenance.md)。

## 次要版本升級和零停機時間修補
<a name="USER_UpgradeDBInstance.PostgreSQL.Minor.zdp"></a>

升級 Aurora PostgreSQL 資料庫叢集可能會造成中斷。在升級過程中，資料庫在升級期間會關閉。如果您在資料庫忙碌時開始升級，則會遺失資料庫叢集正在處理的所有連線和交易。如果您要等到資料庫閒置才執行升級，就可能必須等待很長時間。

零停機時間修補 (ZDP) 功能改進了升級程序。透過 ZDP，可讓套用次要版本升級和修補程式對 Aurora PostgreSQL 資料庫叢集造成的影響最小。將修補程式或更新的次要版本升級套用至 Aurora PostgreSQL 版本以及這些次要版本的其他更新版本和更新的主要版本時，會使用 ZDP。也就是說，從上述任何一個版本之後的版本升級至新的次要版本都會使用 ZDP。

下列資料表顯示可使用 ZDP 的 Aurora PostgreSQL 版本和資料庫執行個體類別：


| 版本 | db.r\$1 執行個體類別 | db.t\$1 執行個體類別 | db.x\$1 執行個體類別 | db.serverless 執行個體類別 | 
| --- | --- | --- | --- | --- | 
| 10.21 和更新版本 | 是 | 是 | 是 | N/A | 
| 11.16 和更新版本 | 是 | 是 | 是 | N/A | 
| 11.17 和更新版本 | 是 | 是 | 是 | N/A | 
| 12.11 和更新版本 | 是 | 是 | 是 | N/A | 
| 12.12 和更新版本 | 是 | 是 | 是 | N/A | 
| 13.7 和更新版本 | 是 | 是 | 是 | N/A | 
| 13.8 和更新版本 | 是 | 是 | 是 | 是 | 
| 14.3 和更新版本 | 是 | 是 | 是 | N/A | 
| 14.4 和更新版本 | 是 | 是 | 是 | N/A | 
| 14.5 和更新版本 | 是 | 是 | 是 | 是 | 
| 15.3 和更新版本 | 是 | 是 | 是 | 是 | 
| 16.1 和更新版本 | 是 | 是 | 是 | 是 | 

在使用 ZDP 進行升級程序期間，資料庫引擎會尋找安靜點以暫停所有新事務。此動作可在修補程式和升級期間保護資料庫。為了確保應用程式在事務暫停期間順利執行，建議您將重試邏輯整合到程式碼中。此方法可確保系統能夠管理任何短暫的停機時間而不致失效，且可在升級後重試新的事務。

當 ZDP 成功完成時，會保持應用程式工作階段 (但中斷連線的工作階段除外)，而且資料庫引擎也會重新啟動，但同時間升級仍在進行中。雖然資料庫引擎重新啟動可能會導致輸送量暫時下降，但一般只會持續數秒，最多持續一分鐘左右。

在某些情況下，零停機時間修補 (ZDP) 可能無法成功。例如，在 Aurora PostgreSQL 資料庫叢集或其執行個體上狀態為 `pending` 的參數變更會干擾 ZDP。

您可以在主控台的 **Events** (事件) 頁面中找到 ZDP 操作的指標與事件。事件包括 ZDP 升級的開始和升級的完成。在這種情況下，您可以找到此過程所花的時間，以及重新啟動期間發生的保留和捨棄連線數量。您可以在資料庫錯誤日誌中找到詳細資訊。

## 零停機時間修補的限制
<a name="USER_UpgradeDBInstance.PostgreSQL.Minor.zdp.limitations"></a>

下列限制適用於零停機時間修補：
+ ZDP 嘗試在整個 Aurora PostgreSQL 升級程序中，保留與您的 Aurora PostgreSQL 寫入器執行個體的目前用戶端連線。不過，在下列情況下，將會中斷連線，讓 ZDP 完成：
  + 長時間執行的查詢或交易正在進行中。
  + 資料定義語言 (DDL) 陳述式執行中。
  + 暫存資料表或資料表鎖定正在使用中。
  + 所有工作階段都在通知通道上接聽。
  + 處於 ‘WITH HOLD’ 狀態的游標正在使用中。
  + TLSv1.1 連線正在使用中。從 16.1、15.3、14.8、13.11、12.15 和 11.20 之後的 Aurora PostgreSQL 版本開始，TLSv1.3 連線支援 ZDP。
+ 下列情況不支援 ZDP：
  + 當 Aurora PostgreSQL 資料庫叢集設定為 Aurora Serverless v1 時。
  + 在任何 Aurora 讀取器執行個體升級期間。
  + 在次要區域中屬於 Aurora 全球資料庫叢集的任何 Aurora 讀取器執行個體升級期間。
  + 在作業系統修補程式和作業系統升級期間

## 將 Aurora PostgreSQL 引擎升級為新的次要版本
<a name="USER_UpgradeDBInstance.MinorUpgrade"></a>

 您可以使用 主控台 AWS CLI、 或 RDS API，將 Aurora PostgreSQL 資料庫叢集升級至新的次要版本。在執行升級之前，我們建議您遵循與主要版本升級建議的相同最佳作法。與新的主要版本一樣，新的次要版本也有優化器改進 (如修復)，這可能會導致查詢計劃迴歸。為了確保計劃穩定，我們建議您使用查詢管理計畫 (QPM) 擴充功能，如 [主要版本升級之後確保計畫穩定性](AuroraPostgreSQL.Optimize.BestPractice.md#AuroraPostgreSQL.Optimize.BestPractice.MajorVersionUpgrade) 中詳細說明。

### 主控台
<a name="USER_UpgradeDBInstance.MinorUpgrade.Console"></a>

**升級 Aurora PostgreSQL 資料庫叢集的引擎版本**

1. 登入 AWS 管理主控台 ，並在 [https://console.aws.amazon.com/rds/](https://console.aws.amazon.com/rds/)：// 開啟 Amazon RDS 主控台。

1. 在導覽窗格中選擇 **Databases (資料庫)**，然後選擇您要升級的資料庫叢集。

1. 選擇 **Modify (修改)**。**Modify DB cluster (修改資料庫叢集)** 頁面隨即出現。

1. 在 **Engine version** (引擎版本) 中，選擇新版本。

1. 選擇 **Continue (繼續)**，並檢查修改的摘要。

1. 若要立即套用變更，請選擇 **Apply immediately** (立即套用)。在某些情況下，選擇此選項會導致停機。如需更多詳細資訊，請參閱 [修改 Amazon Aurora 資料庫叢集](Aurora.Modifying.md)。

1. 在確認頁面上，檢閱您的變更。如果都正確，請選擇 **Modify cluster** (修改叢集) 以儲存您的變更。

   或者，選擇 **Back (上一步)** 以編輯變更，或是選擇 **Cancel (取消)** 以取消變更。

### AWS CLI
<a name="USER_UpgradeDBInstance.MinorUpgrade.CLI"></a>

若要升級資料庫叢集的引擎版本，請將 [modify-db-cluster](https://docs.aws.amazon.com/cli/latest/reference/rds/modify-db-cluster.html) AWS CLI 命令搭配以下參數使用：
+ `--db-cluster-identifier` –Aurora PostgreSQL 資料庫叢集的名稱。
+ `--engine-version` – 會以此資料庫引擎版本編號為目標進行升級。如需有效引擎版本的資訊，請使用 AWS CLI [ describe-db-engine-versions](https://docs.aws.amazon.com/cli/latest/reference/rds/describe-db-engine-versions.html) 命令。
+ `--no-apply-immediately` – 下個維護時段再套用變更。若要立即套用變更，請改用 `--apply-immediately`。

對於 Linux、macOS 或 Unix：

```
aws rds modify-db-cluster \
    --db-cluster-identifier mydbcluster \
    --engine-version new_version \
    --no-apply-immediately
```

在 Windows 中：

```
aws rds modify-db-cluster ^
    --db-cluster-identifier mydbcluster ^
    --engine-version new_version ^
    --no-apply-immediately
```

### RDS API
<a name="USER_UpgradeDBInstance.MinorUpgrade.API"></a>

若要升級資料庫叢集的引擎版本，請使用 [ModifyDBCluster](https://docs.aws.amazon.com/AmazonRDS/latest/APIReference/API_ModifyDBCluster.html) 操作。指定下列參數：
+ `DBClusterIdentifier` – 資料庫叢集的名稱，例如 *`mydbcluster`*。
+ `EngineVersion` – 會以此資料庫引擎版本編號為目標進行升級。如需有效引擎版本的資訊，請使用 [ DescribeDBEngineVersions](https://docs.aws.amazon.com/AmazonRDS/latest/APIReference/API_DescribeDBEngineVersions.html) 操作。
+ `ApplyImmediately` – 指出要立即套用變更，或等到下個維護時段再套用。若要立即套用變更，請將值設為 `true`。若要在下一次維護時段套用變更，請將值設為 `false`。