PostgreSQL インスタンス用 Amazon Relational Database Service (Amazon RDS) のメジャーバージョンアップグレードにかかるダウンタイムを計算したいと考えています。
簡単な説明
PostgreSQL DB インスタンス用 Amazon RDS のメジャーバージョンアップグレードを実行すると、次のことが起こります。
- アップグレード前のスナップショットが、バックアップとロールバックに対して作成されます。
- アップグレードの準備のため、インスタンスがシャットダウンされます。
- pg_upgrade ユーティリティを使用して、インスタンスでアップグレードジョブを実行します。
- アップグレード後のスナップショットが作成され、インスタンスでネットワークが再構成されます。
メジャーバージョンのアップグレードには内部データストレージ形式の変更が含まれるため、ダウンタイムが発生し、完了までの推定時間が得られない場合があります。アップグレード前のバックアップは、増分変更、** pg_upgrade** データベースのサイズ、データベースとデータベースオブジェクト (テーブルなど) の数に基づいています。
解決方法
インスタンスのメジャーバージョンアップグレードを実行する前にダウンタイムを計算するには、別のインスタンスをテストし、現在のインスタンスの設定とデータをシミュレートします。別のインスタンスをテストするには、次の手順を実行します。
注: 以下の手順により、メジャーバージョンアップグレードプロセスおよびアップグレードに必要な時間の概算が得られます。
- 現在の DB インスタンスの手動スナップショットを作成します。
注: 手動スナップショットを作成したら、インスタンスの低速読み込みを完了させるか、インスタンスの事前ウォームアップを完了させます。
- テストインスタンスを作成するために、スナップショットを復元します。ダウンタイムを正確に見積もるには、テストインスタンスの設定が本番インスタンスと同じであることを確認してください。
- テストインスタンスを目的のバージョンにアップグレードします。
- pg_statistic テーブルを更新するには、ANALYZE を実行します。
- 結果を比較したら、プロダクションアップグレードを選択します。
読み取り専用レプリカを使用した Amazon RDS for PostgreSQL インスタンスのアップグレードに要するダウンタイム
メジャーバージョンアップグレードを実行すると、Amazon RDS は AWS リージョンとプライマリ DB インスタンス内の読み取り専用レプリカを同時にアップグレードします。読み取り専用レプリカにより、プライマリインスタンスのアップグレード処理時間が長くなる場合があります。
レプリカのアップグレードを防ぐには、アップグレードプロセスを開始する前に、レプリカをスタンドアロンインスタンスに昇格させます。こうすると、アップグレードのダウンタイムが短縮され、アップグレード完了までの時間を正確に把握できます。
ラージオブジェクトを使用する Amazon RDS for PostgreSQL インスタンスのアップグレードのダウンタイム
メジャーバージョンアップグレードを実行すると、データベース内のすべてのオブジェクトがスキャンされます。データベース内のオブジェクトの数によって、アップグレード処理時間が決まります。また、Amazon RDS for PostgreSQL のラージオブジェクト (pg_largeobject) により、アップグレードのダウンタイムが大幅に増加する場合があります。
ラージオブジェクトを含むインスタンスのアップグレードダウンタイムを減らすには、ラージオブジェクトを確認して、それらのラージオブジェクトを削除できるかどうかを判断してください。vacuumlo ユーティリティツールを使用して、孤立したラージオブジェクトを識別して削除することもできます。vacuumlo ユーティリティツールは、ローカルまたは Amazon Elastic Compute Cloud (Amazon EC2) インスタンスにダウンロードして実行できます。詳細については、PostgreSQL ウェブサイトで vacuumlo について確認してください。
関連情報
Amazon RDS を PostgreSQL のメジャーバージョンとマイナーバージョンにアップグレードするためのベストプラクティス
DB インスタンスエンジンバージョンのアップグレード