

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

# 升級 Amazon Aurora PostgreSQL 資料庫叢集
<a name="USER_UpgradeDBInstance.PostgreSQL"></a><a name="pgsql_upgrade"></a>

Amazon Aurora 使新版 PostgreSQL 資料庫引擎只有在經過廣泛的測試後，才可供用於 AWS 區域 。當您所在區域有新版可供使用時，您可以將 Aurora PostgreSQL 資料庫叢集升級到新版本。

升級到新版本可能是次要升級或主要升級，這視資料庫叢集目前正在執行的 Aurora PostgreSQL 版本而定。例如，將 Aurora PostgreSQL 11.15 資料庫叢集升級至 Aurora PostgreSQL 13.6 是*主要版本升級*。將 Aurora PostgreSQL 13.3 資料庫叢集升級至 Aurora PostgreSQL 13.7 是*次要版本升級*。在以下主題中，您可以找到如何執行這兩種升級的相關資訊。

**Contents**
+ [Aurora PostgreSQL 升級程序概觀](#USER_UpgradeDBInstance.PostgreSQL.Overview)
+ [取得 中可用版本的清單 AWS 區域](USER_UpgradeDBInstance.PostgreSQL.UpgradeVersion.md)
+ [執行主要版本升級](USER_UpgradeDBInstance.PostgreSQL.MajorVersion.md)
  + [測試執行生產資料庫叢集升級到新主要版本的程序](USER_UpgradeDBInstance.PostgreSQL.MajorVersion.md#USER_UpgradeDBInstance.PostgreSQL.MajorVersion.Upgrade.preliminary)
  + [升級後建議](USER_UpgradeDBInstance.PostgreSQL.MajorVersion.md#USER_UpgradeDBInstance.PostgreSQL.MajorVersion.Upgrade.postupgrade)
  + [將 Aurora PostgreSQL 引擎升級為新的主要版本](USER_UpgradeDBInstance.PostgreSQL.MajorVersion.md#USER_UpgradeDBInstance.Upgrading.Manual)
    + [全域資料庫的主要升級](USER_UpgradeDBInstance.PostgreSQL.MajorVersion.md#USER_UpgradeDBInstance.PostgreSQL.GlobalDB)
+ [執行次要版本升級](USER_UpgradeDBInstance.PostgreSQL.MinorUpgrade.md)
  + [執行次要版本升級之前](USER_UpgradeDBInstance.PostgreSQL.MinorUpgrade.md#USER_UpgradeDBInstance.PostgreSQL.BeforeMinor)
  + [如何執行次要版本升級和套用修補程式](USER_UpgradeDBInstance.PostgreSQL.MinorUpgrade.md#USER_UpgradeDBInstance.PostgreSQL.Minor)
  + [次要版本升級和零停機時間修補](USER_UpgradeDBInstance.PostgreSQL.MinorUpgrade.md#USER_UpgradeDBInstance.PostgreSQL.Minor.zdp)
  + [零停機時間修補的限制](USER_UpgradeDBInstance.PostgreSQL.MinorUpgrade.md#USER_UpgradeDBInstance.PostgreSQL.Minor.zdp.limitations)
  + [將 Aurora PostgreSQL 引擎升級為新的次要版本](USER_UpgradeDBInstance.PostgreSQL.MinorUpgrade.md#USER_UpgradeDBInstance.MinorUpgrade)
+ [升級 PostgreSQL 延伸](USER_UpgradeDBInstance.Upgrading.ExtensionUpgrades.md)
+ [替代藍/綠升級技術](#USER_UpgradeDBInstance.Upgrading.BlueGreen)

## Aurora PostgreSQL 升級程序概觀
<a name="USER_UpgradeDBInstance.PostgreSQL.Overview"></a>

主要和次要版本升級之間的差異如下：

**次要版本升級和修補程式**  
次要版本升級和修補程式只包含與現有應用程式回溯相容的變更。次要版本升級和修補程式只有在經過 Aurora PostgreSQL 測試並核准後，才可供您使用。  
Aurora 會自動為您套用次要版本升級。建立新 Aurora PostgreSQL 資料庫叢集時，系統預設已啟用**啟用次要版本升級**選項。除非您手動關閉此選項，否則 Aurora 會在您排程的維護時段期間定期套用自動次要版本升級。如需自動次要版本升級 (AmVU) 選項及如何修改 Aurora 資料庫叢集以使用的詳細資訊，請參閱 [Aurora 資料庫叢集的自動次要版本升級](USER_UpgradeDBInstance.Maintenance.md#Aurora.Maintenance.AMVU)。  
如果未為 Aurora PostgreSQL 資料庫叢集啟用自動次要版本升級，則 Aurora PostgreSQL 不會自動升級到新的次要版本。相反地，當在您的 AWS 區域 中發行新次要版本且 Aurora PostgreSQL 資料庫叢集正在執行較舊的次要版本時，Aurora 會提示您升級。其做法是將建議新增至叢集的維護任務。  
修補程式不視為升級，也不會自動套用。Aurora PostgreSQL 會透過對 Aurora PostgreSQL 資料庫叢集的維護任務新增建議，來提示您套用任何修補程式。如需詳細資訊，請參閱[如何執行次要版本升級和套用修補程式](USER_UpgradeDBInstance.PostgreSQL.MinorUpgrade.md#USER_UpgradeDBInstance.PostgreSQL.Minor)。  
此外，也會新增可解決安全問題或其他重大問題的修補程式作為維護任務。但是，這些修補程式是必要的。當安全修補程式在您的待定維護任務中可供使用時，務必套用到您的 Aurora PostgreSQL 資料庫叢集。  
自動次要版本的升級會執行至預設次要版本。
當叢集中每個執行個體升級到新版本時，升級程序可能會出現短暫中斷。不過，在 Aurora PostgreSQL 14.3.3 版、13.7.3 版、12.11.3 版、11.16.3 版、10.21.3 版，以及這些次要版本的其他更高版本和更新的主要版本之後，升級程序會使用零停機時間修補 (ZDP) 功能。此功能可儘量縮短中斷時間，在大多數情況下能夠完全避免中斷。如需詳細資訊，請參閱[次要版本升級和零停機時間修補](USER_UpgradeDBInstance.PostgreSQL.MinorUpgrade.md#USER_UpgradeDBInstance.PostgreSQL.Minor.zdp)。如需 ZDP 支援功能和限制的詳細資訊，請參閱 [零停機時間修補的限制](USER_UpgradeDBInstance.PostgreSQL.MinorUpgrade.md#USER_UpgradeDBInstance.PostgreSQL.Minor.zdp.limitations)。

**主要版本升級**  
不同於次要版本升級和修補程式，Aurora PostgreSQL 沒有自動主要版本升級選項。新主要 PostgreSQL 版本可能包含與現有應用程式回溯不相容的資料庫變更。新功能可能導致現有的應用程式停止正確運作。  
為了防止出現任何問題，強烈建議您先按照 [測試執行生產資料庫叢集升級到新主要版本的程序](USER_UpgradeDBInstance.PostgreSQL.MajorVersion.md#USER_UpgradeDBInstance.PostgreSQL.MajorVersion.Upgrade.preliminary) 中所列的程序進行，再升級 Aurora PostgreSQL 資料庫叢集中的資料庫執行個體。首先，請按照該程序確定您的應用程式可以在新版上執行。然後，您可以手動將 Aurora PostgreSQL 資料庫叢集升級到新版本。  
當叢集中所有執行個體都升級到新版本時，升級程序可能會出現短暫中斷。初步規劃過程也需要一些時間。建議您一律在叢集維護時段或作業最少的時候執行升等任務。如需詳細資訊，請參閱[執行主要版本升級](USER_UpgradeDBInstance.PostgreSQL.MajorVersion.md)。

**注意**  
次要版本升級和主要版本升級可能會造成短暫的中斷。因此，強烈建議您在維護時段或其他低利用率期間執行或安排升級。

Aurora PostgreSQL 資料庫叢集偶爾需要作業系統更新。這些更新可能會包含較新版本的 glibc 程式庫。在此類更新期間，建議您遵循 [Aurora PostgreSQL 支援的定序](PostgreSQL-Collations.md) 中所述指示。

# 取得 中可用版本的清單 AWS 區域
<a name="USER_UpgradeDBInstance.PostgreSQL.UpgradeVersion"></a>

您可以使用 AWS 區域 [describe-db-engine-versions](https://docs.aws.amazon.com/cli/latest/reference/rds/describe-db-engine-versions.html) AWS CLI 命令查詢 ，以取得可用於 Aurora PostgreSQL 資料庫叢集升級目標的所有引擎版本清單，如下所示。

針對 Linux、macOS 或 Unix：

```
aws rds describe-db-engine-versions \
  --engine aurora-postgresql \
  --engine-version version-number \
  --query 'DBEngineVersions[*].ValidUpgradeTarget[*].{EngineVersion:EngineVersion}' \
  --output text
```

在 Windows 中：

```
aws rds describe-db-engine-versions ^
  --engine aurora-postgresql ^
  --engine-version version-number ^
  --query "DBEngineVersions[*].ValidUpgradeTarget[*].{EngineVersion:EngineVersion}" ^
  --output text
```

例如，若要識別 Aurora PostgreSQL 12.10 版資料庫叢集的有效升級目標，請執行下列 AWS CLI 命令：

針對 Linux、macOS 或 Unix：

```
aws rds describe-db-engine-versions \
  --engine aurora-postgresql \
  --engine-version 12.10 \
  --query 'DBEngineVersions[*].ValidUpgradeTarget[*].{EngineVersion:EngineVersion}' \
  --output text
```

在 Windows 中：

```
aws rds describe-db-engine-versions ^
  --engine aurora-postgresql ^
  --engine-version 12.10 ^
  --query "DBEngineVersions[*].ValidUpgradeTarget[*].{EngineVersion:EngineVersion}" ^
  --output text
```

在下表中，您可以找到適用於不同 Aurora PostgreSQL 資料庫版本的主要與次要版本升級目標。為了維護相容性，並非所有版本都會提供做為升級目標。Aurora PostgreSQL 會在每次每季次要版本發行時推出新功能和錯誤修正。如需 Aurora PostgreSQL 次要版本的詳細資訊，請參閱 [https://docs.aws.amazon.com/AmazonRDS/latest/AuroraPostgreSQLReleaseNotes/Welcome.html](https://docs.aws.amazon.com/AmazonRDS/latest/AuroraPostgreSQLReleaseNotes/Welcome.html)。


| 目前來源版本 | 升級目標 | 
| --- | --- | 
| 17.7 |  無  | 
| 17.6 |  [17.7](https://docs.aws.amazon.com/AmazonRDS/latest/AuroraPostgreSQLReleaseNotes/AuroraPostgreSQL.Updates.html#aurorapostgresql-versions-version177x)  | 
| 17.5 |  [17.7](https://docs.aws.amazon.com/AmazonRDS/latest/AuroraPostgreSQLReleaseNotes/AuroraPostgreSQL.Updates.html#aurorapostgresql-versions-version177x)、[17.6](https://docs.aws.amazon.com/AmazonRDS/latest/AuroraPostgreSQLReleaseNotes/AuroraPostgreSQL.Updates.html#aurorapostgresql-versions-version176x)  | 
| 17.4 |  [17.7](https://docs.aws.amazon.com/AmazonRDS/latest/AuroraPostgreSQLReleaseNotes/AuroraPostgreSQL.Updates.html#aurorapostgresql-versions-version177x)、[17.6](https://docs.aws.amazon.com/AmazonRDS/latest/AuroraPostgreSQLReleaseNotes/AuroraPostgreSQL.Updates.html#aurorapostgresql-versions-version176x)、[17.5](https://docs.aws.amazon.com/AmazonRDS/latest/AuroraPostgreSQLReleaseNotes/AuroraPostgreSQL.Updates.html#aurorapostgresql-versions-version175x)  | 
| 16.11 |  無  | 
| 16.10 |  [17.7](https://docs.aws.amazon.com/AmazonRDS/latest/AuroraPostgreSQLReleaseNotes/AuroraPostgreSQL.Updates.html#aurorapostgresql-versions-version177x) [16.11](https://docs.aws.amazon.com/AmazonRDS/latest/AuroraPostgreSQLReleaseNotes/AuroraPostgreSQL.Updates.html#aurorapostgresql-versions-version1611x)  | 
| 16.9 |  [17.7](https://docs.aws.amazon.com/AmazonRDS/latest/AuroraPostgreSQLReleaseNotes/AuroraPostgreSQL.Updates.html#aurorapostgresql-versions-version177x) [16.11](https://docs.aws.amazon.com/AmazonRDS/latest/AuroraPostgreSQLReleaseNotes/AuroraPostgreSQL.Updates.html#aurorapostgresql-versions-version1611x)、[17.6](https://docs.aws.amazon.com/AmazonRDS/latest/AuroraPostgreSQLReleaseNotes/AuroraPostgreSQL.Updates.html#aurorapostgresql-versions-version176x)、[16.10](https://docs.aws.amazon.com/AmazonRDS/latest/AuroraPostgreSQLReleaseNotes/AuroraPostgreSQL.Updates.html#aurorapostgresql-versions-version1610x)、[17.5](https://docs.aws.amazon.com/AmazonRDS/latest/AuroraPostgreSQLReleaseNotes/AuroraPostgreSQL.Updates.html#aurorapostgresql-versions-version175x)  | 
| 16.8 |  [17.7](https://docs.aws.amazon.com/AmazonRDS/latest/AuroraPostgreSQLReleaseNotes/AuroraPostgreSQL.Updates.html#aurorapostgresql-versions-version177x) [16.11](https://docs.aws.amazon.com/AmazonRDS/latest/AuroraPostgreSQLReleaseNotes/AuroraPostgreSQL.Updates.html#aurorapostgresql-versions-version1611x)、[17.6](https://docs.aws.amazon.com/AmazonRDS/latest/AuroraPostgreSQLReleaseNotes/AuroraPostgreSQL.Updates.html#aurorapostgresql-versions-version176x)、[16.10](https://docs.aws.amazon.com/AmazonRDS/latest/AuroraPostgreSQLReleaseNotes/AuroraPostgreSQL.Updates.html#aurorapostgresql-versions-version1610x)、[17.5](https://docs.aws.amazon.com/AmazonRDS/latest/AuroraPostgreSQLReleaseNotes/AuroraPostgreSQL.Updates.html#aurorapostgresql-versions-version175x)、[17.4](https://docs.aws.amazon.com/AmazonRDS/latest/AuroraPostgreSQLReleaseNotes/AuroraPostgreSQL.Updates.html#aurorapostgresql-versions-version174x)、[16.9](https://docs.aws.amazon.com/AmazonRDS/latest/AuroraPostgreSQLReleaseNotes/AuroraPostgreSQL.Updates.html#aurorapostgresql-versions-version169x)  | 
| 16.6 |  [17.7](https://docs.aws.amazon.com/AmazonRDS/latest/AuroraPostgreSQLReleaseNotes/AuroraPostgreSQL.Updates.html#aurorapostgresql-versions-version177x) [16.11](https://docs.aws.amazon.com/AmazonRDS/latest/AuroraPostgreSQLReleaseNotes/AuroraPostgreSQL.Updates.html#aurorapostgresql-versions-version1611x)、[17.6](https://docs.aws.amazon.com/AmazonRDS/latest/AuroraPostgreSQLReleaseNotes/AuroraPostgreSQL.Updates.html#aurorapostgresql-versions-version176x)、[16.10](https://docs.aws.amazon.com/AmazonRDS/latest/AuroraPostgreSQLReleaseNotes/AuroraPostgreSQL.Updates.html#aurorapostgresql-versions-version1610x)、[17.5](https://docs.aws.amazon.com/AmazonRDS/latest/AuroraPostgreSQLReleaseNotes/AuroraPostgreSQL.Updates.html#aurorapostgresql-versions-version175x)、[17.4](https://docs.aws.amazon.com/AmazonRDS/latest/AuroraPostgreSQLReleaseNotes/AuroraPostgreSQL.Updates.html#aurorapostgresql-versions-version174x)、[16.9](https://docs.aws.amazon.com/AmazonRDS/latest/AuroraPostgreSQLReleaseNotes/AuroraPostgreSQL.Updates.html#aurorapostgresql-versions-version169x)、[16.8](https://docs.aws.amazon.com/AmazonRDS/latest/AuroraPostgreSQLReleaseNotes/AuroraPostgreSQL.Updates.html#aurorapostgresql-versions-version168x)  | 
| 16.4 |  [17.7](https://docs.aws.amazon.com/AmazonRDS/latest/AuroraPostgreSQLReleaseNotes/AuroraPostgreSQL.Updates.html#aurorapostgresql-versions-version177x) [16.11](https://docs.aws.amazon.com/AmazonRDS/latest/AuroraPostgreSQLReleaseNotes/AuroraPostgreSQL.Updates.html#aurorapostgresql-versions-version1611x)、[17.6](https://docs.aws.amazon.com/AmazonRDS/latest/AuroraPostgreSQLReleaseNotes/AuroraPostgreSQL.Updates.html#aurorapostgresql-versions-version176x)、[16.10](https://docs.aws.amazon.com/AmazonRDS/latest/AuroraPostgreSQLReleaseNotes/AuroraPostgreSQL.Updates.html#aurorapostgresql-versions-version1610x)、[17.5](https://docs.aws.amazon.com/AmazonRDS/latest/AuroraPostgreSQLReleaseNotes/AuroraPostgreSQL.Updates.html#aurorapostgresql-versions-version175x)、[17.4](https://docs.aws.amazon.com/AmazonRDS/latest/AuroraPostgreSQLReleaseNotes/AuroraPostgreSQL.Updates.html#aurorapostgresql-versions-version174x)、[16.9](https://docs.aws.amazon.com/AmazonRDS/latest/AuroraPostgreSQLReleaseNotes/AuroraPostgreSQL.Updates.html#aurorapostgresql-versions-version169x)、[16.8](https://docs.aws.amazon.com/AmazonRDS/latest/AuroraPostgreSQLReleaseNotes/AuroraPostgreSQL.Updates.html#aurorapostgresql-versions-version168x)、[16.6](https://docs.aws.amazon.com/AmazonRDS/latest/AuroraPostgreSQLReleaseNotes/AuroraPostgreSQL.Updates.html#aurorapostgresql-versions-version166x)  | 
| 16.3 |  [17.7](https://docs.aws.amazon.com/AmazonRDS/latest/AuroraPostgreSQLReleaseNotes/AuroraPostgreSQL.Updates.html#aurorapostgresql-versions-version177x) [16.11](https://docs.aws.amazon.com/AmazonRDS/latest/AuroraPostgreSQLReleaseNotes/AuroraPostgreSQL.Updates.html#aurorapostgresql-versions-version1611x)、[17.6](https://docs.aws.amazon.com/AmazonRDS/latest/AuroraPostgreSQLReleaseNotes/AuroraPostgreSQL.Updates.html#aurorapostgresql-versions-version176x)、[16.10](https://docs.aws.amazon.com/AmazonRDS/latest/AuroraPostgreSQLReleaseNotes/AuroraPostgreSQL.Updates.html#aurorapostgresql-versions-version1610x)、[17.5](https://docs.aws.amazon.com/AmazonRDS/latest/AuroraPostgreSQLReleaseNotes/AuroraPostgreSQL.Updates.html#aurorapostgresql-versions-version175x)、[17.4](https://docs.aws.amazon.com/AmazonRDS/latest/AuroraPostgreSQLReleaseNotes/AuroraPostgreSQL.Updates.html#aurorapostgresql-versions-version174x)、[16.9](https://docs.aws.amazon.com/AmazonRDS/latest/AuroraPostgreSQLReleaseNotes/AuroraPostgreSQL.Updates.html#aurorapostgresql-versions-version169x)、[16.8](https://docs.aws.amazon.com/AmazonRDS/latest/AuroraPostgreSQLReleaseNotes/AuroraPostgreSQL.Updates.html#aurorapostgresql-versions-version168x)、[16.6](https://docs.aws.amazon.com/AmazonRDS/latest/AuroraPostgreSQLReleaseNotes/AuroraPostgreSQL.Updates.html#aurorapostgresql-versions-version166x)、[16.4](https://docs.aws.amazon.com/AmazonRDS/latest/AuroraPostgreSQLReleaseNotes/AuroraPostgreSQL.Updates.html#aurorapostgresql-versions-version164x)  | 
| 16.2 |  [17.7](https://docs.aws.amazon.com/AmazonRDS/latest/AuroraPostgreSQLReleaseNotes/AuroraPostgreSQL.Updates.html#aurorapostgresql-versions-version177x) [16.11](https://docs.aws.amazon.com/AmazonRDS/latest/AuroraPostgreSQLReleaseNotes/AuroraPostgreSQL.Updates.html#aurorapostgresql-versions-version1611x)、[17.6](https://docs.aws.amazon.com/AmazonRDS/latest/AuroraPostgreSQLReleaseNotes/AuroraPostgreSQL.Updates.html#aurorapostgresql-versions-version176x)、[16.10](https://docs.aws.amazon.com/AmazonRDS/latest/AuroraPostgreSQLReleaseNotes/AuroraPostgreSQL.Updates.html#aurorapostgresql-versions-version1610x)、[17.5](https://docs.aws.amazon.com/AmazonRDS/latest/AuroraPostgreSQLReleaseNotes/AuroraPostgreSQL.Updates.html#aurorapostgresql-versions-version175x)、[17.4](https://docs.aws.amazon.com/AmazonRDS/latest/AuroraPostgreSQLReleaseNotes/AuroraPostgreSQL.Updates.html#aurorapostgresql-versions-version174x)、[16.9](https://docs.aws.amazon.com/AmazonRDS/latest/AuroraPostgreSQLReleaseNotes/AuroraPostgreSQL.Updates.html#aurorapostgresql-versions-version169x)、[16.8](https://docs.aws.amazon.com/AmazonRDS/latest/AuroraPostgreSQLReleaseNotes/AuroraPostgreSQL.Updates.html#aurorapostgresql-versions-version168x)、[16.6](https://docs.aws.amazon.com/AmazonRDS/latest/AuroraPostgreSQLReleaseNotes/AuroraPostgreSQL.Updates.html#aurorapostgresql-versions-version166x)、[16.4](https://docs.aws.amazon.com/AmazonRDS/latest/AuroraPostgreSQLReleaseNotes/AuroraPostgreSQL.Updates.html#aurorapostgresql-versions-version164x)、[16.3](https://docs.aws.amazon.com/AmazonRDS/latest/AuroraPostgreSQLReleaseNotes/AuroraPostgreSQL.Updates.html#aurorapostgresql-versions-version163x)  | 
| 16.1 |  [17.7](https://docs.aws.amazon.com/AmazonRDS/latest/AuroraPostgreSQLReleaseNotes/AuroraPostgreSQL.Updates.html#aurorapostgresql-versions-version177x) [16.11](https://docs.aws.amazon.com/AmazonRDS/latest/AuroraPostgreSQLReleaseNotes/AuroraPostgreSQL.Updates.html#aurorapostgresql-versions-version1611x)、[17.6](https://docs.aws.amazon.com/AmazonRDS/latest/AuroraPostgreSQLReleaseNotes/AuroraPostgreSQL.Updates.html#aurorapostgresql-versions-version176x)、[16.10](https://docs.aws.amazon.com/AmazonRDS/latest/AuroraPostgreSQLReleaseNotes/AuroraPostgreSQL.Updates.html#aurorapostgresql-versions-version1610x)、[17.5](https://docs.aws.amazon.com/AmazonRDS/latest/AuroraPostgreSQLReleaseNotes/AuroraPostgreSQL.Updates.html#aurorapostgresql-versions-version175x)、[17.4](https://docs.aws.amazon.com/AmazonRDS/latest/AuroraPostgreSQLReleaseNotes/AuroraPostgreSQL.Updates.html#aurorapostgresql-versions-version174x)、[16.9](https://docs.aws.amazon.com/AmazonRDS/latest/AuroraPostgreSQLReleaseNotes/AuroraPostgreSQL.Updates.html#aurorapostgresql-versions-version169x)、[16.8](https://docs.aws.amazon.com/AmazonRDS/latest/AuroraPostgreSQLReleaseNotes/AuroraPostgreSQL.Updates.html#aurorapostgresql-versions-version168x)、[16.6](https://docs.aws.amazon.com/AmazonRDS/latest/AuroraPostgreSQLReleaseNotes/AuroraPostgreSQL.Updates.html#aurorapostgresql-versions-version166x)、[16.4](https://docs.aws.amazon.com/AmazonRDS/latest/AuroraPostgreSQLReleaseNotes/AuroraPostgreSQL.Updates.html#aurorapostgresql-versions-version164x)、[16.3](https://docs.aws.amazon.com/AmazonRDS/latest/AuroraPostgreSQLReleaseNotes/AuroraPostgreSQL.Updates.html#aurorapostgresql-versions-version163x)、[16.2](https://docs.aws.amazon.com/AmazonRDS/latest/AuroraPostgreSQLReleaseNotes/AuroraPostgreSQL.Updates.html#AuroraPostgreSQL.Updates.20180305.162X)  | 
| 15.15 |  無  | 
| 15.14 |  [17.7](https://docs.aws.amazon.com/AmazonRDS/latest/AuroraPostgreSQLReleaseNotes/AuroraPostgreSQL.Updates.html#aurorapostgresql-versions-version177x) [16.11](https://docs.aws.amazon.com/AmazonRDS/latest/AuroraPostgreSQLReleaseNotes/AuroraPostgreSQL.Updates.html#aurorapostgresql-versions-version1611x) [15.15](https://docs.aws.amazon.com/AmazonRDS/latest/AuroraPostgreSQLReleaseNotes/AuroraPostgreSQL.Updates.html#aurorapostgresql-versions-version1515x)  | 
| 15.13 |  [17.7](https://docs.aws.amazon.com/AmazonRDS/latest/AuroraPostgreSQLReleaseNotes/AuroraPostgreSQL.Updates.html#aurorapostgresql-versions-version177x) [16.11](https://docs.aws.amazon.com/AmazonRDS/latest/AuroraPostgreSQLReleaseNotes/AuroraPostgreSQL.Updates.html#aurorapostgresql-versions-version1611x)、[15.15](https://docs.aws.amazon.com/AmazonRDS/latest/AuroraPostgreSQLReleaseNotes/AuroraPostgreSQL.Updates.html#aurorapostgresql-versions-version1515x)、[17.6](https://docs.aws.amazon.com/AmazonRDS/latest/AuroraPostgreSQLReleaseNotes/AuroraPostgreSQL.Updates.html#aurorapostgresql-versions-version176x)、[16.10](https://docs.aws.amazon.com/AmazonRDS/latest/AuroraPostgreSQLReleaseNotes/AuroraPostgreSQL.Updates.html#aurorapostgresql-versions-version1610x)、[15.14](https://docs.aws.amazon.com/AmazonRDS/latest/AuroraPostgreSQLReleaseNotes/AuroraPostgreSQL.Updates.html#aurorapostgresql-versions-version1514x)、[17.5](https://docs.aws.amazon.com/AmazonRDS/latest/AuroraPostgreSQLReleaseNotes/AuroraPostgreSQL.Updates.html#aurorapostgresql-versions-version175x)、[16.9](https://docs.aws.amazon.com/AmazonRDS/latest/AuroraPostgreSQLReleaseNotes/AuroraPostgreSQL.Updates.html#aurorapostgresql-versions-version169x)  | 
| 15.12 |  [17.7](https://docs.aws.amazon.com/AmazonRDS/latest/AuroraPostgreSQLReleaseNotes/AuroraPostgreSQL.Updates.html#aurorapostgresql-versions-version177x) [16.11](https://docs.aws.amazon.com/AmazonRDS/latest/AuroraPostgreSQLReleaseNotes/AuroraPostgreSQL.Updates.html#aurorapostgresql-versions-version1611x)、[15.15](https://docs.aws.amazon.com/AmazonRDS/latest/AuroraPostgreSQLReleaseNotes/AuroraPostgreSQL.Updates.html#aurorapostgresql-versions-version1515x)、[17.6](https://docs.aws.amazon.com/AmazonRDS/latest/AuroraPostgreSQLReleaseNotes/AuroraPostgreSQL.Updates.html#aurorapostgresql-versions-version176x)、[16.10](https://docs.aws.amazon.com/AmazonRDS/latest/AuroraPostgreSQLReleaseNotes/AuroraPostgreSQL.Updates.html#aurorapostgresql-versions-version1610x)、[15.14](https://docs.aws.amazon.com/AmazonRDS/latest/AuroraPostgreSQLReleaseNotes/AuroraPostgreSQL.Updates.html#aurorapostgresql-versions-version1514x)、[15.13](https://docs.aws.amazon.com/AmazonRDS/latest/AuroraPostgreSQLReleaseNotes/AuroraPostgreSQL.Updates.html#aurorapostgresql-versions-version1513x)  | 
| 15.10 |  [17.7](https://docs.aws.amazon.com/AmazonRDS/latest/AuroraPostgreSQLReleaseNotes/AuroraPostgreSQL.Updates.html#aurorapostgresql-versions-version177x) [16.11](https://docs.aws.amazon.com/AmazonRDS/latest/AuroraPostgreSQLReleaseNotes/AuroraPostgreSQL.Updates.html#aurorapostgresql-versions-version1611x)、[15.15](https://docs.aws.amazon.com/AmazonRDS/latest/AuroraPostgreSQLReleaseNotes/AuroraPostgreSQL.Updates.html#aurorapostgresql-versions-version1515x)、[17.6](https://docs.aws.amazon.com/AmazonRDS/latest/AuroraPostgreSQLReleaseNotes/AuroraPostgreSQL.Updates.html#aurorapostgresql-versions-version176x)、[16.10](https://docs.aws.amazon.com/AmazonRDS/latest/AuroraPostgreSQLReleaseNotes/AuroraPostgreSQL.Updates.html#aurorapostgresql-versions-version1610x)、[15.14](https://docs.aws.amazon.com/AmazonRDS/latest/AuroraPostgreSQLReleaseNotes/AuroraPostgreSQL.Updates.html#aurorapostgresql-versions-version1514x)、[17.5](https://docs.aws.amazon.com/AmazonRDS/latest/AuroraPostgreSQLReleaseNotes/AuroraPostgreSQL.Updates.html#aurorapostgresql-versions-version175x)、[17.4](https://docs.aws.amazon.com/AmazonRDS/latest/AuroraPostgreSQLReleaseNotes/AuroraPostgreSQL.Updates.html#aurorapostgresql-versions-version174x)、[16.9](https://docs.aws.amazon.com/AmazonRDS/latest/AuroraPostgreSQLReleaseNotes/AuroraPostgreSQL.Updates.html#aurorapostgresql-versions-version169x)、[16.8](https://docs.aws.amazon.com/AmazonRDS/latest/AuroraPostgreSQLReleaseNotes/AuroraPostgreSQL.Updates.html#aurorapostgresql-versions-version168x)、[15.13](https://docs.aws.amazon.com/AmazonRDS/latest/AuroraPostgreSQLReleaseNotes/AuroraPostgreSQL.Updates.html#aurorapostgresql-versions-version1513x)  | 
| 15.11 |  [17.7](https://docs.aws.amazon.com/AmazonRDS/latest/AuroraPostgreSQLReleaseNotes/AuroraPostgreSQL.Updates.html#aurorapostgresql-versions-version177x) [16.11](https://docs.aws.amazon.com/AmazonRDS/latest/AuroraPostgreSQLReleaseNotes/AuroraPostgreSQL.Updates.html#aurorapostgresql-versions-version1611x)、[15.15](https://docs.aws.amazon.com/AmazonRDS/latest/AuroraPostgreSQLReleaseNotes/AuroraPostgreSQL.Updates.html#aurorapostgresql-versions-version1515x)、[17.6](https://docs.aws.amazon.com/AmazonRDS/latest/AuroraPostgreSQLReleaseNotes/AuroraPostgreSQL.Updates.html#aurorapostgresql-versions-version176x)、[16.10](https://docs.aws.amazon.com/AmazonRDS/latest/AuroraPostgreSQLReleaseNotes/AuroraPostgreSQL.Updates.html#aurorapostgresql-versions-version1610x)、[15.14](https://docs.aws.amazon.com/AmazonRDS/latest/AuroraPostgreSQLReleaseNotes/AuroraPostgreSQL.Updates.html#aurorapostgresql-versions-version1514x)、[17.5](https://docs.aws.amazon.com/AmazonRDS/latest/AuroraPostgreSQLReleaseNotes/AuroraPostgreSQL.Updates.html#aurorapostgresql-versions-version175x)、[17.4](https://docs.aws.amazon.com/AmazonRDS/latest/AuroraPostgreSQLReleaseNotes/AuroraPostgreSQL.Updates.html#aurorapostgresql-versions-version174x)、[16.9](https://docs.aws.amazon.com/AmazonRDS/latest/AuroraPostgreSQLReleaseNotes/AuroraPostgreSQL.Updates.html#aurorapostgresql-versions-version169x)、[16.8](https://docs.aws.amazon.com/AmazonRDS/latest/AuroraPostgreSQLReleaseNotes/AuroraPostgreSQL.Updates.html#aurorapostgresql-versions-version168x)、[16.6](https://docs.aws.amazon.com/AmazonRDS/latest/AuroraPostgreSQLReleaseNotes/AuroraPostgreSQL.Updates.html#aurorapostgresql-versions-version166x)、[15.13](https://docs.aws.amazon.com/AmazonRDS/latest/AuroraPostgreSQLReleaseNotes/AuroraPostgreSQL.Updates.html#aurorapostgresql-versions-version1513x)、[15.12](https://docs.aws.amazon.com/AmazonRDS/latest/AuroraPostgreSQLReleaseNotes/AuroraPostgreSQL.Updates.html#aurorapostgresql-versions-version1512x)  | 
| 14.20 |  無  | 

對於您正在考慮的任何版本，請務必檢查您叢集資料庫執行個體類別的可用性。例如，Aurora PostgreSQL 13 不支援 `db.r4`。如果您的 Aurora PostgreSQL 資料庫叢集目前使用 db.r4 執行個體類別，您必須先將其修改為使用支援的資料庫執行個體類別，才能升級至 Aurora PostgreSQL 13。如需可用 Aurora PostgreSQL 資料庫執行個體類別的詳細資訊，包括哪些是Graviton2-based 和哪些是基於 Intel 的執行個體類別，請參閱[Amazon Aurora 資料庫執行個體類別](Concepts.DBInstanceClass.md)。

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

主要版本升級可能包含與舊版資料庫不相容的資料庫變更。新版本中的新功能可能導致現有的應用程式停止正確運作。若要避免發生問題，Amazon Aurora 不會自動套用主要版本升級。相反，建議您按照以下步驟謹慎規劃主要版本升級：

1. 從表格中為您的版本列出的可用目標清單中，選擇您要的主要版本。您可以使用 取得 AWS 區域 目前版本在 中可用的版本精確清單 AWS CLI。如需詳細資訊，請參閱[取得 中可用版本的清單 AWS 區域](USER_UpgradeDBInstance.PostgreSQL.UpgradeVersion.md)。

1. 確認您的應用程式在新版本的試用部署中能如預期運作。如需完整程序的相關資訊，請參閱 [測試執行生產資料庫叢集升級到新主要版本的程序](#USER_UpgradeDBInstance.PostgreSQL.MajorVersion.Upgrade.preliminary)。

1. 當確認您的應用程式在試用部署中能如按預期運作後，您便可以升級叢集。如需詳細資訊，請參閱[將 Aurora PostgreSQL 引擎升級為新的主要版本](#USER_UpgradeDBInstance.Upgrading.Manual)。

**注意**  
您可以執行從 Babelfish for Aurora PostgreSQL 13 型版本 (從 13.6 開始) 至 Aurora PostgreSQL 14 型版本 (從 14.6 開始) 的主要版本升級。Babelfish for Aurora PostgreSQL 13.4 和 13.5 不支援主要版本升級。

您可以使用 AWS 區域 [describe-db-engine-versions](https://docs.aws.amazon.com/cli/latest/reference/rds/describe-db-engine-versions.html) AWS CLI 命令查詢 ，以取得可用於 Aurora PostgreSQL 資料庫叢集主要版本升級目標的引擎版本清單，如下所示。

針對 Linux、macOS 或 Unix：

```
aws rds describe-db-engine-versions \
  --engine aurora-postgresql \
  --engine-version version-number \
  --query 'DBEngineVersions[].ValidUpgradeTarget[?IsMajorVersionUpgrade == `true`].{EngineVersion:EngineVersion}' \
  --output text
```

在 Windows 中：

```
aws rds describe-db-engine-versions ^
  --engine aurora-postgresql ^
  --engine-version version-number ^
  --query "DBEngineVersions[].ValidUpgradeTarget[?IsMajorVersionUpgrade == `true`].{EngineVersion:EngineVersion}" ^
  --output text
```

在某些情況下，您要升級到的版本不是目前版本的目標。在這種情況下，請使用 [versions table](USER_UpgradeDBInstance.PostgreSQL.UpgradeVersion.md#versions-table) 中的資訊執行次要版本升級，直到叢集的版本在其目標列中具有您選擇的目標為止。

## 測試執行生產資料庫叢集升級到新主要版本的程序
<a name="USER_UpgradeDBInstance.PostgreSQL.MajorVersion.Upgrade.preliminary"></a>

每個新的主要版本都包括旨在提高效能之查詢最佳化工具的增強功能。但是，您的工作負載可能包括導致新版本中計畫效能變差的查詢。這就是為什麼我們建議您在升級生產之前測試和檢閱效能。您可使用查詢計劃管理 (QPM) 擴充功能管理跨版本管理查詢計劃的穩定性，詳情請參閱 [主要版本升級之後確保計畫穩定性](AuroraPostgreSQL.Optimize.BestPractice.md#AuroraPostgreSQL.Optimize.BestPractice.MajorVersionUpgrade)。

將生產 Aurora PostgreSQL 資料庫叢集升級至新的主要版本之前，強烈建議您測試該升級，以確認您所有的應用程式皆可正確運作：

1. 準備好版本相容的參數群組。

   如果您使用的是自訂資料庫執行個體或資料庫叢集參數群組，您會有兩個選擇：

   1. 指定預設資料庫執行個體、資料庫叢集參數群組，或同時為新資料庫引擎版本指定這兩者。

   1. 為新資料庫引擎版本建立自己的自訂參數群組。

1. 檢查是否存在無效資料庫並捨棄任何存在的無效資料庫。

   `pg_database` 目錄中的 `datconnlimit` 欄包含值 `-2`，用於將 `DROP DATABASE` 操作期間中斷的任何資料庫標記為無效。使用以下查詢來檢查是否存在無效的資料庫。

   ```
   SELECT
       datname
   FROM
       pg_database
   WHERE
       datconnlimit = - 2;
   ```

   如果查詢傳回資料庫名稱，則這些資料庫無效。使用 `DROP DATABASE invalid_db_name` 陳述式捨棄無效的資料庫。您可以使用下列動態陳述式來捨棄所有無效的資料庫。

   ```
   SELECT
       'DROP DATABASE ' || quote_ident(datname) || ';'
   FROM
       pg_database
   WHERE
       datconnlimit = -2 \gexec
   ```

1. 檢查是否有不支援的使用：
   + 嘗試升級之前，遞交或轉返所有開啟的備妥交易。您可以使用下列查詢，以確認在執行個體上沒有開啟的備妥交易：

     ```
     SELECT count(*) FROM pg_catalog.pg_prepared_xacts;
     ```
   + 嘗試升級之前，請移除所有 *reg\$1* 資料類型的使用。除了 `regtype` 和 `regclass`，您無法升級 *reg\$1* 資料類型。pg\$1upgrade 公用程式 (由 Amazon Aurora 用於進行升級) 無法保留此資料類型。若要進一步了解此公用程式，請參閱 PostgreSQL 文件中的 [pg\$1upgrade](https://www.postgresql.org/docs/current/pgupgrade.html)。

     您可以使用下列查詢，確認在每個資料庫中未使用不支援的 *reg\$1* 資料類型：

     ```
     SELECT count(*) FROM pg_catalog.pg_class c, pg_catalog.pg_namespace n, pg_catalog.pg_attribute a 
       WHERE c.oid = a.attrelid 
           AND NOT a.attisdropped 
           AND a.atttypid IN ('pg_catalog.regproc'::pg_catalog.regtype, 
                              'pg_catalog.regprocedure'::pg_catalog.regtype, 
                              'pg_catalog.regoper'::pg_catalog.regtype, 
                              'pg_catalog.regoperator'::pg_catalog.regtype, 
                              'pg_catalog.regconfig'::pg_catalog.regtype, 
                              'pg_catalog.regdictionary'::pg_catalog.regtype) 
           AND c.relnamespace = n.oid 
           AND n.nspname NOT IN ('pg_catalog', 'information_schema');
     ```
   + 如果您要升級安裝了 `pgRouting` 擴充功能的 Aurora PostgreSQL 版本 10.18 或更高版本的資料庫叢集，請在升級到版本 12.4 或更高版本之前刪除該擴充功能。

     如果您要升級安裝了 `pg_repack` 1.4.3 版的 Aurora PostgreSQL 10.x 版本，請在升級到更高版本之前刪除該擴充功能。

1. 檢查 template1 和 template0 資料庫。

   如需成功升級，template1 和 template0 資料庫必須存在，且應列為範本。若要檢查此情況，請使用下列命令：

   ```
   SELECT datname, datistemplate FROM pg_database; 
                           
   datname    | datistemplate
   -----------+---------------
   template0  | t
   rdsadmin   | f
   template1  | t
   postgres   | f
   ```

   在命令輸出中，template1 和 template0 資料庫的 `datistemplate` 值應該是 `t`。

1. 刪除邏輯複寫槽。

   如果 Aurora PostgreSQL 資料庫叢集正在使用任何邏輯複寫槽，則升級程序將無法繼續。邏輯複寫槽通常用於短期資料遷移任務，例如使用 AWS DMS 或 將資料表從資料庫複寫到資料湖、BI 工具或其他目標。升級之前，請確保您知道任何現有邏輯複寫槽的用途，並確認可以刪除它們。您可以使用下列查詢來檢查邏輯複寫槽：

   ```
   SELECT * FROM pg_replication_slots;
   ```

   如果邏輯複寫槽仍在使用，則不應刪除它們，也無法繼續升級。但是，如果不需要邏輯複寫槽，可以使用以下 SQL 加以刪除：

   ```
   SELECT pg_drop_replication_slot(slot_name);
   ```

   使用 `pglogical` 延伸模組的邏輯複寫案例也必須具有已從發佈者節點捨棄的插槽，才能在該節點上順利進行主要版本升級。不過，您可以在升級之後，從訂閱者節點重新啟動複寫程序。如需詳細資訊，請參閱[在重大升級之後重新建立邏輯複寫](Appendix.PostgreSQL.CommonDBATasks.pglogical.recover-replication-after-upgrade.md)。

1. 執行備份。

   升級程序會在升級期間建立資料庫叢集的資料庫叢集快照。如果您也想在升級程序之前執行手動備份，請參閱 [建立資料庫叢集快照](USER_CreateSnapshotCluster.md) 以取得詳細資訊。

1. 在執行主要版本升級之前，請將某些擴充功能套件升級至最新可用版本。需更新的擴充功能包含下列：
   + `pgRouting`
   + `postgis_raster`
   + `postgis_tiger_geocoder`
   + `postgis_topology`
   + `address_standardizer`
   + `address_standardizer_data_us`

   針對目前已安裝的每個擴充功能執行下列命令。

   ```
   ALTER EXTENSION PostgreSQL-extension UPDATE TO 'new-version';
   ```

   如需詳細資訊，請參閱[升級 PostgreSQL 延伸](USER_UpgradeDBInstance.Upgrading.ExtensionUpgrades.md)。若要深入了解 PostGIS 升級，請參閱 [步驟 6：升級 PostGIS 擴充功能](Appendix.PostgreSQL.CommonDBATasks.PostGIS.md#Appendix.PostgreSQL.CommonDBATasks.PostGIS.Update)。

1. 若要升級至第 11.x 版，請先捨棄不支援的擴充功能套件，然後再執行主要版本升級。需捨棄的擴充功能套件包括：
   + `chkpass`
   + `tsearch2` 

1. 根據您的目標版本捨棄 `unknown` 資料類型。

   PostgreSQL 10 版不支援 `unknown` 資料類型。如果第 9.6 版資料庫使用 `unknown` 資料類型，升級至版本 10 會顯示錯誤訊息，如下所示。

   ```
   Database instance is in a state that cannot be upgraded: PreUpgrade checks failed: 
   The instance could not be upgraded because the 'unknown' data type is used in user tables. 
   Please remove all usages of the 'unknown' data type and try again."
   ```

   若要尋找資料庫中的 `unknown` 資料類型，以便移除這類資料欄或將其變更為支援的資料類型，請對每個資料庫使用下列 SQL 程式碼。

   ```
   SELECT n.nspname, c.relname, a.attname
       FROM pg_catalog.pg_class c,
       pg_catalog.pg_namespace n,
       pg_catalog.pg_attribute a
       WHERE c.oid = a.attrelid AND NOT a.attisdropped AND
       a.atttypid = 'pg_catalog.unknown'::pg_catalog.regtype AND
       c.relkind IN ('r','m','c') AND
       c.relnamespace = n.oid AND
       n.nspname !~ '^pg_temp_' AND
       n.nspname !~ '^pg_toast_temp_' AND n.nspname NOT IN ('pg_catalog', 'information_schema');
   ```

1. 執行停用試轉升級。

   強烈建議您先在生產資料庫的複本上測試主要版本升級，然後再在生產資料庫上嘗試此升級。您可以監控複本測試執行個體上的執行計劃，以查看任何可能的執行計劃迴歸，並評估其效能。若要建立複本測試執行個體，您可以從最近快照還原資料庫或複製您的資料庫。如需更多詳細資訊，請參閱「[從快照還原](aurora-restore-snapshot.md#aurora-restore-snapshot.Restoring)」或「[複製 Amazon Aurora 資料庫叢集的一個磁碟區](Aurora.Managing.Clone.md)」。

   如需更多詳細資訊，請參閱 [將 Aurora PostgreSQL 引擎升級為新的主要版本](#USER_UpgradeDBInstance.Upgrading.Manual)。

1. 升級您的生產執行個體。

   當試轉主要版本升級成功時，您應該就能放心升級生產資料庫。如需詳細資訊，請參閱[將 Aurora PostgreSQL 引擎升級為新的主要版本](#USER_UpgradeDBInstance.Upgrading.Manual)。

   
**注意**  
在升級程序期間，Aurora PostgreSQL 會取得資料庫叢集快照。在此升級期間，您無法進行叢集的時間點還原。之後，您可以執行時間點還原，以便還原至升級開始之前的時間，以及執行個體的自動快照已完成之後的時間。但是，您無法執行時間點還原至先前的次要版本。

   如需有關升級進行中的資訊，您可以使用 Amazon RDS 查看 pg\$1upgrade 公用程式產生的兩個記錄。這兩個記錄是 `pg_upgrade_internal.log` 和 `pg_upgrade_server.log`。Amazon Aurora 會將時間戳記附加至這些日誌的檔案名稱。您可以如同檢視任何其他日誌一般檢視這些日誌。如需更多詳細資訊，請參閱 [監控 Amazon Aurora 日誌檔案](USER_LogAccess.md)。

1. 升級 PostgreSQL 擴充功能套件。PostgreSQL 升級程序並不會升級任何 PostgreSQL 擴充功能套件。如需詳細資訊，請參閱[升級 PostgreSQL 延伸](USER_UpgradeDBInstance.Upgrading.ExtensionUpgrades.md)。

## 升級後建議
<a name="USER_UpgradeDBInstance.PostgreSQL.MajorVersion.Upgrade.postupgrade"></a>

完成主要版本升級後，建議您執行下列動作：
+ 執行 `ANALYZE` 操作以重新整理 `pg_statistic` 資料表。您應為所有 PostgreSQL 資料庫執行個體上的每個資料庫執行此操作。主要版本升級期間不會傳輸最佳化工具統計數字，因此您需要重新產生所有統計數字以避免效能問題。在沒有任何參數的情況下執行命令，以產生目前資料庫中所有一般資料表的統計數字，如下所示：

  ```
  ANALYZE VERBOSE;
  ```

  您可選用 `VERBOSE` 旗標，但使用時會顯示進度。如需詳細資訊，請參閱 PostgreSQL 說明文件中的 [ANALYZE](https://www.postgresql.org/docs/10/sql-analyze.html)。

  分析特定資料表而非使用 ANALYZE VERBOSE 時，請對每個資料表執行 ANALYZE 命令，如下所示：

  ```
  ANALYZE table_name;
  ```

  對於分割資料表，一律分析父資料表。此程序：
  + 自動取樣所有分割區的資料列
  + 以遞迴方式更新每個分割區的統計資料
  + 在父層級維護基本的規劃統計資料

  雖然父資料表不會存放實際資料，但分析它們對於查詢最佳化至關重要。僅在個別分割區上執行 ANALYZE 可能會導致查詢效能不佳，因為最佳化工具不會擁有有效跨分割區規劃所需的完整統計資料。
**注意**  
升級後在系統上執行 ANALYZE，以避免效能問題。
+ 如果您升級到 PostgreSQL 第 10 版，請在您擁有的任何雜湊索引上執行 `REINDEX`。雜湊索引在第 10 版中已變更並且必須重建。若要定位無效的雜湊索引，請針對每個包含雜湊索引的資料庫執行下列 SQL。

  ```
  SELECT idx.indrelid::regclass AS table_name, 
     idx.indexrelid::regclass AS index_name 
  FROM pg_catalog.pg_index idx
     JOIN pg_catalog.pg_class cls ON cls.oid = idx.indexrelid 
     JOIN pg_catalog.pg_am am ON am.oid = cls.relam 
  WHERE am.amname = 'hash' 
  AND NOT idx.indisvalid;
  ```
+ 建議您使用類似的工作負載，在升級後的資料庫上測試您的應用程式，以驗證一切是否依預期運作。確認升級之後，您可以刪除該測試執行個體。

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

啟動新主要版本的升級程序時，Aurora PostgreSQL 會先擷取 Aurora 資料庫叢集的快照，再對叢集進行任何變更。此快照僅針對主要版本升級而建立，而不是針對次要版本升級。升級程序完成後，您可以在 RDS 主控台的 **Snapshots** (快照) 下方所列手動快照之中找到此快照。快照名稱包含作為其字首的 `preupgrade`、您 Aurora PostgreSQL 資料庫叢集的名稱、來源版本、目標版本，以及日期與時間戳記，如以下範例所示。

```
preupgrade-docs-lab-apg-global-db-12-8-to-13-6-2022-05-19-00-19
```

升級完成後，如有需要，您可以使用 Aurora 建立並儲存在手動快照清單中的快照，將資料庫叢集還原至其先前的版本。

**提示**  
一般來說，快照提供許多方法可將 Aurora 資料庫叢集還原到各種時間點。如需了解詳細資訊，請參閱 [從資料庫叢集快照還原](aurora-restore-snapshot.md) 和 [將資料庫叢集還原至指定時間](aurora-pitr.md)。但是，Aurora PostgreSQL 不支援使用快照還原至先前的次要版本。

在主要版本升級程序中，Aurora 會配置磁碟區，並複製來源 Aurora PostgreSQL 資料庫叢集。如果升級因任何原因而失敗，Aurora PostgreSQL 會使用複製來復原升級。在配置某個來源磁碟區的複製項超過 15 個時，後續的複製項會變成完整副本，且需要更長的時間。這可能也會導致升級程序花費更長的時間。如果 Aurora PostgreSQL 復原升級，請注意下列事項：
+ 您可能會看到原始磁碟區和升級期間配置的複製磁碟區的計費項目和指標。Aurora PostgreSQL 會在叢集備份保留期間超過升級時間後清理額外的磁碟區。
+ 來自此叢集的下一個跨區域快照複製將是完整副本，而非遞增複本。

為了安全地將構成叢集的資料庫執行個體升級，Aurora PostgreSQL 使用 pg\$1upgrade 公用程式。寫入器升級完成後，每個讀取器執行個體都會發生短暫的中斷，而它會升級為新的主要版本。若要進一步了解此 PostgreSQL 公用程式，請參閱 PostgreSQL 文件中的 [pg\$1upgrade](https://www.postgresql.org/docs/current/pgupgrade.html)。

您可以使用 AWS 管理主控台 AWS CLI、 或 RDS API，將 Aurora PostgreSQL 資料庫叢集升級至新版本。

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

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

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.Upgrading.Manual.CLI"></a>

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

**Example**  
針對 Linux、macOS 或 Unix：  

```
1. aws rds modify-db-cluster \
2.     --db-cluster-identifier mydbcluster \
3.     --engine-version new_version \
4.     --allow-major-version-upgrade \
5.     --no-apply-immediately
```
在 Windows 中：  

```
1. aws rds modify-db-cluster ^
2.     --db-cluster-identifier mydbcluster ^
3.     --engine-version new_version ^
4.     --allow-major-version-upgrade ^
5.     --no-apply-immediately
```

### RDS API
<a name="USER_UpgradeDBInstance.Upgrading.Manual.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) 操作。
+ `AllowMajorVersionUpgrade` – 此為當 `EngineVersion` 參數是不同於資料庫叢集目前主要版本的主要版本時的必要旗標。
+ `ApplyImmediately` – 指出要立即套用變更，或等到下個維護時段再套用。若要立即套用變更，請將值設為 `true`。若要在下一次維護時段套用變更，請將值設為 `false`。

### 全域資料庫的主要升級
<a name="USER_UpgradeDBInstance.PostgreSQL.GlobalDB"></a>

對於 Aurora 全域資料庫叢集，此升級程序會同時升級構成 Aurora 全域資料庫的所有資料庫叢集。這麼做是為了確保每個資料庫叢集都會執行相同的 Aurora PostgreSQL 版本。這也會確定對系統資料表、資料檔案格式等所做的任何變更都會自動複寫至所有次要叢集。

若要將全域資料庫叢集升級成 Aurora PostgreSQL 的新要主版本，建議您在升級版本上測試您的應用程式，詳情請參閱 [測試執行生產資料庫叢集升級到新主要版本的程序](#USER_UpgradeDBInstance.PostgreSQL.MajorVersion.Upgrade.preliminary)。在升級之前，請務必為 AWS 區域 Aurora 全域資料庫中的每個 準備資料庫叢集參數群組和資料庫參數群組設定，如 [step 1.](#step-1) 的 中所述[測試執行生產資料庫叢集升級到新主要版本的程序](#USER_UpgradeDBInstance.PostgreSQL.MajorVersion.Upgrade.preliminary)。

如果 Aurora PostgreSQL 全域資料庫叢集已為其 `rds.global_db_rpo` 參數設定復原點目標 (RPO)，在升級前請務必先重設該參數。如果 RPO 已開啟，則主要版本升級程序不會運作。依預設，此參數為關閉。如需 Aurora PostgreSQL 全域資料庫和 RPO 的詳細資訊，請參閱 [管理 Aurora PostgreSQL – 全域資料庫的 RPO](aurora-global-database-disaster-recovery.md#aurora-global-database-manage-recovery)。

如果您確認您的應用程式在新版本的試用部署中可以如預期執行，則可以啟動升級程序。若要這麼做，請參閱[將 Aurora PostgreSQL 引擎升級為新的主要版本](#USER_UpgradeDBInstance.Upgrading.Manual)。請務必從 RDS 主控台的 **Databases** (資料庫) 清單中選擇最頂層項目，亦即 **Global database** (全域資料庫)，如下圖所示。

![\[此主控台圖顯示 Aurora 全域資料庫、Aurora Serverless 資料庫叢集，以及另一個 Aurora PostgreSQL 資料庫叢集\]](http://docs.aws.amazon.com/zh_tw/AmazonRDS/latest/AuroraUserGuide/images/aurora-global-database-plus-other.png)


與任何修改一樣，當出現提示時，您可以確認讓此程序繼續進行。

![\[此主控台圖顯示確認進行 Aurora PostgreSQL 資料庫叢集升級程序的提示\]](http://docs.aws.amazon.com/zh_tw/AmazonRDS/latest/AuroraUserGuide/images/aurora-global-db-apg-upgrade-2.png)


您不是使用主控台啟動升級程序，而是使用 AWS CLI 或 RDS API。如同主控台，您是對 Aurora 全域資料庫叢集上進行操作，而不是對其任何組成部分，如下所示：
+ 使用 [modify-global-cluster](https://docs.aws.amazon.com/cli/latest/reference/rds/modify-global-cluster.html) AWS CLI 命令，透過使用 開始 Aurora 全域資料庫的升級 AWS CLI。
+ 使用 [ModifyGlobalCluster](https://docs.aws.amazon.com/AmazonRDS/latest/APIReference/API_ModifyGlobalCluster.html) API 啟動升級。

# 執行次要版本升級
<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`。

# 升級 PostgreSQL 延伸
<a name="USER_UpgradeDBInstance.Upgrading.ExtensionUpgrades"></a>

將 Aurora PostgreSQL 資料庫叢集升級至新的主要或次要版本不會同時升級 PostgreSQL 延伸模組。對於大多數的延伸模組，您可以在主要或次要版本升級完成後升級延伸模組。但在某些情況下，在升級 Aurora PostgreSQL 資料庫引擎之前要先升級擴充功能。如需詳細資訊，請參閱 [測試執行生產資料庫叢集升級到新主要版本的程序](USER_UpgradeDBInstance.PostgreSQL.MajorVersion.md#USER_UpgradeDBInstance.PostgreSQL.MajorVersion.Upgrade.preliminary) 中的 [list of extensions to update](USER_UpgradeDBInstance.PostgreSQL.MajorVersion.md#upgrade-extensions)。

安裝 PostgreSQL 擴充功能需要 `rds_superuser` 權限。通常，`rds_superuser` 會將特定擴充功能的許可委派給相關使用者 (角色)，以促進管理給定的延伸模組。這意味著升級 Aurora PostgreSQL 資料庫叢集中所有擴充功能的這項任務會涉及許多不同的使用者 (角色)。如果要使用指令碼自動執行升級程序，請特別記得這一點。如需 PostgreSQL 權限和角色的詳細資訊，請參閱 [Amazon Aurora PostgreSQL 的安全性](AuroraPostgreSQL.Security.md)。

**注意**  
如需如何更新 PostGIS 擴充功能的相關資訊，請參閱 [使用 PostGIS 擴充功能管理空間資料](Appendix.PostgreSQL.CommonDBATasks.PostGIS.md) ([步驟 6：升級 PostGIS 擴充功能](Appendix.PostgreSQL.CommonDBATasks.PostGIS.md#Appendix.PostgreSQL.CommonDBATasks.PostGIS.Update))。  
若要更新 `pg_repack` 擴充功能，請捨棄該擴充功能，然後在升級的資料庫執行個體中建立新版本。如需詳細資訊，請參閱 `pg_repack` 說明文件中的 [pg\$1repack 安裝](https://reorg.github.io/pg_repack/)。

若要在引擎升級後更新擴充功能，請使用 `ALTER EXTENSION UPDATE` 命令。

```
ALTER EXTENSION extension_name UPDATE TO 'new_version';
```

若要列出目前已安裝的擴充功能，請在下列命令中使用 PostgreSQL [pg\$1extension](https://www.postgresql.org/docs/current/catalog-pg-extension.html) 目錄。

```
SELECT * FROM pg_extension;
```

若要檢視您的安裝可用的特定擴充功能版本的清單，請在下列命令中使用 PostgreSQL [ pg\$1available\$1extension\$1versions](https://www.postgresql.org/docs/current/view-pg-available-extension-versions.html) 檢視。

```
SELECT * FROM pg_available_extension_versions;
```

## 替代藍/綠升級技術
<a name="USER_UpgradeDBInstance.Upgrading.BlueGreen"></a>

在某些情況下，您的首要目標是立即從舊叢集切換至升級的叢集。在這類情況下，您也可以使用多步驟程序，並排執行新舊叢集。在這裡，您會將舊叢集的資料複寫到新叢集，直至您準備好接管新叢集。如需詳細資訊，請參閱[使用 Amazon Aurora 藍/綠部署進行資料庫更新](blue-green-deployments.md)。