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 PostgreSQL DB クラスターが Aurora Serverless v1 に設定されている場合。
Aurora グローバルデータベースのリーダーインスタンスのアップグレード中。
OS パッチおよび OS アップグレード中。
- メジャーバージョンのアップグレード
-
マイナーバージョンのアップグレードやパッチとは異なり、Aurora PostgreSQL には自動メジャーバージョンアップグレードオプションはありません。新しいメジャー PostgreSQL バージョンのアップグレードには、既存のアプリケーションとの下位互換性のないデータベースの変更が含まれる場合があります。新しい機能により、既存のアプリケーションが適切に動作しなくなることがあります。
Aurora PostgreSQL DB クラスター内の DB インスタンスをアップグレードする前に、問題を予防するため、「本番稼働用の DB クラスターの新しいメジャーバージョンへのアップグレードをテストする」で説明している手順に従うことを強くお勧めします。まず、以下の手順に従って、アプリケーションを新しいバージョンで実行できることを確認します。その後、Aurora PostgreSQL DB クラスターを新しいバージョンに手動でアップグレードできます。
アップグレードプロセスでは、クラスター内の各インスタンスが新しいバージョンにアップグレードされる際に、短時間停止する可能性があります。事前計画プロセスにも時間がかかります。アップグレードタスクは、必ずクラスターのメンテナンス期間中、または運用が最小限のタイミングで実行することをお勧めします。詳細については、「メジャーバージョンのアップグレードを実施する方法」を参照してください。
注記
マイナーバージョンのアップグレードとメジャーバージョンのアップグレードの両方で、短期間の停止を伴う可能性があります。そのため、メンテナンス期間中、または使用率の低い時間帯にアップグレードを実行またはスケジュールすることを強くお勧めします。
Aurora PostgreSQL DB クラスターでは、オペレーティングシステムの更新が必要になる場合があります。これらのアップデートには glibc ライブラリの新しいバージョンが含まれることがあります。このような更新の際は、「Aurora PostgreSQL でサポートされる照合」で説明されているガイドラインに従うことをお勧めします。
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
version-number
\ --query 'DBEngineVersions[*].ValidUpgradeTarget[*].{EngineVersion:EngineVersion}' \ --output text
Windows の場合:
aws rds describe-db-engine-versions ^ --engine aurora-postgresql ^ --engine-version
version-number
^ --query "DBEngineVersions[*].ValidUpgradeTarget[*].{EngineVersion:EngineVersion}" ^ --output text
例えば、Aurora PostgreSQL バージョン 12.10 DB クラスターの有効なアップグレードターゲットを特定するには、次の AWS CLI のコマンドを実行します。
Linux、macOS、Unix の場合:
aws rds describe-db-engine-versions \ --engine aurora-postgresql \ --engine-version
12.10
\ --query 'DBEngineVersions[*].ValidUpgradeTarget[*].{EngineVersion:EngineVersion}' \ --output text
Windows の場合:
aws rds describe-db-engine-versions ^ --engine aurora-postgresql ^ --engine-version
12.10
^ --query "DBEngineVersions[*].ValidUpgradeTarget[*].{EngineVersion:EngineVersion}" ^ --output text
この表で、Aurora PostgreSQL DB のさまざまなバージョンで使用できるメジャーバージョンとマイナーバージョンの両方のアップグレードターゲットを見つけることができます。
検討しているバージョンについて、クラスターの DB インスタンスクラスの可用性を常に確認してください。例えば、db.r4
は、Aurora PostgreSQL 13 ではサポートされていません。Aurora PostgreSQL DB クラスターが現在 db.r4 インスタンスクラスを使用している場合は、アップグレードする前に db.r5 に移動する必要があります。どれが Graviton2 ベースでどれがインテルベースであるかなど、DB インスタンスクラスの詳細については、「Aurora DB インスタンスクラス」を参照してください。
メジャーバージョンのアップグレードを実施する方法
メジャーバージョンのアップグレードには、以前のバージョンのデータベースと下位互換性のないデータベースの変更が含まれる可能性があります。新しいバージョンの新機能により、既存のアプリケーションが適切に動作しなくなることがあります。問題を回避するため、Amazon Aurora では、メジャーバージョンアップグレードは自動的に適用されません。むしろ、次の手順を実行して、メジャーバージョンのアップグレードを慎重に計画することをお勧めします。
使用可能なターゲットのリストから必要なメジャーバージョンを、テーブル内のバージョンにリストされているターゲットから選択します。AWS CLI を使うことにより現在のバージョンの AWS リージョン で利用可能なバージョンの正確なリストを入手できます。詳細については、「AWS リージョン で使用可能なバージョンのリストを取得します。」を参照してください。
新しいバージョンのトライアルデプロイで、アプリケーションが正常に動作することを確認します。完全なプロセスの詳細については、「本番稼働用の DB クラスターの新しいメジャーバージョンへのアップグレードをテストする」を参照してください。
トライアルデプロイでアプリケーションが正常に動作することを確認したら、クラスターをアップグレードできます。詳細については、「Aurora PostgreSQL エンジンを新しいメジャーバージョンにアップグレードする」を参照してください。
注記
13.6 以降の Babelfish for Aurora PostgreSQL 13 ベースのバージョンから 14.6 以降の Aurora PostgreSQL 14 ベースのバージョンへのメジャーバージョンアップグレードを実行できます。Babelfish for Aurora PostgreSQL 13.4 と 13.5 は、メジャーバージョンアップグレードをサポートしていません。
次のように、describe-db-engine-versions AWS CLI コマンドを使用して AWS リージョン をクエリすることにより、Aurora PostgreSQL DB クラスターのメジャーバージョンアップグレードターゲットとして利用可能なエンジンバージョンのリストを取得できます。
Linux、macOS、Unix の場合:
aws rds describe-db-engine-versions \ --engine aurora-postgresql \ --engine-version
version-number
\ --query 'DBEngineVersions[].ValidUpgradeTarget[?IsMajorVersionUpgrade == `true`].{EngineVersion:EngineVersion}' \ --output text
Windows の場合:
aws rds describe-db-engine-versions ^ --engine aurora-postgresql ^ --engine-version
version-number
^ --query "DBEngineVersions[].ValidUpgradeTarget[?IsMajorVersionUpgrade == `true`].{EngineVersion:EngineVersion}" ^ --output text
場合によっては、アップグレードするバージョンが現行のバージョンのターゲットではない場合があります。そのような場合は、versions table の情報を使用して、クラスターがターゲットの行に選択したターゲットを持つバージョンになるまで、マイナーバージョンのアップグレードを実行します。
本番稼働用の DB クラスターの新しいメジャーバージョンへのアップグレードをテストする
各新しいメジャーバージョンには、パフォーマンスを向上させるために設計されたクエリオプティマイザの機能強化が含まれています。ただし、ワークロードには、新しいバージョンでプランの実行を低下させるクエリが含まれる場合があります。そのため、本番環境でアップグレードする前に、パフォーマンスをテストして確認することをお勧めします。メジャーバージョンのアップグレード後の計画の安定性の確保 で説明されているように、クエリプラン管理 (QPM) 拡張機能を使用して、バージョン間でクエリプランの安定性を管理できます。
本番稼働用の Aurora PostgreSQL DB クラスターを新しいメジャーバージョンにアップグレードする前に、アップグレードをテストして、アプリケーションが正常に動作することを確認することを強く推奨します。
-
バージョン互換のパラメータグループを準備します。
カスタム DB インスタンスまたは DB クラスターパラメータグループを使用している場合は、2 つのオプションから選択できます。
-
新しい DB エンジンバージョンのデフォルト DB インスタンス、DB クラスターパラメータグループ、またはその両方を指定します。
-
新しい DB エンジンバージョンの独自のカスタムパラメータグループを作成します。
アップグレードリクエストの一部として DB インスタンスまたは DB クラスターの新しいパラメータグループを関連付ける場合は、パラメータを適用するために必ず、アップグレードの完了後にデータベースを再起動してください。パラメータグループの変更を適用するために DB インスタンスを再起動する必要がある場合、インスタンスのパラメータグループのステータスは
pending-reboot
と表示されます。インスタンスのパラメータグループのステータスは、コンソールまたは describe-db-instances や describe-db-clusters などの CLI コマンドを使用して確認できます。 -
-
サポートされていない使用の確認
-
アップグレードを試みる前に、すべての準備済みのトランザクションをコミットまたはロールバックします。次のクエリを使用して、開いている準備済みのトランザクションがインスタンスにないことを確認します。
SELECT count(*) FROM pg_catalog.pg_prepared_xacts;
-
アップグレードを試みる前に、使用されているすべての reg* データ型を削除します。
regtype
とregclass
を除き、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 以上にアップグレードする前に拡張機能を削除してください。拡張子
pg_repack
バージョン 1.4.3 がインストールされている Aurora PostgreSQL 10.x バージョンをアップグレードする場合には、より高いバージョンにアップグレードする前に拡張子を削除してください。
-
-
template1 と template0 のデータベースを確認してください。
アップグレードを成功させるには、テンプレート 1 とテンプレート 0 のデータベースが存在し、テンプレートとしてリストされている必要があります。これをチェックするには、次のコマンドを使用します。
SELECT datname, datistemplate FROM pg_database;
datname | datistemplate -----------+--------------- template0 | t rdsadmin | f template1 | t postgres | f
コマンド出力では、template1 データベースと template0 データベースの
datistemplate
値は、t
でなければなりません。 論理的なレプリケーションスロットを削除します。
Aurora PostgreSQL DB クラスターがいずれかの論理レプリケーションスロットを使用している場合は、アップグレードプロセスを続行できません。論理レプリケーションスロットは通常、AWS DMS を使用したデータの移行、またはデータベースからデータレイク、BI ツール、およびその他のターゲットへのテーブルのレプリケートなどの短期のデータの移行タスクに使用されます。アップグレードする前に、既存の論理レプリケーションスロットの目的を確認し、削除しても問題ないことを確認してください。次のクエリを使用して論理レプリケーションスロットを確認できます。
SELECT * FROM pg_replication_slots;
論理レプリケーションスロットがまだ使用されている場合は、それらを削除しないでください。また、その場合、アップグレードを続行することはできません。ただし、論理レプリケーションスロットが不要な場合は、次の SQL を使用して削除できます。
SELECT pg_drop_replication_slot(
slot_name
);pglogical
拡張機能を使用するロジカルレプリケーションシナリオでも、パブリッシャーノードでメジャーバージョンアップグレードを正常に行うには、パブリッシャーノードからスロットを削除する必要があります。ただし、アップグレード後にサブスクライバーノードからレプリケーションプロセスを再開できます。詳細については、「メジャーアップグレード後の論理レプリケーションの再確立」を参照してください。-
バックアップを実行します。
アップグレードプロセスでは、アップグレード中に DB クラスターのスナップショットが作成されます。アップグレードプロセスの前に手動でもバックアップを行う場合の詳細については、「DB クラスタースナップショットの作成」を参照してください。
-
メジャーバージョンアップグレードを実行する前に、特定の拡張機能を、利用可能な最新バージョンにアップグレードします。更新する拡張機能は以下のとおりです。
-
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 拡張機能を更新する」を参照してください。
-
-
バージョン 11.x にアップグレードする場合は、メジャーバージョンアップグレードを実行する前に、サポートされていない拡張機能を削除してください。削除する拡張機能は以下のとおりです。
-
chkpass
-
tsearch2
-
-
ターゲットバージョンに応じて、
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');
-
リハーサルのアップグレードを実行します。
プロダクションデータベースのアップグレードを試みる前に、プロダクションデータベースの複製でメジャーバージョンアップグレードをテストすることを強くお勧めします。複製されたテストインスタンスの実行計画を監視して、実行計画のリグレッションが発生していないかどうかを確認し、そのパフォーマンスを評価できます。テスト用の複製のインスタンスを作成するには、最新のスナップショットからデータベースを復元するか、データベースのクローンを作成します。詳細については、「スナップショットからの復元」または「Amazon Aurora DB クラスターのボリュームのクローン作成」を参照してください。
詳細については、「Aurora PostgreSQL エンジンを新しいメジャーバージョンにアップグレードする」を参照してください。
-
プロダクションインスタンスをアップグレードします。
リハーサルのメジャーバージョンアップグレードが成功したら、安心してプロダクションデータベースをアップグレードできます。詳細については、「Aurora PostgreSQL エンジンを新しいメジャーバージョンにアップグレードする」を参照してください。
注記
アップグレードプロセス中は、クラスターのバックアップ保持期間に 0 より大きい値が設定されている場合、Aurora PostgreSQL は、DB クラスターのスナップショットを作成します。このプロセス中、クラスターのポイントインタイム復元を実行することはできません。アップグレードのスタート前およびインスタンスの自動スナップショットの完了後に、後からポイントインタイムの復元を実行できます。ただし、以前のマイナーバージョンのポイントインタイム復元を実行することはできません。
進行中のアップグレードについては、Amazon RDS を使用して、pg_upgrade ユーティリティで生成される 2 つのログを表示することができます。表示できるのは
pg_upgrade_internal.log
およびpg_upgrade_server.log
です。これらのログのファイル名には、Amazon Aurora によりタイムスタンプが追加されます。これらのログも、他のログと同様、表示できます。詳細については、「Amazon Aurora ログファイルのモニタリング」を参照してください。 -
PostgreSQL の拡張機能をアップグレードします。PostgreSQL のアップグレードプロセスでは、PostgreSQL の拡張機能はアップグレードされません。詳細については、「PostgreSQL 拡張機能のアップグレード」を参照してください。
メジャーバージョンアップグレードが完了したら、以下のことをお勧めします。
-
ANALYZE
操作を実行してpg_statistic
テーブルを更新します。これは、すべての PostgreSQL DB インスタンスのすべてのデータベースに対して行う必要があります。Optimizer の統計情報はメジャーバージョンのアップグレード中には転送されないため、パフォーマンスの問題を回避するためにすべての統計情報を再生成する必要があります。次のようにパラメータを指定せずにコマンドを実行して、現在のデータベース内のすべての標準テーブルの統計情報を生成します。ANALYZE VERBOSE;
VERBOSE
フラグはオプションですが、使用することで進行状況を表示できます。詳細については、「PostgreSQL ドキュメント」の「ANALYZE」を参照してください。 注記
パフォーマンスの問題を回避するため、アップグレード後にシステムで ANALYZE を実行してください。
-
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 クラスターのエンジンバージョンを変更するには
-
AWS Management Console にサインインし、Amazon RDS コンソール (https://console.aws.amazon.com/rds/
) を開きます。 -
ナビゲーションペインで、[データベース] を選択して、アップグレードする DB クラスターを選択します。
-
[Modify] (変更) を選択します。[DB クラスターの変更] ページが表示されます。
-
[Engine version] (エンジンバージョン) で、新しいバージョンを選択します。
-
[続行] を選択して、変更の概要を確認します。
-
変更をすぐに反映させるには、[Apply immediately] を選択します。このオプションを選択すると、停止状態になる場合があります。詳細については、「Amazon Aurora DB クラスターの変更」を参照してください。
-
確認ページで、変更内容を確認します。正しい場合は、[クラスターの変更] を選択して変更を保存します。
または、[戻る] を選択して変更を編集するか、[キャンセル] を選択して変更をキャンセルします。
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-versionnew_version
\ --allow-major-version-upgrade \ --no-apply-immediately
Windows の場合:
aws rds modify-db-cluster ^ --db-cluster-identifier
mydbcluster
^ --engine-versionnew_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] (グローバルデータベース) を必ず選択してください。

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

アップグレードプロセスを開始するには、コンソールではなく 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 クラスター内のすべてのインスタンスを動作させるには、このオプションをオンにする必要があります。[マイナーバージョン自動アップグレード] の設定方法、およびクラスターレベルとインスタンスレベルで適用した場合にどのように機能するかについては、 Aurora 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 バージョンおよびこれらのマイナーバージョンおよび新しいメジャーバージョンのその他のリリースに、パッチまたは新しいマイナーバージョンアップグレードを適用する際に使用されます。つまり、これらのリリースのいずれかから新しいマイナーバージョンにアップグレードすると、ZDP が使用されます。
次の表に、ZDP が使用可能な Aurora MySQL バージョンと DB インスタンスクラスを示します。
Version | db.r* インスタンスクラス | db.t* インスタンスクラス | db.x* インスタンスクラス | db.serverless インスタンスクラス |
---|---|---|---|---|
10.21.0 以降の 10.21 バージョン | はい | はい | はい | 該当なし |
11.16.0 以降の 11.16 バージョン | はい | はい | はい | 該当なし |
11.17 以降のバージョン | はい | はい | はい | 該当なし |
12.11.0 以降の 12.11 バージョン | はい | はい | はい | 該当なし |
12.12 以降のバージョン | はい | はい | はい | 該当なし |
13.7.0 以降の 13.7 バージョン | はい | はい | はい | 該当なし |
13.8 以降のバージョン | はい | はい | はい | はい |
14.3.1 以降の 14.3 バージョン | はい | はい | はい | 該当なし |
14.4.0 以降の 14.4 バージョン | はい | はい | はい | 該当なし |
14.5 以降のバージョン | はい | はい | はい | はい |
15.3 以降のバージョン | はい | はい | はい | はい |
注記
ZDP は、Aurora Serverless v1、または Aurora グローバルデータベースとして設定されている Aurora PostgreSQL DB クラスターではサポートされていません。OS のパッチおよび OS のアップグレード適用中は ZDP はサポートされません。
ZDP は、Aurora PostgreSQL のアップグレードプロセス全体で、Aurora PostgreSQL DB クラスターへの現在のクライアント接続を維持することで機能します。ただし、以下の場合、ZDP が完了するまで接続は切断されます。
長期実行クエリまたはトランザクションが進行中である。
データ定義言語 (DDL) ステートメントが実行中である。
一時テーブルまたはテーブルロックが使用中である。
すべてのセッションが通知チャネルでリッスン中である。
「WITH HOLD」ステータスのカーソルが使用中である。
TLSv1.3 または TLSv1.1 接続が使用中である。
ZDP によるアップグレードプロセス中、データベースエンジンはすべての新規トランザクションを一時停止するためのクワイエットポイントを探します。このアクションにより、パッチおよびアップグレードの際にデータベースが保護されます。トランザクションを一時停止してもアプリケーションがスムーズに実行されるように、コードに再試行ロジックを組み込むことをお勧めします。このアプローチにより、システムは短時間のダウンタイムを問題なく管理でき、アップグレード後に新しいトランザクションを再試行できます。
ZDP が正常に完了すると、接続停止のセッションを除いたアプリケーションセッションが保持され、アップグレードがまだ進行している間にデータベースエンジンが再起動します。データベースエンジンの再起動により、スループットが一時的に低下する可能性がありますが、これは通常数秒から約 1 分間程度で済みます。
場合によっては、ダウンタイムなしのパッチ適用 (ZDP) が成功しないこともあります。例えば、Aurora PostgreSQL DB クラスターまたはそのインスタンスが pending
状態にあるときにパラメータを変更すると、ZDP を中断する原因となります。
ZDP オペレーションのメトリックとイベントについては、コンソールの「イベント」ページを参照してください。イベントには、ZDP アップグレードの開始とアップグレードの完了が含まれます。このイベントでは、プロセスに要した時間、および再起動中に保持およびドロップされた接続の数を確認できます。詳細は、データベースのエラーログに表示されます。
Aurora PostgreSQL エンジンを新しいマイナーバージョンにアップグレードする
AWS CLI、または RDS API を使用することにより、Aurora PostgreSQL DB クラスターを新しいマイナーバージョンにアップグレードできます。アップグレードを実行する前に、メジャーバージョンのアップグレードする際に推奨する内容と同じベストプラクティスを実行することをお勧めします。新しいメジャーバージョンと同様に、新しいマイナーバージョンでも、クエリ計画のリグレッションの原因となる修正などのオプティマイザの改善が行われている可能性があります。計画の安定性を確保するには、「メジャーバージョンのアップグレード後の計画の安定性の確保」で説明されているように、クエリ計画管理 (QPM) 拡張機能を使用することをお勧めします。
Aurora PostgreSQL DB クラスターのエンジンバージョンをアップグレードするには
-
AWS Management Console にサインインし、Amazon RDS コンソール (https://console.aws.amazon.com/rds/
) を開きます。 -
ナビゲーションペインで、[データベース] を選択して、アップグレードする DB クラスターを選択します。
-
[Modify] (変更) を選択します。[DB クラスターの変更] ページが表示されます。
-
[Engine version] (エンジンバージョン) で、新しいバージョンを選択します。
-
[続行] を選択して、変更の概要を確認します。
-
変更をすぐに反映させるには、[Apply immediately] を選択します。このオプションを選択すると、停止状態になる場合があります。詳細については、「Amazon Aurora DB クラスターの変更」を参照してください。
-
確認ページで、変更内容を確認します。正しい場合は、[クラスターの変更] を選択して変更を保存します。
または、[戻る] を選択して変更を編集するか、[キャンセル] を選択して変更をキャンセルします。
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-versionnew_version
\ --no-apply-immediately
Windows の場合:
aws rds modify-db-cluster ^ --db-cluster-identifier
mydbcluster
^ --engine-versionnew_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 拡張機能を更新する)」を参照してください。
pg_repack
拡張機能を更新する場合、拡張機能をドロップしてアップグレードされた DB インスタンスに新しいバージョンを作成します。詳細については、「pg_repack
ドキュメント」の「pg_repack installation
エンジンのアップグレード後に拡張機能を更新するには、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;