PostgreSQL コミュニティが下位バージョン (9.4 や 10 など) のメンテナンスを停止するにつれて、これらの下位バージョンを使い続けることにはリスクが伴います。RDS PostgreSQL インスタンスを下位バージョンから上位バージョンにアップグレードする必要がある場合、または上位バージョンの新機能を使用したい場合は、メジャーバージョンアップグレードを実行することをお勧めします。
ソリューションの概要
PostgreSQL コミュニティは、機能とパフォーマンスが向上したメジャーバージョンを定期的にリリースしています。下位バージョンは徐々にサポートを失い、パフォーマンスとセキュリティのリスクをもたらします。アップグレードのリスクを軽減しながら新しいバージョンの改善の恩恵を受けられるように、RDS PostgreSQL はメジャーバージョンのアップグレードをサポートしています。
RDS PostgreSQL のメジャーバージョンアップグレード機能は、アップグレード後も元のインスタンスの設定 (ホワイトリスト、パラメーター設定、プラグインなど) を保持します (新しいバージョンでサポートされていないプラグインとパラメーターを除く)。さらに、暗号化された RDS PostgreSQL インスタンスはメジャーバージョンアップグレード後も暗号化されたままであり、暗号鍵は変更されません。
アップグレードソリューション | インプレースアップグレード | ブルーグリーンデプロイメント | ゼロダウンタイム | ||
切り替え | 切り替えなし | ||||
シナリオ | アップグレード後のインスタンスを元のインスタンスと同一にしたい場合。アップグレード中にインスタンスが読み取り専用になることを許容できる場合。 | 元のインスタンスを保持したい場合。アップグレード中にインスタンスが読み取り専用になることを許容できる場合。 |
| ビジネスで長時間のダウンタイムを許容できない場合。 |
|
実装原理 | pg_upgrade を使用して元のインスタンスをターゲットバージョンにアップグレードします。すべてのメタデータは保持されます。 | 新しいインスタンスに復元し、pg_upgrade を使用してターゲットバージョンにアップグレードします。元のエンドポイントは自動的に新しいインスタンスに切り替えられます。 | 新しいインスタンスに復元し、pg_upgrade を使用してターゲットバージョンにアップグレードします。 | pg_upgrade を使用して元のインスタンスをターゲットバージョンにアップグレードします。増分更新は、ネイティブの論理レプリケーションを通じて実行されます。 | 新しい RDS PostgreSQL インスタンスを手動で作成し、非同期の論理レプリケーションを使用してデータ移行を行います。 |
メリット | 元のインスタンスの構成と課金情報が完全に保持されます。 |
| 元のインスタンスに影響を与えることなく、アップグレード検証のための独立した環境を提供します。 |
|
|
デメリット | 古いインスタンスに基づくロールバックをサポートしていません。 | 元のインスタンスの課金情報を継承しません。 | なし。 |
|
|
元のインスタンスの読み取り専用時間 | 通常は数分です。 | 通常は数分です。 | なし。 | 通常は数秒です。 | 通常は数秒です。 |
コスト | アップグレード費用はかかりません。 | 新しいインスタンスは従量課金です。 | 新しいインスタンスは従量課金です。 | アップグレード費用はかかりません。 |
|
インプレースアップグレードモードの場合、アップグレード中にインスタンスが推奨仕様を満たしていないと、システムは自動的に推奨仕様を使用してアップグレードを試みます。これにより、数分レベルの読み取り専用状態と、追加の 1 秒間の一時的な切断が発生します。アップグレードする前に、メジャーバージョンアップグレードチェックレポートでインスタンス仕様に関するアラートに対処することをお勧めします。
メジャーバージョンアップグレード
方法 1: インプレースアップグレードモードによるメジャーバージョンのアップグレード
方法 2: ブルーグリーンデプロイメントモードによるメジャーバージョンのアップグレード
方法 3: ゼロダウンタイムモードによるメジャーバージョンのアップグレード
方法 4: DTS データ移行によるアップグレード
上記 3 つの方法でアップグレードできない場合、またはアップグレード中にデータ検証を実行したい場合は、DTS データ移行を通じてアップグレードできます。