メニュー
Amazon Relational Database Service
ユーザーガイド (API Version 2014-10-31)

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

Amazon Relational Database Service (Amazon RDS) が新バージョンのデータベースエンジンをサポートすると、DB インスタンスをその新バージョンにアップグレードできます。アップグレードには、メジャーバージョンのアップグレードとマイナーバージョンのアップグレードの 2 種類があります。

Amazon RDS は、PostgreSQL の DB インスタンスのメジャーおよびマイナーバージョンアップグレードをサポートしています。

メジャーバージョンのアップグレードには、既存のアプリケーションとの下位互換性のないデータベースの変更が含まれる場合があります。このため、Amazon Relational Database Service (Amazon RDS) ではメジャーバージョンのアップグレードは自動的に適用されません。手動で DB インスタンスを変更する必要があります。メジャーバージョンアップグレードは、インスタンスを変更することによって、手動で開始することができます。ただしメジャーバージョンアップグレードを実行する際に従うべき、お勧めの手順があります。詳細については、「メジャーバージョンアップグレード」を参照してください。

マイナーバージョンアップグレードは、インスタンスを変更することによって手動で開始することができます。また、DB インスタンスの作成時または変更時に [Auto Minor Version Upgrade] オプションを選択し、新しいバージョンが Amazon RDS によってテストおよび承認されたらインスタンスを自動的にアップグレードさせることもできます。

AWS RDS は、PostgreSQL の拡張機能を自動的にアップグレードしません。拡張機能をアップグレードするには、ALTER EXTENSION UPDATE コマンドを使用する必要があります。たとえば、PostgreSQL DB エンジンを 9.4.x から 9.5.x にアップグレードするときに PostGIS アップグレードするには、次のコマンドを実行します。

Copy
ALTER EXTENSION POSTGIS UPDATE TO '2.2.2'

アップグレードの概要

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

注記

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

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

DB インスタンスがマルチ AZ 配置にある場合、プライマリとスタンバイのレプリカの両方がアップグレードされます。プライマリとスタンバイの DB インスタンスは同時にアップグレードされ、アップグレードが完了するまで停止します。

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

メジャーバージョンのアップグレードには、以前のバージョンのデータベースと下位互換性のないデータベースの変更が含まれる場合があります。その場合、既存のアプリケーションが適切に動作しなくなることがあります。Amazon RDS では、このような状況を想定してメジャーバージョンのアップグレードを自動的には適用しません。メジャーバージョンのアップグレードを実行するには、手動で DB インスタンスを変更する必要があります。本稼働 DB インスタンスにアップグレードを適用する前に、アップグレードを綿密にテストしてアプリケーションが正常に動作することを確認してください。ベストプラクティスとして、DB スナップショットから作成した復元済みインスタンスのメジャーバージョンアップグレードを実行することをおすすめします。

Amazon RDS は、以下からのインプレースアップグレードをサポートします:

  • PostgreSQL 9.3.x DB インスタンスから PostgreSQL 9.4.x DB インスタンスへ

  • PostgreSQL 9.4.x DB インスタンスから PostgreSQL 9.5.x DB インスタンスへ

  • PostgreSQL 9.5.x DB インスタンスから PostgreSQL 9.6.x DB インスタンスへ

Amazon RDS は http://www.postgresql.org/docs/9.4/static/pgupgrade.htmlpg_upgrade ユーティリティを使用して、インスタンスを安全にアップグレードします。

9.3 に対する一部の PostgreSQL マイナーバージョンの更新には、メジャーバージョン 9.4 のリリース後にリリースされたものがあるので、バージョン 9.3.9 から 9.4.1 へアップグレードすることや、バージョン 9.3.10 から 9.4.1 または 9.4.4 へアップグレードすることはできません。

リードレプリカにはメジャーバージョンのアップグレードを実行できません。ソースインスタンスにはメジャーバージョンのアップグレードを実行できますが、すべてのリードレプリカは、以前のエンジンバージョンの読み取り可能なノードとして維持されます。ソースインスタンスをアップグレードした後は、リードレプリカはソースインスタンスで実行された変更をレプリケートできなくなります。ソースインスタンスを別のメジャーバージョンにアップグレードしてから、リードレプリカを昇格させるか、削除後に再作成することをお勧めします。

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

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

  1. Have a version-compatible parameter group ready – If you are using a custom parameter group, you must specify either a default parameter group for the new DB engine version or create your own custom parameter group for the new DB engine version. Associating the new parameter group with the DB instance requires a customer-initiated database reboot after the upgrade completes. The instance's parameter group status will show pending-reboot if the instance needs to be rebooted to apply the parameter group changes. An instance's parameter group status can be viewed in the AWS console or by using a "describe" call such as describe-db-instances.

  2. Check for unsupported usage:

    1. Prepared transactions – Commit or roll back all open prepared transactions before attempting an upgrade.

      You can use the following query to verify that there are no open prepared transactions on your instance:

      Copy
      SELECT count(*) FROM pg_catalog.pg_prepared_xacts;
    2. The line data type – If you are upgrading an RDS PostgreSQL 9.3 instance, you must remove all uses of the line data type before attempting an upgrade, because the line data type was not fully implemented in PostgreSQL until version 9.4.

      You can use the following query on each database to be upgraded to verify that there are no uses of the line data type in each database:

      Copy
      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 = 'pg_catalog.line'::pg_catalog.regtype 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');

      注記

      To list all databases on an instance, use the following query:

      Copy
      SELECT d.datname FROM pg_catalog.pg_database d WHERE d.datallowconn = true;
    3. Reg* data types – Remove all uses of the reg* data types before attempting an upgrade, because these data types contain information that cannot be persisted with pg_upgrade. Uses of reg* data types cannot be upgraded, except for regtype and regclass. Remove all usages before attempting an upgrade.

      You can use the following query to verify that there are no uses of unsupported reg* data types in each database:

      Copy
      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');
  3. Perform a VACUUM operation before upgrading your instance. The pg_upgrade utility vacuums each database when you upgrade to a different major version. If you haven't performed a VACUUM operation, the upgrade process can take much longer, causing increased downtime for your RDS instance.

  4. Perform a dry run of your major version upgrade. We highly recommend testing major version upgrade on a duplicate of your production database before attempting it on your production database. To create a duplicate test instance, you can either restore your database from a recent snapshot or point-in-time restore your database to its latest restorable time. After you have completed the major version upgrade, consider testing your application on the upgraded database with a similar workload in order to verify that everything works as expected. After the upgrade is verified, you can delete this test instance.

  5. We recommend that you perform a backup before performing the major version upgrade so that you have a known restore point for your database. Note that we create a DB snapshot of your DB instance before and after upgrading.

  6. Upgrade your production instance. If the dry-run major version upgrade was successful, you should now be able to upgrade your production database with confidence.

Amazon RDS では、pg_upgrade ユーティリティによって作成される 2 つのログ、pg_upgrade_internal.log および pg_upgrade_server.log を表示できます。Amazon RDS はこれらのログのファイル名にタイムスタンプを追加します。これらのログも、他のログと同様、表示できます。

アップグレードプロセス中の時点を指定して、インスタンスのポイントインタイムの復元を実行することはできません。アップグレードプロセスでは、RDS はアップグレードの実行後にインスタンスの自動バックアップを実行します。ポイントインタイムの復元を実行できるのは、アップグレードの開始前およびインスタンスの自動バックアップ完了後です。

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

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

マイナーバージョンアップグレードは、マイナーアップグレードが Amazon RDS でテストおよび承認されており、お客様が [Auto Minor Version Upgrade] オプションを選択している場合に、自動的に行われます。その他の場合は、DB インスタンスを手動で変更してマイナーバージョンアップグレードを実行する必要があります。DB インスタンスの作成時または変更時に [Auto Minor Version Upgrade] オプションを選択した場合、Amazon RDS で新バージョンがテストおよび承認されると、インスタンスで自動的にアップグレードされます。

ご使用の PostgreSQL DB インスタンスでリードレプリケーションを使用している場合は、ソースインスタンスのアップグレード前に、すべてのリードレプリカをアップグレードする必要があります。DB インスタンスをマルチ AZ 配置に使用している場合、プライマリとスタンバイの両方のレプリカがアップグレードされるため、アップグレードが完了するまでそのインスタンスを使用できなくなることがあります。

AWS マネジメントコンソール

To apply a DB engine major version upgrade to a DB instance

  1. AWS マネジメントコンソールにサインインし、Amazon RDS コンソール (https://console.aws.amazon.com/rds/) を開きます。

  2. In the navigation pane, choose Instances.

  3. Choose the check box for the DB instance that you want to upgrade.

  4. Choose Instance Actions, and then choose Modify.

  5. For DB Engine Version, choose the new version.

  6. To upgrade immediately, select Apply Immediately. To delay the upgrade to the next maintenance window, clear Apply Immediately.

  7. Choose Continue.

  8. Review the modification summary information. To proceed with the upgrade, choose Modify DB Instance. To cancel the upgrade, choose Cancel or Back.

CLI

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

  • --db-instance-identifier – DB インスタンスの名前です。

  • --engine-version – アップグレード先のデータベースエンジンのバージョン番号です。

  • --allow-major-version-upgrade – メジャーバージョンをアップグレードします。

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

Linux、OS X、Unix の場合:

Copy
aws rds modify-db-instance \ --db-instance-identifier <mydbinstance> \ --engine-version <new_version> \ --allow-major-version-upgrade \ --apply-immediately

Windows の場合:

Copy
aws rds modify-db-instance ^ --db-instance-identifier <mydbinstance> ^ --engine-version <new_version> ^ --allow-major-version-upgrade ^ --apply-immediately

API

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

  • DBInstanceIdentifier – DB インスタンスの名前、たとえば mydbinstance です。

  • EngineVersion – アップグレード先のデータベースエンジンのバージョン番号です。

  • AllowMajorVersionUpgrade – メジャーバージョンをアップグレードするには、true に設定します。

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

Copy
https://rds.us-east-1.amazonaws.com/ ?Action=ModifyDBInstance &ApplyImmediately=false &DBInstanceIdentifier=mydbinstance &EngineVersion=new_version &SignatureMethod=HmacSHA256 &SignatureVersion=4 &Version=2013-09-09 &X-Amz-Algorithm=AWS4-HMAC-SHA256 &X-Amz-Credential=AKIADQKE4SARGYLE/20131016/us-east-1/rds/aws4_request &X-Amz-Date=20131016T233051Z &X-Amz-SignedHeaders=content-type;host;user-agent;x-amz-content-sha256;x-amz-date &X-Amz-Signature=087a8eb41cb1ab5f99e81575f23e73757ffc6a1e42d7d2b30b9cc0be988cff97

関連トピック