Skip To Content

AWS インスタンス間での PostgreSQL のジオデータベースの移行

既存の PostgreSQL のエンタープライズ ジオデータベースを、バックアップ ファイルを使用して、ローカル サーバーから ArcGIS Enterprise on Amazon Web Services インスタンスに、または ArcGIS Enterprise on Amazon Web Services インスタンス間で移行できます。

これを行うためには、pg_dump ファイルを使用したデータベースの転送に関して、ソースおよびターゲットの両方の PostgreSQL データベース クラスターに互換性がある必要があります。使用しているバージョンに互換性があるかどうかについては、PostgreSQL のドキュメントをご参照ください。

PostgreSQL バージョンに互換性がある場合、ソース ジオデータベースのバックアップを作成し、バックアップ ファイルをターゲット ArcGIS Enterprise on Amazon Web Services インスタンスに転送します。続いて、ターゲット PostgreSQL データベース クラスターにデータベースとログイン ロールを作成して、データベースを復元します。

注意:

このワークフローは、Amazon Relational Database Services for PostgreSQL には適用されません。

カスタム変数設定の確認

ソース データベース クラスターのカスタム設定を保持する場合は、これらを新しいデータベース クラスターに追加する必要があります。構成設定は postgresql.conf ファイルに格納されています。このファイルのコピーを作成し、ArcGIS Enterprise on Amazon Web Services インスタンス上のターゲット データベース クラスターに移行します。

ArcGIS Enterprise on Amazon Web Services インスタンス上の postgresql.conf ファイルは、マウントされているドライブの /data にあります。

ソース ジオデータベースのバックアップの作成

ArcGIS Enterprise on Amazon Web Services インスタンスにデータ ファイルを移行するデータベースのバックアップを作成できます。

PostgreSQL の pg_dump コマンドを使用して、ダンプ ファイルを作成します。

  1. ソース ジオデータベースが格納されているサーバーに接続します。
  2. シェル コマンド プロンプトで pg_dump コマンドを実行して、データベースのバックアップを作成します。
    pg_dump -U postgres -F c > /data/spdbbu11012.dump

    pg_dump コマンドの詳細については、PostgreSQL のドキュメントをご参照ください。

移行先インスタンスへのバックアップ ファイルの移行

ダンプ ファイルをターゲット インスタンスに転送するには、いくつかの方法があります。データの移行に利用できる方法については、「Amazon Web Services へのデータの転送方法」をご参照ください。必要な場合は、postgresql.conf ファイルも同じ方法を使用して移行できます。

ダンプ ファイルは EBS (Elastic Block Store) ボリュームに配置してください。

ダンプ ファイルがターゲット ArcGIS Enterprise on Amazon Web Services インスタンスに配置されたら、PostgreSQL データベース クラスターを準備します。

ターゲット PostgreSQL データベース クラスターの準備

ダンプ ファイルを復元するデータベースが必要です。また、ソース データベースでデータを所有しているログイン ロールが、ターゲット データベース クラスターに存在している必要があります。

構成ファイルの配置

カスタマイズした postgresql.conf ファイルを使用している場合は、ターゲット インスタンスでデフォルトの postgresql.conf ファイルのバックアップ コピーを作成し、カスタマイズしたファイルをマウントされているドライブの /data に配置します。

空のデータベースの作成

作成するデータベースの名前は、ダンプ ファイルを作成したソース PostgreSQL データベース クラスターのデータベースと同じにする必要があります。データベース名は、データベース クラスター内で一意である必要があります。つまり、ArcGIS Enterprise on Amazon Web Services 間でデータベースを移行する場合、次の条件のいずれかが満たされている必要があります。

  • ソース データベースと、関連先データベース クラスター上のデータベースで同じ名前を使用することはできません。

    もしくは

  • 転送したバックアップ ファイルを復元する前に、同じ名前のデータベースを PostgreSQL データベース クラスターから削除する必要があります。
  1. ターゲット EC2 インスタンスに root ユーザーとしてログインします。
  2. コマンド シェルを開き、psql に sde ユーザーとしてログインします。
  3. ダンプ ファイルを復元するデータベースを作成します。

    次の情報に注意してください。

    • ターゲット データベースの名前、所有者、およびエンコーディングは、ソース データベースと同じにする必要があります。
    • ソース データベースでデフォルト以外のデータベース テンプレート (PostGIS データベース テンプレートなど) を使用している場合は、ターゲット データベースでも同じテンプレートを使用します。
    • 新しいデータベースは既存の表領域に格納するか、このデータベース専用に新しい表領域を作成できます。新しい表領域を使用する場合は、データベースを作成する前に作成しておく必要があります。

    CREATE DATABASE <dbname>
      WITH OWNER = sde
           TEMPLATE = template0
           ENCODING = '<encoding of db>'
           TABLESPACE = 
           LC_COLLATE = ''
           LC_CTYPE = ''
           CONNECTION LIMIT = -1;

ログインおよびグループ ロールの作成

ターゲット データベース クラスターには、ソース データベースでデータを所有している各ユーザーのログイン ロールが含まれている必要があります。

データベースを ArcGIS Enterprise on Amazon Web Services インスタンス間で移動している場合、デフォルトのログイン ロールを使用しているときは、ターゲット データベース クラスターに新しいロールを作成する必要はありません。ただし、ソース データベースのデータがデフォルト以外のログイン ロールによって所有されている場合は、ターゲット PostgreSQL データベース クラスターに同じ名前のログイン ロールを作成する必要があります。同様に、ターゲット データベースでグループ ログインを使用する場合は、これらを作成し直してログイン ロールに付与する必要があります。

グループおよびログイン ロールの作成とグループへのログインの追加については、PostgreSQL のマニュアルをご参照ください。

データベースの復元

データベースを復元するには、PostgreSQL の pg_restore コマンドを使用します。

注意:

pg_restore コマンドは 2 回実行する必要があります。最初の実行で sde_spatial_references システム テーブルを含むパブリック スキーマを復元し、2 回目の実行で残りのデータを復元します。この手順を実行しなければ、空間データは復元されません。

  1. (ダンプ ファイルを移動した) 移行先 ArcGIS Enterprise on Amazon Web Services インスタンスに接続します。
  2. コマンド シェルを開き、psql に sde ユーザーとしてログインします。
  3. コマンド シェル プロンプトで pg_restore コマンドを実行し、パブリック スキーマをデータベースに復元します。

    pg_restore コマンドを実行するには、sde ユーザーが PostgreSQL のスーパーユーザーである必要があります。

    pg_restore -U sde -n public -d spdb /data/spdbbu11012.dump
    Password:
  4. もう一度 pg_restore コマンドを実行し、データベース全体を復元します。
    pg_restore -U sde -d spdb /data/spdbbu11012.dump
    Password:

    pg_restore コマンドの詳細については、PostgreSQL のドキュメントをご参照ください。

データベースをターゲット PostgreSQL データベース クラスターに復元した後、新しいデータベースのスキーマとテーブルが適切であることを確認します。確認するには、この情報を格納している PostgreSQL カタログ ビューにクエリを実行します。たとえば、pg_tables カタログ ビューにクエリを実行して、データベース内のすべてのテーブルと、それらが格納されているスキーマを表示できます。

データベース変数の設定

次に、収集しておいたカスタム データベース変数の情報を使用して、新しいデータベースに変数を設定します。

次の手順では、search_path 変数を追加および設定する方法を説明しています。その他のデータベース変数にカスタム値を設定する場合も、同様の基本手順を使用します。

  1. psql から新しいデータベースに sde ユーザーとして接続します。
  2. psql プロンプトで、データベースの検索パスを sde スキーマを含むように設定します。

    SET search_path TO "$user",public,sde;

関連トピック