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

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

Amazon Aurora では、広範なテストの後にのみ AWS リージョン で PostgreSQL データベースエンジンの新しいバージョンが利用可能となります。Aurora PostgreSQL DB クラスターは、リージョンで利用可能になった時点で新しいバージョンにアップグレードできます。

DB クラスターが現在実行されている Aurora PostgreSQL のバージョンに応じて、新しいリリースへのアップグレードは、マイナーアップグレードまたはメジャーアップグレードのいずれかになります。例えば、Aurora PostgreSQL 11.15 DB クラスターを Aurora PostgreSQL 13.6 にアップグレードした場合は、メジャーバージョンアップグレードです。Aurora PostgreSQL 13.3 DB クラスターを Aurora PostgreSQL 13.7 にアップグレードした場合は、マイナーバージョンアップグレードです。次のトピックでは、両方のタイプのアップグレードを実行する方法について説明します。

Aurora PostgreSQL のアップグレードプロセスの概要

メジャーバージョンとマイナーバージョンのアップグレードの違いは、次のとおりです。

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

マイナーバージョンアップグレードおよびパッチには、既存のアプリケーションとの下位互換性がある変更のみが含まれます。マイナーバージョンのアップグレードとパッチは、Aurora PostgreSQL がテストして承認した後にのみ利用可能になります。

マイナーバージョンのアップグレードは、Aurora によって自動的に適用できます。新しい Aurora PostgreSQL DB クラスターを作成すると、[マイナーバージョンアップグレードの有効化] オプションが事前に選択されています。このオプションをオフにしない限り、スケジュールされたメンテナンス期間中には、マイナーバージョンのアップグレードが自動的に適用されます。自動マイナーバージョンアップグレード (AMVU) オプションと Aurora DB クラスターを使用できるように変更する方法については、「 Aurora DB クラスターのマイナーバージョン自動アップグレード 」を参照してください。

自動マイナーバージョンアップグレードオプションが Aurora PostgreSQL DB クラスターに設定されていない場合、Aurora PostgreSQL は新しいマイナーバージョンに自動的にアップグレードされません。代わりに、AWS リージョン で新しいマイナーバージョンがリリースされ、Aurora PostgreSQL DB クラスターが古いマイナーバージョンを実行している場合、Aurora はアップグレードを要求します。そのためには、クラスターのメンテナンスタスクにレコメンデーションを追加します。

パッチはアップグレードとはみなされず、自動的には適用されません。Aurora PostgreSQL では、Aurora PostgreSQL DB クラスターのメンテナンスタスクに推奨事項を追加して、パッチを適用するように求められます。詳細については、「マイナーバージョンのアップグレードとパッチの適用方法」を参照してください。

注記

セキュリティやその他の重要な問題を解決するパッチも、メンテナンスタスクとして追加されます。ただし、これらのパッチは必須です。保留中のメンテナンスタスクでセキュリティパッチが使用可能になったら、Aurora PostgreSQL DB クラスターにセキュリティパッチを適用してください。

アップグレードプロセスでは、クラスター内の各インスタンスが新しいバージョンにアップグレードされる際に、短時間停止する可能性があります。ただし、Aurora PostgreSQL バージョン 14.3.3、13.7.3、12.11.3、11.16.3、10.21.3、およびこれらのマイナーバージョンやより新しいメジャーバージョンのその他のリリース以降では、アップグレードプロセスではゼロダウンタイムパッチ適用 (ZDP) 機能が使用されます。この機能は停止を最小限に抑え、ほとんどの場合は完全に排除します。詳細については、「マイナーリリースのアップグレードとダウンタイムなしのパッチ適用プロセス」を参照してください。

注記

ZDP は、Aurora Serverless v2、Aurora Serverless v1、Aurora グローバルデータベース、または Babelfish として構成されている Aurora PostgreSQL DB クラスターではサポートされていません。

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

マイナーバージョンのアップグレードやパッチとは異なり、Aurora PostgreSQL には自動メジャーバージョンアップグレードオプションはありません。新しいメジャー PostgreSQL バージョンのアップグレードには、既存のアプリケーションとの下位互換性のないデータベースの変更が含まれる場合があります。新しい機能により、既存のアプリケーションが適切に動作しなくなることがあります。

Aurora PostgreSQL DB クラスター内の DB インスタンスをアップグレードする前に、問題を予防するため、「本番稼働用の DB クラスターを新しいメジャーバージョンにアップグレードする前に」で説明している手順に従うことを強くお勧めします。まず、以下の手順に従って、アプリケーションを新しいバージョンで実行できることを確認します。その後、Aurora PostgreSQL DB クラスターを新しいバージョンに手動でアップグレードできます。

アップグレードプロセスでは、クラスター内の各インスタンスが新しいバージョンにアップグレードされる際に、短時間停止する可能性があります。事前計画プロセスにも時間がかかります。アップグレードタスクは、必ずクラスターのメンテナンス期間中、または運用が最小限のタイミングで実行することをお勧めします。詳細については、「メジャーバージョンのアップグレードを実施する方法」を参照してください。

注記

マイナーバージョンのアップグレードとメジャーバージョンのアップグレードの両方で、短期間の停止を伴う可能性があります。そのため、メンテナンス期間中、または使用率の低い時間帯にアップグレードを実行またはスケジュールすることを強くお勧めします。

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

メジャーバージョンのアップグレードには、以前のバージョンのデータベースと下位互換性のないデータベースの変更が含まれる可能性があります。新しいバージョンの新機能により、既存のアプリケーションが適切に動作しなくなることがあります。問題を回避するため、Amazon Aurora では、メジャーバージョンアップグレードは自動的に適用されません。むしろ、次の手順を実行して、メジャーバージョンのアップグレードを慎重に計画することをお勧めします。

  1. 使用可能なターゲットのリストから必要なメジャーバージョンを、テーブル内のバージョンにリストされているターゲットから選択します。AWS CLI を使うことにより現在のバージョンの AWS リージョン で利用可能なバージョンの正確なリストを入手できます。詳細については、「AWS リージョン で使用可能なバージョンのリストを取得します。」を参照してください。

  2. 新しいバージョンのトライアルデプロイで、アプリケーションが正常に動作することを確認します。完全なプロセスの詳細については、「本番稼働用の DB クラスターを新しいメジャーバージョンにアップグレードする前に」を参照してください。

  3. トライアルデプロイでアプリケーションが正常に動作することを確認したら、クラスターをアップグレードできます。詳細については、「Aurora PostgreSQL エンジンを新しいメジャーバージョンにアップグレードする」を参照してください。

注記

現在、Babelfish を実行している Aurora PostgreSQL DB クラスターを新しいメジャーバージョンにアップグレードすることはできません。

表には、Aurora PostgreSQL DB のさまざまなバージョンで使用できるバージョンのアップグレードが記載されています。

検討しているバージョンについて、クラスターの DB インスタンスクラスの可用性を常に確認してください。例えば、db.r4 は、Aurora PostgreSQL 13 ではサポートされていません。Aurora PostgreSQL DB クラスターが現在 db.r4 インスタンスクラスを使用している場合は、アップグレードする前に db.r5 に移動する必要があります。どれが Graviton2 ベースでどれがインテルベースであるかなど、DB インスタンスクラスの詳細については、「Aurora DB インスタンスクラス」を参照してください。

AWS リージョン で使用可能なバージョンのリストを取得します。

次のように describe-db-engine-versions AWS CLIコマンドを使用して AWS リージョン をクエリすることにより、Aurora PostgreSQL DB のアップグレードターゲットとして利用可能なエンジンバージョンのリストを取得できます。

Linux、macOS、Unix の場合:

aws rds describe-db-engine-versions \ --engine aurora-postgresql \ --engine-version 12.10 \ --query 'DBEngineVersions[].ValidUpgradeTarget[?IsMajorVersionUpgrade == `true`].{EngineVersion:EngineVersion}' \ --output text

Windows の場合:

aws rds describe-db-engine-versions ^ --engine aurora-postgresql ^ --engine-version 12.10 ^ --query "DBEngineVersions[].ValidUpgradeTarget[?IsMajorVersionUpgrade == `true`].{EngineVersion:EngineVersion}" ^ --output text

場合によっては、アップグレードするバージョンが現行のバージョンのターゲットではない場合があります。そのような場合は、versions table の情報を使用して、クラスターがターゲットの行に選択したターゲットを持つバージョンになるまで、マイナーバージョンのアップグレードを実行します。

本番稼働用の DB クラスターを新しいメジャーバージョンにアップグレードする前に

各新しいメジャーバージョンには、パフォーマンスを向上させるために設計されたクエリオプティマイザの機能強化が含まれています。ただし、ワークロードには、新しいバージョンでプランの実行を低下させるクエリが含まれる場合があります。そのため、本番環境でアップグレードする前に、パフォーマンスをテストして確認することをお勧めします。メジャーバージョンのアップグレード後の計画の安定性の確保 で説明されているように、クエリプラン管理 (QPM) 拡張機能を使用して、バージョン間でクエリプランの安定性を管理できます。

本番稼働用の Aurora PostgreSQL DB クラスターを新しいメジャーバージョンにアップグレードする前に、アップグレードをテストして、アプリケーションが正常に動作することを確認することを強く推奨します。

  1. バージョン互換のパラメータグループを準備します。

    カスタム DB インスタンスまたは DB クラスターパラメータグループを使用している場合は、2 つのオプションから選択できます。

    1. 新しい DB エンジンバージョンのデフォルト DB インスタンス、DB クラスターパラメータグループ、またはその両方を指定します。

    2. 新しい DB エンジンバージョンの独自のカスタムパラメータグループを作成します。

    アップグレードリクエストの一部として DB インスタンスまたは DB クラスターの新しいパラメータグループを関連付ける場合は、パラメータを適用するために必ず、アップグレードの完了後にデータベースを再起動してください。パラメータグループの変更を適用するために DB インスタンスを再起動する必要がある場合、インスタンスのパラメータグループのステータスは pending-reboot と表示されます。インスタンスのパラメータグループのステータスは、コンソールまたは describe-db-instancesdescribe-db-clusters などの CLI コマンドを使用して確認できます。

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

    • アップグレードを試みる前に、すべての準備済みのトランザクションをコミットまたはロールバックします。次のクエリを使用して、開いている準備済みのトランザクションがインスタンスにないことを確認します。

      SELECT count(*) FROM pg_catalog.pg_prepared_xacts;
    • アップグレードを試みる前に、使用されているすべての reg* データ型を削除します。regtyperegclass を除き、reg* データ型をアップグレードすることはできません。このデータ型は、pg_upgrade ユーティリティ (Amazon Aurora でアップグレードに使用される) で保持することはできません。このユーティリティの詳細については、PostgreSQL のドキュメントの「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');
    • pgRouting 拡張機能がインストールされている Aurora PostgreSQL バージョン 10.18 以上の DB クラスターをアップグレードする場合には、バージョン 12.4 以上にアップグレードする前に拡張機能を削除してください。

  3. 論理的なレプリケーションスロットを削除します。

    Aurora PostgreSQL DB クラスターがいずれかの論理レプリケーションスロットを使用している場合は、アップグレードプロセスを続行できません。論理レプリケーションスロットは通常、AWS DMS を使用したデータの移行、またはデータベースからデータレイク、BI ツール、およびその他のターゲットへのテーブルのレプリケートなどの短期のデータの移行タスクに使用されます。アップグレードする前に、既存の論理レプリケーションスロットの目的を確認し、削除しても問題ないことを確認してください。次のクエリを使用して論理レプリケーションスロットを確認できます。

    SELECT * FROM pg_replication_slots;

    論理レプリケーションスロットがまだ使用されている場合は、それらを削除しないでください。また、その場合、アップグレードを続行することはできません。ただし、論理レプリケーションスロットが不要な場合は、次の SQL を使用して削除できます。

    SELECT pg_drop_replication_slot(slot_name);

    pglogical 拡張機能を使用するロジカルレプリケーションシナリオでも、パブリッシャーノードでメジャーバージョンアップグレードを正常に行うには、パブリッシャーノードからスロットを削除する必要があります。ただし、アップグレード後にサブスクライバーノードからレプリケーションプロセスを再開できます。詳細については、「メジャーアップグレード後の論理レプリケーションの再確立」を参照してください。

  4. バックアップを実行します。

    アップグレードプロセスでは、アップグレード中に DB クラスターのスナップショットが作成されます。アップグレードプロセスの前に手動でもバックアップを行う場合の詳細については、「DB クラスタースナップショットの作成」を参照してください。

  5. メジャーバージョンアップグレードを実行する前に、特定の拡張機能を、利用可能な最新バージョンにアップグレードします。更新する拡張機能は以下のとおりです。

    • pgRouting

    • postgis_raster

    • postgis_tiger_geocoder

    • postgis_topology

    • address_standardizer

    • address_standardizer_data_us

    現在インストールされている拡張機能ごとに以下のコマンドを実行します。

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

    詳細については、「PostgreSQL 拡張機能のアップグレード」を参照してください。PostGIS のアップグレードの詳細については、「ステップ 6: PostGIS 拡張機能を更新する」を参照してください。

  6. バージョン 11.x にアップグレードする場合は、メジャーバージョンアップグレードを実行する前に、サポートされていない拡張機能を削除してください。削除する拡張機能は以下のとおりです。

    • chkpass

    • tsearch2

  7. ターゲットバージョンに応じて、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 n.nspname, c.relname, a.attname 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 = 'pg_catalog.unknown'::pg_catalog.regtype AND c.relkind IN ('r','m','c') AND c.relnamespace = n.oid AND n.nspname !~ '^pg_temp_' AND n.nspname !~ '^pg_toast_temp_' AND n.nspname NOT IN ('pg_catalog', 'information_schema');
  8. リハーサルのアップグレードを実行します。

    プロダクションデータベースのアップグレードを試みる前に、プロダクションデータベースの複製でメジャーバージョンアップグレードをテストすることを強くお勧めします。テスト用の複製のインスタンスを作成するには、最新のスナップショットからデータベースを復元するか、データベースのクローンを作成します。詳細については、「スナップショットからの復元」または「Amazon Aurora DB クラスターのボリュームのクローン作成」を参照してください。

    詳細については、「Aurora PostgreSQL エンジンを新しいメジャーバージョンにアップグレードする」を参照してください。

  9. プロダクションインスタンスをアップグレードします。

    リハーサルのメジャーバージョンアップグレードが成功したら、安心してプロダクションデータベースをアップグレードできます。詳細については、「Aurora PostgreSQL エンジンを新しいメジャーバージョンにアップグレードする」を参照してください。

    注記

    アップグレードプロセス中は、クラスターのバックアップ保持期間に 0 より大きい値が設定されている場合、Aurora PostgreSQL は、DB クラスターのスナップショットを作成します。このプロセス中、クラスターのポイントインタイム復元を実行することはできません。アップグレードのスタート前およびインスタンスの自動スナップショットの完了後に、後からポイントインタイムの復元を実行できます。ただし、以前のマイナーバージョンのポイントインタイム復元を実行することはできません。

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

  10. PostgreSQL の拡張機能をアップグレードします。PostgreSQL のアップグレードプロセスでは、PostgreSQL の拡張機能はアップグレードされません。詳細については、「PostgreSQL 拡張機能のアップグレード」を参照してください。

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

  • ANALYZE 操作を実行して pg_statistic テーブルを更新します。

  • PostgreSQL バージョン 10 にアップグレードした場合は、使用しているハッシュインデックスで REINDEX を実行してください。ハッシュインデックスはバージョン 10 で変更されたため、再構築する必要があります。無効なハッシュインデックスを見つけるには、ハッシュインデックスを含む各データベースに対して次の SQL を実行します。

    SELECT idx.indrelid::regclass AS table_name, idx.indexrelid::regclass AS index_name FROM pg_catalog.pg_index idx JOIN pg_catalog.pg_class cls ON cls.oid = idx.indexrelid JOIN pg_catalog.pg_am am ON am.oid = cls.relam WHERE am.amname = 'hash' AND NOT idx.indisvalid;
  • アップグレードしたデータベースで同様のワークロードでアプリケーションをテストして、すべてが期待どおりに機能することを確認することをお勧めします。アップグレードが確認されたら、このテストインスタンスを削除できます。

Aurora PostgreSQL エンジンを新しいメジャーバージョンにアップグレードする

新しいメジャーバージョンへのアップグレードプロセスを開始するとき、Aurora PostgreSQL はクラスターに変更を加える前に Aurora DB クラスターのスナップショットを取得します。このスナップショットは、メジャーバージョンのアップグレード用にのみ作成され、マイナーバージョンのアップグレードでは作成されません。アップグレードプロセスが完了すると、このスナップショットは、RDS コンソールのスナップショットにリストされている手動スナップショットの中に表示されています。次の例のように、スナップショット名には、プレフィックス、Aurora PostgreSQL DB クラスターの名前、ソースバージョン、ターゲットバージョン、日付とタイムスタンプとして preupgrade が含まれます。

preupgrade-docs-lab-apg-global-db-12-8-to-13-6-2022-05-19-00-19

アップグレードの完了後、Aurora が作成して手動スナップショットリストに保存したスナップショットを使用して、必要に応じて DB クラスターを以前のバージョンに復元できます。

ヒント

一般に、スナップショットは Aurora DB クラスターをさまざまな時点に復元するためのさまざまな方法を提供します。詳細については、「DB クラスターのスナップショットからの復元」および「DB クラスターを指定の時点の状態に復元する」を参照してください。ただし、Aurora PostgreSQL は、以前のマイナーバージョンに復元するためのスナップショットを使用をサポートしていません。

メジャーバージョンのアップグレードプロセス中には、Aurora によってボリュームが割り当てられ、ソース Aurora PostgreSQL DB クラスターのクローンが作成されます。アップグレードが何らかの理由で失敗した場合、Aurora PostgreSQL はクローンを使用してアップグレードをロールバックします。ソースのボリュームのクローンが 15 個より多く割り当てられた後、後続のクローンはフルコピーになり、時間がかかります。これにより、アップグレードプロセスにかかる時間が延びる場合があります。Aurora PostgreSQL でアップグレードがロールバックされる場合は、次の点に注意してください。

  • アップグレード中に割り当てられたクローンボリューム、およびその元となったボリュームの両方について、請求情報とメトリクスが表示される可能性があります。クラスターのバックアップ保持期間がアップグレードの時間を超えた時点で、Aurora PostgreSQL は余分なボリュームをクリーンアップします。

  • そのクラスターの次のクロスリージョンスナップショットコピーは、増分コピーではなく、フルコピーになります。

クラスターを構成する DB インスタンスを安全にアップグレードするために、Aurora PostgreSQL では pg_upgrade ユーティリティを使用します。ライターのアップグレードが完了すると、各リーダーインスタンスは新しいメジャーバージョンにアップグレードされている間、短時間停止します。この PostgreSQL ユーティリティの詳細については、PostgreSQL のドキュメントの「pg_upgrade」を参照してください。

AWS Management Console、AWS CLI、または RDS API を使用することにより、Aurora PostgreSQL DB クラスターを新しいバージョンにアップグレードできます。

DB クラスターのエンジンバージョンを変更するには
  1. AWS Management Console にサインインし、Amazon RDS コンソール (https://console.aws.amazon.com/rds/) を開きます。

  2. ナビゲーションペインで、[データベース] を選択して、アップグレードする DB クラスターを選択します。

  3. [Modify] を選択します。[DB クラスターの変更] ページが表示されます。

  4. [Engine version] (エンジンバージョン) で、新しいバージョンを選択します。

  5. [続行] を選択して、変更の概要を確認します。

  6. 変更をすぐに反映させるには、[Apply immediately] を選択します。このオプションを選択すると、停止状態になる場合があります。詳細については、「Amazon Aurora DB クラスターの変更」を参照してください。

  7. 確認ページで、変更内容を確認します。正しい場合は、[クラスターの変更] を選択して変更を保存します。

    または、[戻る] を選択して変更を編集するか、[キャンセル] を選択して変更をキャンセルします。

DB クラスターのエンジンバージョンをアップグレードするには、CLI の modify-db-cluster AWS CLI コマンドを使用します。以下のパラメータを指定します。

  • --db-cluster-identifier - DB クラスターの名前。

  • --engine-version - アップグレード先のデータベースエンジンのバージョン番号です。有効なエンジンバージョンの詳細については、AWS CLI の describe-db-engine-versions コマンドを参照してください。

  • --allow-major-version-upgrade - --engine-version パラメータが DB クラスターの現在のメジャーバージョンとは異なるメジャーバージョンである場合に必須のフラグです。

  • --no-apply-immediately ​- 次のメンテナンス時間中に変更を適用します。今すぐ変更を適用するには、--apply-immediately を使用します。

Linux、macOS、Unix の場合:

aws rds modify-db-cluster \ --db-cluster-identifier mydbcluster \ --engine-version new_version \ --allow-major-version-upgrade \ --no-apply-immediately

Windows の場合:

aws rds modify-db-cluster ^ --db-cluster-identifier mydbcluster ^ --engine-version new_version ^ --allow-major-version-upgrade ^ --no-apply-immediately

DB クラスターのエンジンのバージョンをアップグレードするには、ModifyDBCluster オペレーションを使用します。以下のパラメータを指定します。

  • DBClusterIdentifier - DB クラスターの名前、例えば mydbcluster です。

  • EngineVersion - アップグレード先のデータベースエンジンのバージョン番号です。有効なエンジンバージョンについては、DescribeDBEngineVersions オペレーションを使用します。

  • AllowMajorVersionUpgrade - EngineVersion パラメータが DB クラスターの現在のメジャーバージョンとは異なるメジャーバージョンである場合に必須のフラグです。

  • ApplyImmediately - 変更をすぐに適用するか、次のメンテナンスウィンドウ中に適用するかを指定します。今すぐ変更を適用するには、値を true に設定します。次のメンテナンスウィンドウ中に変更を適用するには、値を false に設定します。

グローバルデータベースのメジャーアップグレード

Aurora グローバルデータベースクラスターの場合、アップグレードプロセスは Aurora グローバルデータベースを構成するすべての DB クラスターを同時にアップグレードします。これは、それぞれが同じ Aurora PostgreSQL バージョンを実行するようにするためです。また、システムテーブル、データファイル形式などの変更が、すべてのセカンダリクラスターに自動的にレプリケートされます。

グローバルデータベースクラスターを Aurora PostgreSQL の新しいメジャーバージョンにアップグレードするには、「本番稼働用の DB クラスターを新しいメジャーバージョンにアップグレードする前に」で説明されているように、アップグレードされたバージョンでアプリケーションをテストすることをお勧めします。本番稼働用の DB クラスターを新しいメジャーバージョンにアップグレードする前にstep 1. に詳述されているとおり、アップグレードの前に、Aurora グローバルデータベースの各 AWS リージョン に対して DB クラスターパラメータグループと DB パラメータグループの設定を必ず準備してください。

Aurora PostgreSQL グローバルデータベースクラスターに、rds.global_db_rpo パラメータに目標復旧時点 (RPO) が設定されている場合、アップグレードする前にパラメータをリセットしてください。RPO がオンになっている場合、メジャーバージョンのアップグレードプロセスは機能しません。デフォルトでは、このパラメータがオフになっています。Aurora PostgreSQL グローバルデータベースおよび RPO の詳細については、「Aurora PostgreSQL- ベースのグローバルデータベースの RPO (目標復旧時点) 管理」を参照してください。

新しいバージョンの試用版デプロイでアプリケーションが正常に実行できることを確認した場合は、アップグレードプロセスを開始できます。これを行うには、「Aurora PostgreSQL エンジンを新しいメジャーバージョンにアップグレードする」を参照してください。次の画像のように、RDS コンソールの [Databases] (データベース) リストから最上位の項目 [Global database] (グローバルデータベース) を必ず選択してください。


                    Aurora グローバルデータベース、Aurora Serverless DB クラスターおよび別の Aurora PostgreSQL DB クラスターを示すコンソール画像

他の変更と同様に、プロンプトが表示されたらプロセスの続行を確認できます。


                    Aurora PostgreSQL DB クラスターのアップグレードプロセスを確認するためのプロンプトを示すコンソール画像

アップグレードプロセスを開始するには、コンソールではなく AWS CLI または RDS API を使用します。コンソールと同様、次のように、Aurora グローバルデータベースクラスターの構成要素ではなく、Aurora グローバルデータベースクラスターを操作します。

  • modify-global-cluster AWS CLI コマンドを使用し、AWS CLI を使うことにより、Aurora グローバルデータベースのアップグレードを開始します。

  • ModifyGlobalCluster API を使用して、アップグレードを開始します。

マイナーバージョンのアップグレードとパッチの適用方法

マイナーバージョンのアップグレードとパッチは、厳格なテストの後にのみ AWS リージョン で利用可能となります。アップグレードとパッチをリリースする前に、Aurora PostgreSQL は、マイナーコミュニティバージョンのリリース後に発生する既知のセキュリティ問題、バグ、およびその他の問題により Aurora PostgreSQL フリートの全体的な安定性が損なわれないことをテストします。

Aurora PostgreSQL で新しいマイナーバージョンが利用できるようになるため、Aurora PostgreSQL DB クラスターを構成するインスタンスは、指定したメンテナンス期間中に自動的にアップグレードできます。これを行うには、Aurora PostgreSQL DB クラスターで [マイナーバージョン自動アップグレードの有効化] オプションがオンになっている必要があります。Aurora PostgreSQL DB クラスターを構成するすべての DB インスタンスで、マイナーアップグレードがクラスター全体に適用されるように、自動マイナーバージョンアップグレード (AMVU) オプションをオンにする必要があります。

ヒント

Aurora PostgreSQL DB クラスターを構成するすべての PostgreSQL DB インスタンスに対して、[マイナーバージョン自動アップグレードの有効化] オプションが、オンになっていることを確認します。DB クラスター内のすべてのインスタンスを動作させるには、このオプションをオンにする必要があります。

次のクエリに describe-db-instances AWS CLIコマンドを使用することで、すべての Aurora PostgreSQL DB クラスターに対して、[マイナーバージョン自動アップグレードの有効化] オプションの値をチェックできます。

aws rds describe-db-instances \ --query '*[].{DBClusterIdentifier:DBClusterIdentifier,DBInstanceIdentifier:DBInstanceIdentifier,AutoMinorVersionUpgrade:AutoMinorVersionUpgrade}'

このクエリにより、AutoMinorVersionUpgrade 設定のステータスに対して true または false 値を持つすべての Aurora DB クラスターとそのインスタンスのリストが返されます。表示されるコマンドは、AWS CLI がデフォルトの AWS リージョン に設定されていると仮定したものです。

[AMVU] オプションと Aurora DB クラスターを使用できるように変更する方法については、「 Aurora DB クラスターのマイナーバージョン自動アップグレード 」を参照してください。

Aurora PostgreSQL DB クラスターを新しいマイナーバージョンにアップグレードするには、メンテナンスタスクに応答するか、新しいバージョンを使用するようにクラスターを変更します。

RDS コンソールを使用して、レコメンデーションメニューを開くことにより、Aurora PostgreSQL DB クラスターで使用可能なアップグレードまたはパッチを特定することができます。そこには、古いマイナーバージョンなど、さまざまなメンテナンスの問題のリストを確認できます。本番環境に応じて、アップグレードをスケジュールするか、[今すぐ適用] を選択することですぐにアクションを実行することを選択できます。


                新しいマイナーバージョンへのアップグレードを推奨するコンソール画像。

パッチやマイナーバージョンアップグレードを手動で適用する方法など、Aurora DB クラスターのメンテナンス方法の詳細については、「Amazon Aurora DB クラスターのメンテナンス」を参照してください。

マイナーリリースのアップグレードとダウンタイムなしのパッチ適用プロセス

Aurora PostgreSQL DB クラスターのアップグレードには、停止の可能性が伴います。アップグレードプロセス中には、データベースがシャットダウンされます。データベースがビジー状態のときにアップグレードをスタートすると、DB クラスターが処理しているすべての接続とトランザクションが失われます。アップグレードを実行するためにデータベースがアイドル状態になるまで待機する場合は、長時間待機しなければならない場合があります。

ダウンタイムなしのパッチ適用 (ZDP) 機能により、アップグレードプロセスが改善されます。ZDP では、Aurora PostgreSQL DB クラスターへの影響を最小限に抑えながら、マイナーバージョンのアップグレードとパッチの両方を適用できます。ZDP は、Aurora PostgreSQL バージョン 14.3.3、13.7.3、12.11.3、11.16.3、10.21.3、およびこれらのマイナーバージョンおよび新しいメジャーバージョンのその他のリリースに、パッチまたは新しいマイナーバージョンアップグレードを適用する際に使用されます。つまり、これらのリリースのいずれかから新しいマイナーバージョンにアップグレードすると、ZDP が使用されます。

注記

ZDP は、Aurora Serverless v2、Aurora Serverless v1、Aurora グローバルデータベース、または Babelfish として構成されている Aurora PostgreSQL DB クラスターではサポートされていません。

ZDP は、Aurora PostgreSQL のアップグレードプロセス全体で、Aurora PostgreSQL DB クラスターへの現在のクライアント接続を維持することで機能します。ZDP が正常に完了すると、アプリケーションのセッションが保持され、アップグレードがまだ進行中にデータベースエンジンが再起動します。データベースエンジンの再起動により、スループットが低下する可能性がありますが、これは通常数秒から約 1 分間程度で済みます。

場合によっては、ダウンタイムなしのパッチ適用 (ZDP) が成功しないこともあります。例えば、長時間実行されるクエリまたはトランザクションが進行中の場合、ZDP はこれらをキャンセルしないと、完了できません。データ定義言語 (DDL) ステートメントが実行中である場合、または一時テーブルまたはテーブルロックがその他の理由で使用されている場合、ZDP は開いているトランザクションをキャンセルしなければならない可能性があります。Aurora PostgreSQL DB クラスターまたはそのインスタンスが pending 状態であるパラメータ変更も、ZDP を中断する原因となります。

ZDP オペレーションのメトリックとイベントについては、コンソールの「イベント」ページを参照してください。イベントには、ZDP アップグレードの開始とアップグレードの完了が含まれます。このイベントでは、プロセスに要した時間、および再起動中に保持およびドロップされた接続の数を確認できます。詳細は、データベースのエラーログに表示されます。

Aurora PostgreSQL エンジンを新しいマイナーバージョンにアップグレードする

AWS CLI、または RDS API を使用することにより、Aurora PostgreSQL DB クラスターを新しいマイナーバージョンにアップグレードできます。アップグレードを実行する前に、メジャーバージョンのアップグレードする際に推奨する内容と同じベストプラクティスを実行することをお勧めします。新しいメジャーバージョンと同様に、新しいマイナーバージョンでも、クエリ計画のリグレッションの原因となる修正などのオプティマイザの改善が行われている可能性があります。計画の安定性を確保するには、「メジャーバージョンのアップグレード後の計画の安定性の確保」で説明されているように、クエリ計画管理 (QPM) 拡張機能を使用することをお勧めします。

Aurora PostgreSQL DB クラスターのエンジンバージョンをアップグレードするには
  1. AWS Management Console にサインインし、Amazon RDS コンソール (https://console.aws.amazon.com/rds/) を開きます。

  2. ナビゲーションペインで、[データベース] を選択して、アップグレードする DB クラスターを選択します。

  3. [Modify] を選択します。[DB クラスターの変更] ページが表示されます。

  4. [Engine version] (エンジンバージョン) で、新しいバージョンを選択します。

  5. [続行] を選択して、変更の概要を確認します。

  6. 変更をすぐに反映させるには、[Apply immediately] を選択します。このオプションを選択すると、停止状態になる場合があります。詳細については、「Amazon Aurora DB クラスターの変更」を参照してください。

  7. 確認ページで、変更内容を確認します。正しい場合は、[クラスターの変更] を選択して変更を保存します。

    または、[戻る] を選択して変更を編集するか、[キャンセル] を選択して変更をキャンセルします。

DB クラスターのバージョンをアップグレードするには、次のパラメータに modify-db-cluster AWS CLI コマンドを使用します。

  • --db-cluster-identifier — Aurora PostgreSQL DB クラスターの名前。

  • --engine-version - アップグレード先のデータベースエンジンのバージョン番号です。有効なエンジンバージョンの詳細については、AWS CLI の describe-db-engine-versions コマンドを参照してください。

  • --no-apply-immediately ​- 次のメンテナンス時間中に変更を適用します。今すぐ変更を適用するには、代わりに --apply-immediately を使用します。

Linux、macOS、Unix の場合:

aws rds modify-db-cluster \ --db-cluster-identifier mydbcluster \ --engine-version new_version \ --no-apply-immediately

Windows の場合:

aws rds modify-db-cluster ^ --db-cluster-identifier mydbcluster ^ --engine-version new_version ^ --no-apply-immediately

DB クラスターのエンジンのバージョンをアップグレードするには、ModifyDBCluster オペレーションを使用します。以下のパラメータを指定します。

  • DBClusterIdentifier - DB クラスターの名前、例えば mydbcluster です。

  • EngineVersion - アップグレード先のデータベースエンジンのバージョン番号です。有効なエンジンバージョンについては、DescribeDBEngineVersions オペレーションを使用します。

  • ApplyImmediately - 変更をすぐに適用するか、次のメンテナンスウィンドウ中に適用するかを指定します。今すぐ変更を適用するには、値を true に設定します。次のメンテナンスウィンドウ中に変更を適用するには、値を false に設定します。

PostgreSQL 拡張機能のアップグレード

Aurora PostgreSQL DB クラスターを新しいメジャーバージョンにアップグレードしても、PostgreSQL 拡張機能が同時にアップグレードされるわけではありません。ほとんどの拡張機能については、メジャーバージョンのアップグレード完了後にアップグレードします。ただし、場合によっては、Aurora PostgreSQL DB エンジンをアップグレードする前に拡張機能をアップグレードすることもあります。詳細については、本番稼働用の DB クラスターを新しいメジャーバージョンにアップグレードする前にの「list of extensions to update」を参照してください。

PostgreSQL 拡張機能をインストールするには、rds_superuser 権限が必要です。通常、特定の拡張機能の管理を容易にするために、rds_superuser が特定の拡張機能に対する権限を関連するユーザー (ロール) に委任します。つまり、Aurora PostgreSQL DB クラスター内のすべての拡張機能をアップグレードするタスクには、さまざまなユーザー (ロール) が含まれる可能性があります。スクリプトを使用してアップグレードプロセスを自動化する場合も、この点に注意してください。PostgreSQL の権限とロールの詳細については、「Amazon Aurora PostgreSQL でのセキュリティ」を参照してください。

注記

PostGIS 拡張機能バージョンのアップグレードについては、「PostGIS 拡張機能を使用した空間データの管理」(ステップ 6: PostGIS 拡張機能を更新する) を参照してください。

エンジンのアップグレード後に拡張機能を更新するには、ALTER EXTENSION UPDATE コマンドを使用します。

ALTER EXTENSION extension_name UPDATE TO 'new_version';

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

SELECT * FROM pg_extension;

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

SELECT * FROM pg_available_extension_versions;