

# RDS for PostgreSQL DB エンジンのアップグレード
<a name="USER_UpgradeDBInstance.PostgreSQL"></a>

PostgreSQL データベースで管理できる 2 つのタイプのアップグレードがあります。
+ OS の更新 - では、Amazon RDS は、セキュリティの修正や OS の変更を適用するために、データベースの基になるオペレーティングシステムの更新が必要になる場合があります。RDS コンソール、AWS Command Line Interface (AWS CLI)、または RDS API を使用して、Amazon RDS に OS の更新を適用するタイミングを指定できます。OS 更新接続の詳細については、「[DB インスタンスへの更新の適用](USER_UpgradeDBInstance.Maintenance.md#USER_UpgradeDBInstance.OSUpgrades)」を参照してください
+  データベースエンジンの更新 - Amazon RDS が新バージョンのデータベースエンジンをサポートすると、データベースをその新バージョンにアップグレードできます。

このコンテキストの*データベース*とは、RDS for PostgreSQL DB インスタンスまたはマルチ AZ DB クラスターです。

PostgreSQL データベースのエンジンアップグレードには、メジャーバージョンアップグレードとマイナーバージョンアップグレードの 2 種類があります。

**メジャーバージョンのアップグレード**  
*メジャーバージョンのアップグレード*には、既存のアプリケーションとの下位互換性のないデータベースの変更が含まれる場合があります。そのため、データベースのメジャーバージョンアップグレードは手動で実行する必要があります。メジャーバージョンアップグレードをスタートするには、DB インスタンスまたはマルチ AZ DB クラスターを変更します。メジャーバージョンアップグレードを行う前に、「[RDS for PostgreSQL のメジャーバージョンアップグレードの選択](USER_UpgradeDBInstance.PostgreSQL.MajorVersion.md)」で説明されているステップを実行することをお勧めします。  
Amazon RDS は、次の方法でマルチ AZ メジャーバージョンのアップグレードを処理します。  
+ **マルチ AZ DB インスタンスデプロイ** – Amazon RDS はプライマリインスタンスとスタンバイインスタンスを同時にアップグレードします。アップグレードが完了するまで、データベースが数分間使用できない場合があります。
+ **マルチ AZ DB クラスターデプロイ** – Amazon RDS はリーダーインスタンスとライターインスタンスを同時にアップグレードします。アップグレードが完了するまで、データベースが数分間使用できない場合があります。
リージョン内リードレプリカがある DB インスタンスをアップグレードする場合、Amazon RDS はプライマリ DB インスタンスと共にレプリカもアップグレードします。  
Amazon RDS は、マルチ AZ DB クラスターのリードレプリカをアップグレードしません。マルチ AZ DB クラスターのメジャーバージョンアップグレードを実行すると、リードレプリカのレプリケーション状態が**終了**に変わります。アップグレードの完了後、リードレプリカを手動で削除し、再作成する必要があります。  
ブルー/グリーンデプロイを使用することで、メジャーバージョンアップグレードに必要なダウンタイムを最小限に抑えることができます。詳細については、「[データベース更新のために Amazon RDS ブルー/グリーンデプロイを使用する](blue-green-deployments.md)」を参照してください。

**マイナーバージョンのアップグレード**  
それに対して、*マイナーバージョンのアップグレード*に含まれるのは、既存のアプリケーションとの下位互換性がある変更のみです。マイナーバージョンのアップグレードを手動で行うには、データベースを変更します。または、データベースの作成時または変更時に、**[マイナーバージョン自動アップグレード]** を有効にすることができます。これにより、Amazon RDS は、新しいバージョンがテストおよび承認されると、データベースを自動的にアップグレードします。  
Amazon RDS は、マルチ AZ マイナーバージョンアップグレードを次の方法で処理します。  
+ **マルチ AZ DB インスタンスデプロイ** – Amazon RDS はプライマリインスタンスとスタンバイインスタンスを同時にアップグレードします。アップグレードが完了するまで、データベースが数分間使用できない場合があります。
+ **マルチ AZ DB クラスターデプロイ** – Amazon RDS はリーダー DB インスタンスを一度に 1 つずつアップグレードします。その後、リーダー DB インスタンスの 1 つが新しいライター DB インスタンスに切り替わります。次に、Amazon RDS は、古いライターインスタンス (今ではリーダーインスタンス) をアップグレードします。マルチ AZ DB クラスターは、通常、マイナーバージョンアップグレードのダウンタイムを約 35 秒に短縮します。RDS Proxy と併用すると、ダウンタイムをさらに 1 秒以下に短縮できます。詳細については、「[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 Advanced JDBC Wrapper Driver](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 FAQ の「[データベースエンジンのバージョン](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 はアップグレードプロセス中に 2 つの DB スナップショットを収得します。初期の DB スナップショットは、アップグレードの変更が行われる前のデータベースから作成されます。アップグレードがデータベースに対して失敗した場合は、このスナップショットを復元して、以前のバージョンを実行するデータベースを作成できます。アップグレードの完了後に 2 番目の DB スナップショットが作成されます。これらの DB スナップショットは、バックアップ保持期間が終了すると自動的に削除されます。

**注記**  
データベースのバックアップ保持期間を 0 より大きく設定した場合にのみ、Amazon RDS は、アップグレード中に DB スナップショットを作成します。DB インスタンスのバックアップ保持期間を変更するには、「[Amazon RDS DB インスタンスを変更する](Overview.DBInstance.Modifying.md)」を参照してください。マルチ AZ DB クラスターのカスタムバックアップ保持期間を設定することはできません。

DB インスタンスのメジャーバージョンアップグレードを実行すると、任意のリージョン内リードレプリカも自動的にアップグレードされます。アップグレードワークフローがスタートされると、リードレプリカは、`pg_upgrade` がプライマリ DB インスタンスで正常に完了するまで待ちます。次に、プライマリ DB インスタンスのアップグレードは、リードレプリカのアップグレードが完了するまで待ちます。アップグレードが完了するまで停止が発生します。マルチ AZ DB クラスターののメジャーバージョンを実行すると、すべてのリードレプリカのレプリケーション状態が**終了**に変わります。

アップグレードが完了したら、DB エンジンの前のバージョンに戻すことはできません。前のバージョンに戻す必要がある場合は、アップグレードの前に作成された DB スナップショットを復元して、新しいデータベースを作成します。

## 有効なアップグレードターゲットの検索
<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
```