RDS for PostgreSQL DB エンジンのアップグレード
PostgreSQL データベースで管理できる 2 つのタイプのアップグレードがあります。
-
OS の更新 - では、Amazon RDS は、セキュリティの修正や OS の変更を適用するために、データベースの基になるオペレーティングシステムの更新が必要になる場合があります。RDS コンソール、AWS Command Line Interface (AWS CLI)、または RDS API を使用して、Amazon RDS に OS の更新を適用するタイミングを指定できます。OS 更新接続の詳細については、「DB インスタンスのアップデートを適用する」を参照してください
-
データベースエンジンの更新 - Amazon RDS が新バージョンのデータベースエンジンをサポートすると、データベースをその新バージョンにアップグレードできます。
このコンテキストのデータベースとは、RDS for PostgreSQL DB インスタンスまたはマルチ AZ DB クラスターです。
PostgreSQL データベースのエンジンアップグレードには、メジャーバージョンアップグレードとマイナーバージョンアップグレードの 2 種類があります。
- メジャーバージョンのアップグレード
-
メジャーバージョンのアップグレードには、既存のアプリケーションとの下位互換性のないデータベースの変更が含まれる場合があります。そのため、データベースのメジャーバージョンアップグレードは手動で実行する必要があります。メジャーバージョンアップグレードをスタートするには、DB インスタンスまたはマルチ AZ DB クラスターを変更します。メジャーバージョンアップグレードを行う前に、「 RDS for PostgreSQL のメジャーバージョンアップグレードの選択」で説明されているステップを実行することをお勧めします。
リージョン内リードレプリカがある DB インスタンスをアップグレードする場合、Amazon RDS はプライマリ DB インスタンスと共にレプリカもアップグレードします。
Amazon RDS は、マルチ AZ DB クラスターのリードレプリカをアップグレードしません。マルチ AZ DB クラスターのメジャーバージョンアップグレードを実行すると、リードレプリカのレプリケーション状態が終了に変わります。アップグレードの完了後、リードレプリカを手動で削除し、再作成する必要があります。
ヒント
ブルー/グリーンデプロイを使用することで、メジャーバージョンアップグレードに必要なダウンタイムを最小限に抑えることができます。詳細については、「データベース更新のために Amazon RDS ブルー/グリーンデプロイを使用する」を参照してください。
- マイナーバージョンのアップグレード
-
それに対して、マイナーバージョンのアップグレードに含まれるのは、既存のアプリケーションとの下位互換性がある変更のみです。マイナーバージョンのアップグレードを手動で行うには、データベースを変更します。または、データベースの作成時または変更時に、[マイナーバージョン自動アップグレード] を有効にすることができます。これにより、Amazon RDS は、新しいバージョンがテストおよび承認されると、データベースを自動的にアップグレードします。ご使用の PostgreSQL データベースでリードレプリカを使用している場合は、ソースインスタンスまたはクラスターをアップグレードする前に、すべてのリードレプリカをアップグレードする必要があります。
データベースがマルチ AZ DB インスタンスデプロイの場合、Amazon RDS はプライマリとスタンバイのインスタンスを同時にアップグレードします。したがって、アップグレードが完了するまでデータベースを使用できない場合があります。データベースがマルチ AZ DB クラスターデプロイの場合、Amazon RDS はリーダー DB インスタンスを一度に 1 つずつアップグレードします。その後、リーダー DB インスタンスの 1 つが新しいライター DB インスタンスに切り替わります。次に、Amazon RDS は、古いライターインスタンス (今ではリーダーインスタンス) をアップグレードします。
注記
マルチ AZ DB インスタンスデプロイのマイナーバージョンアップグレードのダウンタイムは、数分続く場合があります。マルチ AZ DB クラスターは、通常、マイナーバージョンアップグレードのダウンタイムを約 35 秒に短縮します。RDS Proxy と併用すると、ダウンタイムをさらに 1 秒以下に短縮できます。詳細については、「Amazon RDS Proxy の使用」を参照してください。または、ProxySQL
、PgBouncer 、または MySQL 用 AWS JDBC ドライバー などのオープンソースデータベースプロキシを使用することもできます。 詳細については、「RDS for PostgreSQL のマイナーバージョンの自動アップグレード」を参照してください。マイナーバージョンアップグレードの手動での実行に関する詳細は、「エンジンバージョンの手動アップグレード」を参照してください。
データベースエンジンのバージョン、およびデータベースエンジンのバージョンを廃止するためのポリシーの詳細については、Amazon RDS FAQ の「データベースエンジンのバージョン
トピック
PostgreSQL アップグレードに関する考慮事項
データベースを安全にアップグレードするために、Amazon RDS では、「PostgreSQL ドキュメントpg_upgrade
ユーティリティを使用します。
バックアップ保存期間が 0 を超える値の場合、Amazon RDS はアップグレードプロセス中に 2 つの DB スナップショットを収得します。初期の DB スナップショットは、アップグレードの変更が行われる前のデータベースから作成されます。アップグレードがデータベースに対して失敗した場合は、このスナップショットを復元して、以前のバージョンを実行するデータベースを作成できます。アップグレードの完了後に 2 番目の DB スナップショットが作成されます。
注記
データベースのバックアップ保持期間を 0 より大きく設定した場合にのみ、Amazon RDS は、アップグレード中に DB スナップショットを作成します。DB インスタンスのバックアップ保持期間を変更するには、「Amazon RDS DB インスタンスを変更する」を参照してください。マルチ AZ DB クラスターのカスタムバックアップ保持期間を設定することはできません。
DB インスタンスのメジャーバージョンアップグレードを実行すると、任意のリージョン内リードレプリカも自動的にアップグレードされます。アップグレードワークフローがスタートされると、リードレプリカは、pg_upgrade
がプライマリ DB インスタンスで正常に完了するまで待ちます。次に、プライマリ DB インスタンスのアップグレードは、リードレプリカのアップグレードが完了するまで待ちます。アップグレードが完了するまで停止が発生します。マルチ AZ DB クラスターののメジャーバージョンを実行すると、すべてのリードレプリカのレプリケーション状態が終了に変わります。
アップグレードが完了したら、DB エンジンの前のバージョンに戻すことはできません。前のバージョンに戻す必要がある場合は、アップグレードの前に作成された DB スナップショットを復元して、新しいデータベースを作成します。
有効なアップグレードターゲットの検索
AWS Management Console を使用してデータベースをアップグレードする場合、データベースの有効なアップグレードターゲットが表示されます。次の 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 バージョン 12.13 データベースの有効なアップグレードターゲットを特定するには、次の AWS CLI コマンドを実行します。
Linux、macOS、Unix の場合:
aws rds describe-db-engine-versions \ --engine postgres \ --engine-version 12.13 \ --query "DBEngineVersions[*].ValidUpgradeTarget[*].{EngineVersion:EngineVersion}" --output text
Windows の場合:
aws rds describe-db-engine-versions ^ --engine postgres ^ --engine-version 12.13 ^ --query "DBEngineVersions[*].ValidUpgradeTarget[*].{EngineVersion:EngineVersion}" --output text