Amazon RDS の PostgreSQL DB エンジンのアップグレード - Amazon Relational Database Service

Amazon RDS の PostgreSQL DB エンジンのアップグレード

PostgreSQL DB インスタンスで管理できる 2 つのタイプのアップグレードがあります。

  • OS の更新 - では、Amazon RDS は、セキュリティの修正や OS の変更を適用するために、DB インスタンスの基になるオペレーティングシステムの更新が必要になる場合があります。RDS コンソール、AWS Command Line Interface (AWS CLI)、または RDS API を使用して、Amazon RDS に OS の更新を適用するタイミングを指定できます。OS 更新接続の詳細については、「DB インスタンスの更新を適用する」を参照してください

  • データベースエンジンの更新 - Amazon RDS が新バージョンのデータベースエンジンをサポートすると、DB インスタンスをその新バージョンにアップグレードできます。

新しいバージョンのデータベースエンジンが Amazon RDS でサポートされている場合は、DB インスタンスをその新しいバージョンにアップグレードできます。PostgreSQL DB インスタンスのアップグレードには、メジャーバージョンのアップグレードとマイナーバージョンのアップグレードの 2 種類あります。

メジャーバージョンのアップグレード

メジャーバージョンのアップグレードには、既存のアプリケーションとの下位互換性のないデータベースの変更が含まれる場合があります。そのため、DB インスタンスのメジャーバージョンアップグレードは手動で実行する必要があります。メジャーバージョンアップグレードをスタートするには、DB インスタンスを変更します。ただし、メジャーバージョンのアップグレードを行う前に、「 PostgreSQL のメジャーバージョンアップグレードの選択 」で説明されているステップを実行することをお勧めします。メジャーバージョンのアップグレード中に、Amazon RDS はプライマリ DB インスタンスと共にすべてのリージョン内リードレプリカもアップグレードします。

マイナーバージョンのアップグレード

それに対して、マイナーバージョンのアップグレードに含まれるのは、既存のアプリケーションとの下位互換性がある変更のみです。マイナーバージョンのアップグレードを手動でスタートするには、DB インスタンスを変更します。または、DB インスタンスの作成時または変更時に、[Auto minor version upgrade (マイナーバージョン自動アップグレード)] を有効にすることができます。これにより、Amazon RDS によって新しいバージョンがテストおよび承認されると、DB インスタンスが自動的にアップグレードされます。PostgreSQL DB インスタンスがリードレプリカを使用している場合は、プライマリインスタンスをアップグレードする前に、まずすべてのリードレプリカをアップグレードする必要があります。DB インスタンスがマルチ AZ 配置にある場合、ライターとスタンバイレプリカは同時にアップグレードされます。したがって、アップグレードが完了するまで DB インスタンスを使用できない場合があります。詳細については、「PostgreSQL のマイナーバージョンの自動アップグレード」を参照してください。マイナーバージョンアップグレードの手動での実行に関する詳細は、「エンジンバージョンの手動アップグレード」を参照してください。

データベースエンジンのバージョン、およびデータベースエンジンのバージョンを廃止するためのポリシーの詳細については、Amazon RDS FAQ のデータベースエンジンのバージョンを参照してください。

PostgreSQL のアップグレードの概要

DB インスタンスを安全にアップグレードするために、Amazon RDS では、「PostgreSQL ドキュメント」で示されている pg_upgrade ユーティリティを使用します。

AWS Management Console を使用して DB インスタンスをアップグレードする場合、DB インスタンスの有効なアップグレードターゲットが表示されます。次の AWS CLI コマンドを使用して、DB インスタンスの有効なアップグレードターゲットを特定することもできます。

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 バージョン 10.11 DB インスタンスの有効なアップグレードターゲットを特定するには、次のAWS CLIのコマンドを実行します。

Linux、macOS、Unix の場合:

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

Windows の場合:

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

バックアップ保存期間が 0 を超える値の場合、Amazon RDS はアップグレードプロセス中に 2 つの DB スナップショットを収得します。初期の DB スナップショットは、アップグレードの変更が行われる前の DB インスタンスから作成されます。アップグレードがデータベースに対して機能しない場合は、このスナップショットを復元して、以前のバージョンを実行する DB インスタンスを作成できます。アップグレードの完了後に 2 番目の DB スナップショットが作成されます。

注記

DB インスタンスのバックアップ保持期間を 0 より大きく設定した場合にのみ、Amazon RDS は、アップグレード中に DB スナップショットを作成します。バックアップ保持期間を変更するには、「Amazon RDS DB インスタンスを変更する」を参照してください。

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

DB インスタンスがマルチ AZ 配置にある場合は、プライマリライター DB インスタンスとスタンバイ DB インスタンスのいずれもアップグレードされます。ライターとスタンバイ DB インスタンスは同時にアップグレードされます。

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

PostgreSQL のバージョン番号

PostgreSQL データベースエンジンのバージョン番号は、次のように付けられています。

  • PostgreSQL バージョン 10 以降では、エンジンのバージョン番号はメジャー.マイナーの形式になります。メジャーバージョンの番号は、バージョン番号の整数の部分です。マイナーバージョンの番号は、バージョン番号の小数の部分です。

    メジャーバージョンのアップグレードでは、10.マイナーから 11.マイナーのように、バージョン番号の整数の部分が大きくなります。

  • 10 より前のバージョンの PostgreSQL では、エンジンのバージョン番号はメジャー.メジャー.マイナーの形式になります。エンジンのメジャーバージョンの番号は、バージョン番号の整数と 1 つ目の小数の部分の両方です。例えば、9.6 はメジャーバージョンです。マイナーバージョンの番号は、バージョン番号の 3 つ目の部分です。例えば、バージョン 9.6.12 では、12 がマイナーバージョンの番号です。

    メジャーバージョンのアップグレードでは、バージョン番号の主要な部分が大きくなります。例えば、9.6.12 から 10.11 へのアップグレードはメジャーバージョンのアップグレードであり、9.610 はメジャーバージョン番号です。

PostgreSQL のメジャーバージョンアップグレードの選択

メジャーバージョンのアップグレードには、以前のバージョンのデータベースと下位互換性のない変更が含まれる場合があります。新しい機能により、既存のアプリケーションが適切に動作しなくなることがあります。このため、Amazon RDS では、メジャーバージョンアップグレードは自動的に適用されません。メジャーバージョンアップグレードを実行するには、DB インスタンスを手動で変更します。本稼働 DB インスタンスにアップグレードを適用する前に、アップグレードを徹底的にテストしてアプリケーションが正常に動作することを確認してください。PostgreSQL メジャーバージョンアップグレードを行うには、「メジャーバージョンのアップグレードを実施する方法」に記載されているステップを実施することをお勧めします。

PostgreSQL DB インスタンスを次のメジャーバージョンにアップグレードすると、DB インスタンスに関連付けられているリードレプリカも次のメジャーバージョンにアップグレードされます。場合によっては、アップグレード時に上位のメジャーバージョンにスキップできます。アップグレードでメジャーバージョンがスキップされると、リードレプリカもターゲットのメジャーバージョンにアップグレードされます。他のメジャーバージョンをスキップするバージョン 11 へのアップグレードには、特定の制限があります。詳細については、メジャーバージョンのアップグレードを実施する方法 で説明する手順を参照してください。

PostgreSQL のほとんどの拡張機能は、PostgreSQL エンジンのアップグレード時にアップグレードされません。拡張機能は、個別にアップグレードする必要があります。詳細については、「PostgreSQL のエクステンションのアップグレード」を参照してください。

次の AWS CLI クエリを実行すると、RDS for PostgreSQL DB インスタンスで利用できるメジャーバージョンを確認できます。

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

使用可能なすべてのバージョンに対するこのクエリの結果の概要を次の表に示します。バージョン番号のアスタリスク (*) は、バージョンが非推奨であることを示します。現在のバージョンが非推奨の場合は、最新のマイナーバージョンのアップグレードターゲットにアップグレードするか、そのバージョンで利用可能な他のアップグレードターゲットにアップグレードすることをお勧めします。RDS for PostgreSQL 9.6 の非推奨化の詳細については、「PostgreSQL バージョン 9.6 の廃止」を参照してください。

現在のソースバージョン (* 非推奨) 最新のマイナーバージョンアップグレードターゲット 最新のメジャーバージョンアップグレードターゲット その他の利用可能なアップグレードターゲット
14.1 14.2
13.6 14.2
13.5 14.2 14.1 13.6
13.4 14.2 14.1 13.6 13.5
13.3 14.2 14.1 13.6 13.5 13.4
13.2*、13.1* 13.6 14.2 14.1 13.5 13.4 13.3
12.10 14.2 13.6
12.9 14.1 13.6 13.5 12.10
12.8 13.6 13.5 13.4 12.10 12.9
12.7 13.6 13.5 13.4 13.3 12.10 12.9 12.8
12.6*、12.5*、12.4*、12.3*、12.2*、12.1* 12.10 14.2 13.6 12.9 12.8 12.7
11.15 14.2 13.6 12.10
11.14 14.1 13.5 12.10 12.9 11.15
11.13 13.4 12.10 12.9 12.8 11.15 11.14
11.12 13.3 12.10 12.9 12.8 12.7 11.15 11.14 11.13
11.11*、11.11*、11.10*、11.9*、11.8*、11.7*、11.6*、11.5*、11.4*、11.2、11.1* 11.15 14.2 13.6 12.10 11.14 11.13 11.12
10.20 14.2 13.6 12.10 11.15
10.19 14.1 13.5 12.9 11.15 11.14 10.20
10.18 13.4 12.8 11.15 11.14 11.13 10.20 10.19
10.17 13.3 12.7 11.15 11.14 11.13 11.12 10.20 10.19 10.18
10.16*、10.15*、10.14*、10.13*、10.12*、10.11*、10.10*、10.9*、10.7*、10.6*、10.5*、10.4*、10.3*、10.1* 10.20 14.2 13.6 12.10 11.15 10.19 10.18 10.17
9.6.24 14.1 13.5 12.9 11.14 10.20 10.19
9.6.23 13.4 12.8 11.13 10.20 10.19 10.18 9.6.24
9.6.22 13.3 12.7 11.12 10.20 10.19 10.18 10.17 9.6.24 9.6.23
9.6.19*、9.6.18*、9.6.17*、9.6.16*、9.6.15*、9.6.14*、9.6.12*、9.6.11*9.6.10*、9.6.9*、9.6.8*、9.6.6*、9.6.5*、9.6.3*、9.6.2*、9.6.1* 9.6.24 14.1 13.5 12.9 11.14 10.20 10.19 9.6.23 9.6.22

メジャーバージョンのアップグレードを実施する方法

Amazon RDS PostgreSQL の DB インスタンスをアップグレードする際は、次の手順を実行することをお勧めします。

  1. バージョンとの互換性を持つパラメータグループの準備 - カスタムパラメータグループを使用している場合は、2 つのオプションがあります。新しい DB エンジンバージョンのデフォルトのパラメータグループを指定します。または、新しい DB エンジンバージョンの独自のカスタムパラメータグループを作成します。詳細については、「パラメータグループを使用する」を参照してください

  2. サポートされていない DB インスタンスクラスを確認する - データベースのインスタンスクラスが、アップグレード先の PostgreSQL バージョンと互換性があることを確認します。詳細については、「DB インスタンスクラスでサポートされている DB エンジン」を参照してください。

  3. サポートされていない使用の確認

    • 準備済みのトランザクション - アップグレードを実行する前に、すべての準備済みのトランザクションをコミットまたはロールバックします。

      次のクエリを使用して、開いている準備済みのトランザクションがインスタンスにないことを確認します。

      SELECT count(*) FROM pg_catalog.pg_prepared_xacts;
    • Reg* データ型 - アップグレードの実施前に reg* データ型の使用をすべて削除します。regtyperegclass を除き、reg* データ型をアップグレードすることはできません。このデータ型は、Amazon RDS でのアップグレードで使用されているため、pg_upgrade ユーティリティで維持することはできません。

      サポートされていない reg* データ型が使用されていないことを確認するには、データベースごとに次のクエリを使用します。

      SELECT count(*) FROM pg_catalog.pg_class c, pg_catalog.pg_namespace n, pg_catalog.pg_attribute a WHERE c.oid = a.attrelid AND NOT a.attisdropped AND a.atttypid IN ('pg_catalog.regproc'::pg_catalog.regtype, 'pg_catalog.regprocedure'::pg_catalog.regtype, 'pg_catalog.regoper'::pg_catalog.regtype, 'pg_catalog.regoperator'::pg_catalog.regtype, 'pg_catalog.regconfig'::pg_catalog.regtype, 'pg_catalog.regdictionary'::pg_catalog.regtype) AND c.relnamespace = n.oid AND n.nspname NOT IN ('pg_catalog', 'information_schema');

  4. 論理レプリケーションスロットの処理 — インスタンスに論理レプリケーションスロットがある場合、アップグレードは実行できません。論理レプリケーションスロットは通常、データベースからデータレイク、BI ツール、およびその他のターゲットへのテーブルのレプリケートおよび AWS DMS に使用されます。アップグレードする前に、使用中の論理レプリケーションスロットの目的を確認し、削除しても問題ないことを確認してください。論理レプリケーションスロットがまだ使用されている場合は、それらを削除しないでください。また、その場合、アップグレードを続行することはできません。

    論理レプリケーションスロットが不要な場合は、次の SQL を使用して削除できます。

    SELECT * FROM pg_replication_slots; SELECT pg_drop_replication_slot(slot_name);
  5. リードレプリカの処理 - アップグレードでは、プライマリ DB インスタンスと共にリージョン内リードレプリカもアップグレードされます。

    リードレプリカを個別にアップグレードすることはできません。個別にアップグレードできるとすると、プライマリ DB インスタンスとレプリカ DB インスタンスの PostgreSQL メジャーバージョンが一致しないという状況が生じる可能性があります。ただし、リードレプリカをアップグレードすると、プライマリ DB インスタンスのダウンタイムが増加する場合があります。リードレプリカのアップグレードを防ぐには、レプリカをスタンドアロンインスタンスに昇格させるか、アップグレードプロセスをスタートする前にレプリカを削除します。

    アップグレードプロセスでは、リードレプリカの現在のパラメータグループに基づいて、リードレプリカのパラメータグループが再作成されます。アップグレードの完了後にのみ、リードレプリカを変更してカスタムパラメータグループをリードレプリカに適用できます。

    Virtual Private Cloud (VPC) プラットフォームのリードレプリカはアップグレードされますが、EC2-Classic プラットフォームのレプリカはアップグレードされません。EC2-Classic レプリカは、アップグレードプロセスが完了しても、レプリケーション終了状態のままになります。DB インスタンスを EC2-Classic プラットフォームから VPC に移動するには、「VPC 外の DB インスタンスを VPC 内に移行する」を参照してください。リードレプリカの詳細については、「Amazon RDS での PostgreSQL リードレプリカの使用」を参照してください。

  6. バックアップの実行 - データベースの復元ポイントを認識できるように、メジャーバージョンアップグレードを実行する前にはバックアップを実行しておくことをお勧めします。バックアップ保持期間を 0 より大きい値に設定すると、アップグレードプロセスにおいて、アップグレード前後に DB インスタンスの DB スナップショットが作成されます。バックアップ保持期間を変更するには、「Amazon RDS DB インスタンスを変更する」を参照してください。手動でバックアップを実行するには、「DB スナップショットの作成」を参照してください。

  7. メジャーバージョンのアップグレード前に特定のエクステンションを更新する - アップグレードでメジャーバージョンをスキップする場合、メジャーバージョンのアップグレードに特定のエクステンションを更新する必要があります。バージョン 9.5.x または 9.6.x からバージョン 11.x 以降へのアップグレードでは、メジャーバージョンがスキップされます。更新するエクステンションは以下のとおりです。

    • address_standardizer

    • address_standardizer_data_us

    • postGIS

    • postgis_tiger_geocoder

    • postgis_topology

    使用しているエクステンションごとに次のコマンドを実行します。

    ALTER EXTENSION PostgreSQL-extension UPDATE TO 'new-version'

    詳細については、「PostgreSQL のエクステンションのアップグレード」を参照してください。

  8. メジャーバージョンのアップグレード前の特定のエクステンションの削除 - メジャーバージョンをバージョン 11.x にスキップするアップグレードは、pgRouting エクステンションの更新をサポートしていません。バージョン 9.4.x、9.5.x、または 9.6.x からバージョン 11.x へのアップグレードでは、メジャーバージョンがスキップされます。pgRouting エクステンションを削除し、アップグレード後に互換性のあるバージョンに再インストールできます。更新できるエクステンションのバージョンについては、サポートされている PostgreSQL 拡張機能バージョン をご覧ください。

    tsearch2 および chkpass のエクステンションは、PostgreSQL バージョン 11 以降では現在サポートされていません。バージョン 11.x にアップグレードする場合は、アップグレードの前に、tsearch2 および chkpass エクステンションを削除します。

  9. unknown データ型の削除 - ターゲットのバージョンに応じて、unknown データ型を削除します。

    PostgreSQL バージョン 10 では、unknown データ型のサポートは終了しています。バージョン 9.6 のデータベースで unknown データ型を使用している場合、バージョン 10 にアップグレードすると次のようなエラーメッセージが表示されます。

    Database instance is in a state that cannot be upgraded: PreUpgrade checks failed: The instance could not be upgraded because the 'unknown' data type is used in user tables. Please remove all usages of the 'unknown' data type and try again."

    データベース内の unknown データ型を検索して、問題の列を削除したり、サポートされているデータ型に変更したりするには、次の SQL を使用します。

    SELECT DISTINCT data_type FROM information_schema.columns WHERE data_type ILIKE 'unknown';
  10. リハーサル更新の実行 - プロダクションデータベースのアップグレードを行う前に、プロダクションデータベースの複製でメジャーバージョンアップグレードをテストすることを強くお勧めします。テストインスタンスの複製を作成するには、データベースを最新スナップショットから復元するか、ポイントインタイムの復元を実行して復元可能な直近の時間でデータベースを復元します。詳細については、「スナップショットからの復元」または「特定の時点への DB インスタンスの復元」を参照してください。アップグレードの実施の詳細については、「エンジンバージョンの手動アップグレード」を参照してください。

    バージョン 9.6 の DB インスタンスをバージョン 10 にアップグレードする場合、PostgreSQL 10 では、デフォルトで並列クエリが有効になることに注意してください。テスト DB インスタンスの max_parallel_workers_per_gather パラメータを 2 に変更することで、アップグレードするに並列処理による影響をテストできます。

    注記

    default.postgresql10 DB パラメータグループでは、max_parallel_workers_per_gather パラメータのデフォルト値は 2 です。

    詳細については、「PostgreSQL ドキュメント」の「Parallel Query」(並列クエリ) を参照してください。バージョン 10 で並列処理を無効にするには、max_parallel_workers_per_gather パラメータを 0 に設定します。

    メジャーバージョンのアップグレード中、public データベースと template1 データベース、およびインスタンスのすべてのデータベースの public スキーマは、一時的に名前が変更されます。これらのオブジェクトは、元の名前とランダム文字列を組み合わせた名前でログに表示されます。この文字列は、メジャーバージョンアップグレード時に localeowner などのカスタム設定が保持されるように追加されます。アップグレードが完了したら、これらのオブジェクト名は元の名前に戻ります。

    注記

    メジャーアップグレードのプロセス中に、インスタンスのポイントインタイムの復元を実行することはできません。Amazon RDS でアップグレードが完了すると、インスタンスの自動バックアップが実施されます。ポイントインタイムの復元を実行できるのは、アップグレードのスタート前およびインスタンスの自動バックアップ完了後です。

  11. 事前チェック手順エラーでアップグレードが失敗した場合、問題を解決します - メジャーバージョンのアップグレードプロセス中に、Amazon RDS for PostgreSQL は初期に事前チェック手順を実行して、アップグレードの失敗の原因となる可能性のある問題を特定します。事前チェック手順は、インスタンス内のすべてのデータベースにわたって潜在的な互換性のない条件をすべてチェックします。

    事前チェックで問題が発生した場合、アップグレード事前チェックが失敗したことを示すログイベントが作成されます。事前確認プロセスの詳細は、DB インスタンスのすべてのデータベースの pg_upgrade_precheck.log と名前が付けられたアップグレードログにあります。Amazon RDS では、ファイル名にタイムスタンプが追加されます。ログの表示の詳細については、「Amazon RDS ログファイルのモニタリング」を参照してください。

    リードレプリカのアップグレードが事前チェックで失敗した場合、失敗したリードレプリカのレプリケーションは中断され、リードレプリカは終了状態になります。リードレプリカを削除し、アップグレードしたプライマリ DB インスタンスに基づいて、新しいリードレプリカを再作成します。

    事前チェックログで特定されたすべての問題を解決してから、メジャーバージョンのアップグレードを再試行します。事前チェックログの例は次のようになります。

    ------------------------------------------------------------------------ Upgrade could not be run on Wed Apr 4 18:30:52 2018 ------------------------------------------------------------------------- The instance could not be upgraded from 9.6.11 to 10.6 for the following reasons. Please take appropriate action on databases that have usage incompatible with the requested major engine version upgrade and try the upgrade again. * There are uncommitted prepared transactions. Please commit or rollback all prepared transactions.* One or more role names start with 'pg_'. Rename all role names that start with 'pg_'. * The following issues in the database 'my"million$"db' need to be corrected before upgrading:** The ["line","reg*"] data types are used in user tables. Remove all usage of these data types. ** The database name contains characters that are not supported by RDS for PostgreSQL. Rename the database. ** The database has extensions installed that are not supported on the target database version. Drop the following extensions from your database: ["tsearch2"]. * The following issues in the database 'mydb' need to be corrected before upgrading:** The database has views or materialized views that depend on 'pg_stat_activity'. Drop the views.
  12. データベースのアップグレード中にリードレプリカのアップグレードが失敗した場合は、問題を解決します - 失敗したリードレプリカは incompatible-restore 状態になり、レプリケーションは DB インスタンスで終了します。リードレプリカを削除し、アップグレードしたプライマリ DB インスタンスに基づいて、新しいリードレプリカを再作成します。

    リードレプリカのアップグレードは、次の理由で失敗することがあります。

    • 待機時間が経過してもプライマリ DB インスタンスにキャッチアップできなかった。

    • ストレージ不足、互換性のない復元など、最終状態または互換性のないライフサイクル状態であった。

    • プライマリ DB インスタンスのアップグレードのスタート時に、リードレプリカで別のマイナーバージョンのアップグレードが実行されていた。

    • リードレプリカで互換性のないパラメータを使用していた。

    • リードレプリカがプライマリ DB インスタンスと通信できず、データフォルダを同期できなかった。

  13. 本番稼働用インスタンスのアップグレード - リハーサルのメジャーバージョンアップグレードに成功すれば、自信を持って本番稼働用のプロダクションデータベースをアップグレードできます。詳細については、「エンジンバージョンの手動アップグレード」を参照してください。

  14. 操作を実行して ANALYZE テーブルを更新します。これは、すべての PostgreSQL DB インスタンスのすべてのデータベースに対して行う必要があります。Optimizer の統計情報はメジャーバージョンのアップグレード中には転送されないため、パフォーマンスの問題を回避するためにすべての統計情報を再生成する必要があります。次のようにパラメータを指定せずにコマンドを実行して、現在のデータベース内のすべての標準テーブルの統計情報を生成します。

    ANALYZE VERBOSE

    VERBOSE フラグはオプションですが、使用することで進行状況を表示できます。詳細については、「PostgreSQL ドキュメント」の「ANALYZE」を参照してください。

    注記

    パフォーマンスの問題を回避するため、アップグレード後にシステムで ANALYZE を実行してください。

メジャーバージョンのアップグレードが完了したら、次のことをお勧めします。

  • PostgreSQL アップグレードでは、PostgreSQL エクステンションはアップグレードされません。エクステンションをアップグレードするには、「PostgreSQL のエクステンションのアップグレード」を参照してください。

  • オプションで、Amazon RDS を使用して、pg_upgrade ユーティリティによって作成される 2 つのログを表示できます。表示できるのは pg_upgrade_internal.log および pg_upgrade_server.log です。Amazon RDS では、これらのログのファイル名にタイムスタンプが追加されます。これらのログも、他のログと同様、表示できます。詳細については、「Amazon RDS ログファイルのモニタリング」を参照してください。

    Amazon CloudWatch Logs にアップグレードログをアップロードすることもできます。詳細については、「Amazon CloudWatch Logs への PostgreSQL ログの発行」を参照してください。

  • すべてが期待どおりに機能することを確認するには、同様のワークロードでアップグレードされたデータベースでアプリケーションをテストします。アップグレードが確認されたら、このテストインスタンスを削除できます。

PostgreSQL のマイナーバージョンの自動アップグレード

DB インスタンスの作成時または変更時に、[マイナーバージョン自動アップグレード] を有効にした場合、DB インスタンスは自動的にアップグレードされます。

RDS for PostgreSQL の各メジャーバージョンでは、RDS によって 1 つのマイナーバージョンが自動アップグレードバージョンとして指定されます。Amazon RDS でマイナーバージョンのテストと承認が完了すると、メンテナンスウィンドウの間にマイナーバージョンアップグレードが自動的に行われます。RDS では、新しくリリースされたマイナーバージョンが自動アップグレードバージョンとして自動的に設定されることはありません。RDS によって新しい自動アップグレードバージョンが指定される前に、以下のような複数の基準が考慮されます。

  • 既知のセキュリティの問題

  • PostgreSQL コミュニティバージョンのバグ

  • マイナーバージョンがリリースされてからのフリート全体の安定性

次のAWS CLIコマンドを使用して、特定のAWSリージョンで指定された PostgreSQL マイナーバージョンの現在の自動マイナーアップグレードターゲットバージョンを確認できます。

Linux、macOS、Unix の場合:

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

Windows の場合:

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

例えば、次のAWS CLIコマンドは、米国東部 (オハイオ) AWSリージョン (us-east-2) の PostgreSQL マイナーバージョン 10.11 の自動マイナーアップグレードターゲットを決定します。

Linux、macOS、Unix の場合:

aws rds describe-db-engine-versions \ --engine postgres \ --engine-version 10.11 \ --region us-east-2 \ --query "DBEngineVersions[*].ValidUpgradeTarget[*].{AutoUpgrade:AutoUpgrade,EngineVersion:EngineVersion}" \ --output table

Windows の場合:

aws rds describe-db-engine-versions ^ --engine postgres ^ --engine-version 10.11 ^ --region us-east-2 ^ --query "DBEngineVersions[*].ValidUpgradeTarget[*].{AutoUpgrade:AutoUpgrade,EngineVersion:EngineVersion}" ^ --output table

以下のような出力が生成されます。

---------------------------------- | DescribeDBEngineVersions | +--------------+-----------------+ | AutoUpgrade | EngineVersion | +--------------+-----------------+ | False | 10.12 | | False | 10.13 | | False | 10.14 | | False | 10.15 | | False | 10.16 | | True | 10.17 | | False | 10.18 | | False | 11.6 | | False | 11.7 | | False | 11.8 | | False | 11.9 | | False | 11.10 | | False | 11.11 | | False | 11.12 | | False | 11.13 | +--------------+-----------------+

この例では、AutoUpgrade 値は、True for PostgreSQL バージョン 10.17 です。したがって、自動マイナーアップグレードターゲットは PostgreSQL バージョン 10.17 であり、出力で強調表示されています。

PostgreSQL DB インスタンスは、以下の基準を満たしている場合、メンテナンスウィンドウの間に自動的にアップグレードされます。

  • DB インスタンスの [Auto minor version upgrade (マイナーバージョン自動アップグレード)] オプションは有効になっています。

  • DB インスタンスでは、現在の自動アップグレードマイナーバージョン未満の DB エンジンのマイナーバージョンが実行されています。

詳細については、「マイナーエンジンバージョンの自動アップグレード」を参照してください。

注記

PostgreSQL のアップグレードでは、PostgreSQL のエクステンションはアップグレードされません。エクステンションをアップグレードするには、「PostgreSQL のエクステンションのアップグレード」を参照してください。

PostgreSQL のエクステンションのアップグレード

PostgreSQL エンジンのアップグレードでは、PostgreSQL のほとんどのエクステンションはアップグレードされません。バージョンアップグレードの後にエクステンションを更新するには、ALTER EXTENSION UPDATE のコマンドを使用します。

注記

PostGIS エクステンションの場合、エクステンションを更新する前に「PostGIS ドキュメント」の「PostGIS upgrade instructions」(PostGIS のアップグレード手順) を確認してください。pg_repack エクステンションの場合、エクステンションをドロップしてアップグレードされた DB インスタンスに新しいバージョンを作成します。詳細については、「pg_repack ドキュメント」の「pg_repack installation」(pg_repack のインストール) を参照してください。

エクステンションをアップグレードするには、次のコマンドを使用します。

ALTER EXTENSION extension_name UPDATE TO 'new_version'

PostgreSQL エクステンションのサポートされているバージョンのリストについては、「サポートされている PostgreSQL 拡張機能バージョン」を参照してください。

現在インストールされているエクステンションを一覧表示するには、次のコマンドで PostgreSQL の pg_extension カタログを使用します。

SELECT * FROM pg_extension;

インストールで使用可能な特定のエクステンションバージョンのリストを表示するには、次のコマンドで PostgreSQL の pg_available_extension_versions ビューを使用します。

SELECT * FROM pg_available_extension_versions;