

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

# RDS for PostgreSQL 資料庫引擎的升級
<a name="USER_UpgradeDBInstance.PostgreSQL"></a>

您可以為 PostgreSQL 資料庫管理兩種類型的升級：
+ 作業系統更新 - Amazon RDS 偶爾可能需要更新資料庫的基礎作業系統，才能套用安全修正或作業系統變更。您可以使用 RDS 主控台、 AWS Command Line Interface (AWS CLI) 或 RDS API 來決定 Amazon RDS 何時套用作業系統更新。如需作業系統更新的詳細資訊，請參閱[將更新套用至資料庫執行個體](USER_UpgradeDBInstance.Maintenance.md#USER_UpgradeDBInstance.OSUpgrades)。
+  資料庫引擎升級 - 當 Amazon RDS 支援新版本的資料庫引擎時，您可以將資料庫升級為新版本。

此環境中的*資料庫*是 RDS for PostgreSQL 資料庫執行個體或多可用區域資料庫叢集。

PostgreSQL 資料庫有兩種引擎升級︰主要版本升級和次要版本升級。

**主要版本升級**  
*主要版本升級* 可能包含與現有應用程式回溯不相容的資料庫變更。因此，您必須手動執行資料庫的主要版本升級。您可以透過修改資料庫執行個體或多可用區域資料庫叢集來啟動主要版本升級。在您執行主要的版本升級之前，建議您依照 [選擇 RDS for PostgreSQL 升級的主要版本](USER_UpgradeDBInstance.PostgreSQL.MajorVersion.md) 中所述的步驟操作。  
Amazon RDS 會以下列方式處理多可用區域主要版本升級：  
+ **多可用區域資料庫執行個體部署** - Amazon RDS 會同時升級主要和任何待命執行個體。升級完成後，您的資料庫可能會有幾分鐘無法使用。
+ **多可用區域資料庫叢集部署** - Amazon RDS 會同時升級讀取器和寫入器執行個體。升級完成後，您的資料庫可能會有幾分鐘無法使用。
如果您升級具有區域內僅供讀取複本的資料庫執行個體，Amazon RDS 會將複本與主要資料庫執行個體一起升級。  
Amazon RDS 不會升級多可用區域資料庫叢集讀取複本。如果您執行多可用區域資料庫叢集的主要版本升級，則其僅供讀取複本的複寫狀態會變更為**已終止**。升級完成後，您必須手動刪除並重新建立僅供讀取複本。  
您可以使用藍/綠部署，將主要版本升級所需的停機時間降至最低。如需詳細資訊，請參閱 [使用 Amazon RDS 藍/綠部署進行資料庫更新](blue-green-deployments.md)。

**次要版本升級**  
反之，*次要版本升級* 只包含與現有應用程式回溯相容的變更。您可以藉由修改資料庫來手動啟動次要版本升級。或者，您也可以在建立或修改資料庫時啟用**自動次要版本升級**選項。這麼做代表 Amazon RDS 會在測試並核准新版本後自動升級您的資料庫。  
Amazon RDS 會以下列方式處理多可用區域次要版本升級：  
+ **多可用區域資料庫執行個體部署** - Amazon RDS 會同時升級主要和任何待命執行個體。升級完成後，您的資料庫可能會有幾分鐘無法使用。
+ **多可用區域資料庫叢集部署** – Amazon RDS 會逐一升級讀取器資料庫執行個體。然後，其中一個讀取器資料庫執行個體會切換為新的寫入器資料庫執行個體。Amazon RDS 接著會升級舊的寫入器執行個體 (現在是讀取器執行個體)。多可用區域資料庫叢集通常可將次要版本升級的停機時間縮短到約 35 秒。與 RDS Proxy 搭配使用時，可以進一步將停機時間縮短到一秒或更短。如需詳細資訊，請參閱[Amazon RDS Proxy](rds-proxy.md)。或者，您可以使用開放原始碼資料庫代理，例如 [ProxySQL](https://aws.amazon.com/blogs/database/achieve-one-second-or-less-of-downtime-with-proxysql-when-upgrading-amazon-rds-multi-az-deployments-with-two-readable-standbys/)、[PgBouncer](https://aws.amazon.com/blogs/database/fast-switchovers-with-pgbouncer-on-amazon-rds-multi-az-deployments-with-two-readable-standbys-for-postgresql/) 或 [AWS 進階 JDBC 包裝函式驅動程式](https://aws.amazon.com/blogs/database/achieve-one-second-or-less-downtime-with-the-advanced-jdbc-wrapper-driver-when-upgrading-amazon-rds-multi-az-db-clusters/)。
如果您的資料庫含有僅供讀取複本，則在升級來源執行個體或叢集之前，您必須先升級所有僅供讀取複本。  
如需詳細資訊，請參閱[RDS for PostgreSQL 的自動次要版本升級](USER_UpgradeDBInstance.PostgreSQL.Minor.md)。如需有關手動執行次要版本升級的詳細資訊，請參閱[手動升級引擎版本](USER_UpgradeDBInstance.Upgrading.md#USER_UpgradeDBInstance.Upgrading.Manual)。

如需資料庫引擎版本和取代資料庫引擎版本之政策的詳細資訊，請參閱 Amazon RDS 常見問答集中的[資料庫引擎版本](https://aws.amazon.com/rds/faqs/#Database_Engine_Versions)。

**Topics**
+ [PostgreSQL 升級考量](#USER_UpgradeDBInstance.PostgreSQL.Considerations)
+ [尋找有效的升級目標](#USER_UpgradeDBInstance.PostgreSQL.FindingTargets)
+ [PostgreSQL 版本編號](USER_UpgradeDBInstance.PostgreSQL.VersionID.md)
+ [RDS for PostgreSQL 中的 RDS 版本號碼](USER_UpgradeDBInstance.PostgreSQL.rds.version.md)
+ [選擇 RDS for PostgreSQL 升級的主要版本](USER_UpgradeDBInstance.PostgreSQL.MajorVersion.md)
+ [如何執行 RDS for PostgreSQL 的主要版本升級](USER_UpgradeDBInstance.PostgreSQL.MajorVersion.Process.md)
+ [RDS for PostgreSQL 的自動次要版本升級](USER_UpgradeDBInstance.PostgreSQL.Minor.md)
+ [升級 RDS for PostgreSQL 資料庫中的 PostgreSQL 延伸模組](USER_UpgradeDBInstance.PostgreSQL.ExtensionUpgrades.md)
+ [使用事件監控 RDS for PostgreSQL 引擎升級](USER_UpgradeDBInstance.PostgreSQL.Monitoring.md)

## PostgreSQL 升級考量
<a name="USER_UpgradeDBInstance.PostgreSQL.Considerations"></a>

為了安全地升級您的資料庫，Amazon RDS 會使用 [PostgreSQL 文件](https://www.postgresql.org/docs/current/pgupgrade.html)中所述的 `pg_upgrade` 公用程式

如果您的備份保留期大於 0，則 Amazon RDS 會在升級程序期間建立兩個資料庫快照。第一個資料庫快照是屬於完成任何升級變更之前的資料庫。如果資料庫升級失敗，您可以還原此快照，以建立執行舊版本的資料庫。升級完成後會建立第二個資料庫快照。這些資料庫快照會在備份保留期間過期後自動刪除。

**注意**  
您必須將資料庫的備份保留期設定為大於 0 的數字，Amazon RDS 才會在升級過程中拍攝資料庫快照。若要變更資料庫執行個體的備份保留期，請參閱 [修改 Amazon RDS 資料庫執行個體](Overview.DBInstance.Modifying.md)。您無法為多可用區域資料庫叢集設定自訂備份保留期。

當您執行資料庫執行個體的主要版本升級時，任何區域內僅供讀取複本也都會自動升級。升級工作流程開始後，僅供讀取複本會等待主要資料庫執行個體上的 `pg_upgrade` 順利完成。然後，主要資料庫執行個體升級會等待僅供讀取複本升級完成。在升級完成之前，可能會遭遇停機。當您執行多可用區域資料庫叢集的主要版本升級時，其僅供讀取複本的複寫狀態會變更為**已終止**。

升級完成後，您就無法還原為舊版的資料庫引擎。若您想要恢復前一版本，請從升級前拍攝的資料庫快照進行還原，以建立新的資料庫。

## 尋找有效的升級目標
<a name="USER_UpgradeDBInstance.PostgreSQL.FindingTargets"></a>

當您使用 AWS 管理主控台 來升級資料庫時，會顯示資料庫的有效升級目標。您也可以使用下列 AWS CLI 命令來識別資料庫的有效升級目標：

針對 Linux、macOS 或 Unix：

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

在 Windows 中：

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

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

針對 Linux、macOS 或 Unix：

```
aws rds describe-db-engine-versions \
  --engine postgres \
  --engine-version 16.1 \
  --query "DBEngineVersions[*].ValidUpgradeTarget[*].{EngineVersion:EngineVersion}" --output text
```

在 Windows 中：

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