バックアップ ファイルを使用した EGDB インスタンスへのジオデータベースの移動

PostgreSQL の既存の ArcSDE ジオデータベースを、EGDB(エンタープライズ ジオデータベース)インスタンス間で移動したり、ローカル サーバから EGDB インスタンスに移動することができます。

そのためには、移動元ジオデータベースのバックアップの作成、移動先 EGDB インスタンスへのバックアップ ファイルの転送、および移動先 PostgreSQL データベース クラスタでのデータベースとログイン ロールの作成を行った後、データベースの復元を実行します。

変数のカスタム設定の確認

データベースの内容を新しいデータベース クラスタに移動するときに、ダンプ ファイルを復元する空のデータベースを作成します。したがって、復元を行う前に、移動元データベースのカスタム設定を新しいデータベースに追加する必要があります。

たとえば、ArcGIS アプリケーションでは、データベースの search_path 変数に sde スキーマを含めるように設定する必要があります。この変数に加え、移動元データベースで設定されているすべての変数を、新しいデータベースに追加する必要があります。このためには、移動元データベースで設定されている内容を確認しておく必要があります。

これらの設定は pgAdmin III で確認できます。

手順:
  1. pgAdmin III を使用して、移動元データベース クラスタに接続します。
  2. [オブジェクトブラウザ] ウィンドウで [データベース] ノードを展開します。
  3. 移動元データベースを右クリックし、[プロパティ] をクリックします。

    [データベース] ダイアログ ボックスが表示されます。

  4. [変数] タブをクリックし、設定されているカスタム データベース変数を確認します。
  5. これらの変数とその設定値を記録します。この情報は、新しいデータベースにこれらの変数を作成し直す際に使用します。

移動元ジオデータベースのバックアップの作成

データベースのバックアップを作成して、データ ファイルを EGDB インスタンスに転送できます。

PostgreSQL の pg_dump アプリケーションを使用して、ダンプ ファイルを作成します。

手順:
  1. 移動元ジオデータベースが格納されているサーバに接続します。
  2. MS-DOS プロンプトで pg_dump コマンドを実行して、データベースのバックアップを作成します。
    pg_dump -U postgres -F c > d:\backups\spdb.dump

    pg_dump アプリケーションの詳細については、PostgreSQL のドキュメント(http://www.postgresql.org/docs/8.3/static/app-pgdump.html)をご参照ください。

EGDB インスタンスへのバックアップ ファイルの移動

ダンプ ファイルは、いくつかの方法で移動先 EGDB インスタンスに転送できます。データを移動する方法については、「Amazon へのデータの転送方法」をご参照ください。

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

ダンプ ファイルを移動先の EGDB インスタンスに転送したら、続いて PostgreSQL データベース クラスタを準備します。

移動先 PostgreSQL データベース クラスタでの復元の準備

ダンプ ファイルの復元先となるデータベースが必要です。また、移動元データベースでデータを所有しているすべてのログイン ロールも、移動先のデータベース クラスタに存在している必要があります。

空のデータベースの作成

作成するデータベースには、移動元 PostgreSQL データベース クラスタでダンプ ファイルを作成したデータベースと同じ名前を付ける必要があります。データベースの名前は、データベース クラスタ内で一意でなければなりません。つまり、EGDB インスタンス間でデータベースを移動する場合は、以下のいずれかに注意してください。

  • デフォルトの sdegdb データベースを移動元データベースにすることはできません。

    または

  • 転送したバックアップ ファイルから復元を行う前に、移動先 PostgreSQL データベース クラスタからデフォルトの sdegdb データベースを削除する必要があります。

手順:
  1. pgAdmin III を起動します([スタート] [すべてのプログラム] [PostgreSQL 8.3] [pgAdmin III] の順にクリックします)。
  2. 移動先 PostgreSQL データベース クラスタに、postgres スーパー ユーザとしてログインします。
  3. [オブジェクトブラウザ] ウィンドウでデータベース クラスタを展開します。
  4. [データベース] を右クリックし、[新しいデータベース] をクリックします。

    [新しいデータベース] ダイアログ ボックスが表示されます。

  5. 移動先データベースを作成するために必要な情報を入力します。以下の情報に注意してください。
    • 移動先データベースの名前、所有者、およびエンコーディングは、移動元データベースの情報と同じにする必要があります。
    • 移動元データベースでデフォルト以外のデータベース テンプレート(PostGIS データベース テンプレートなど)を使用している場合は、移動先データベースでもそのテンプレートを使用します。
    • 新しいデータベースを既存の表領域に格納するか、このデータベース用に新しい表領域を作成できます。新しい表領域を使用する場合は、[新しいデータベース] ダイアログ ボックスで [キャンセル] をクリックし、EBS ドライブに表領域を作成します。続いて、もう一度 [新しいデータベース] ダイアログ ボックスを開き、移動先データベースを作成します。

    以下に、データベースを作成するために入力する情報の例を示します。

    pgAdmin III でのデータベースの作成

  6. [OK] をクリックして、データベースを作成します。

    pgAdmin III の [オブジェクトブラウザ] ウィンドウのデータベース リストに、新しいデータベースが表示されます。

データベースでの変数の設定

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

以下の手順では、search_path 変数を追加する方法を説明します。その他のデータベース変数のカスタム値を設定するには、同じ基本手順を使用します。

手順:
  1. [オブジェクトブラウザ] ウィンドウでデータベースを右クリックし、[プロパティ] をクリックします。
  2. [変数] タブをクリックします。
  3. [変数名] ドロップダウン リストで [search_path] を選択します。
  4. [変数値] テキスト ボックスに「"$user",public,sde」と入力します。
  5. [追加/変更] をクリックします。

    [変数] リストは以下のようになります。

    search_path 変数の設定

必要なその他の変数を、[変数名] ドロップダウン リストで選択し、値を設定して [追加/変更] をクリックし、すべて追加します。

ログイン ロールの作成

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

EGDB インスタンス間でデータベースを移動するときにデフォルトのログイン ロールを使用していれば、移動先データベース クラスタに新しいロールを作成する必要はありません。ただし、移動元データベースのデータをデフォルト以外のログイン ロールが所有している場合は、移動先 PostgreSQL データベース クラスタに同じ名前のログイン ロールを作成する必要があります。

手順:
  1. [オブジェクトブラウザ] ウィンドウで [ログインロール] を右クリックします。
  2. [新しいログインロール] をクリックします。
  3. ログイン ロールを作成するために必要な情報を入力します。以下の情報に注意してください。
    • ロールの名前は、移動元データベースのロールと一致している必要があります。
    • ロールには、少なくともデータベース オブジェクトを作成する権限が必要です。
  4. [OK] をクリックして、ログイン ロールを作成します。
  5. 移動元データベースでデータを所有しているログイン ロールごとに、手順 1 ~ 4 を繰り返します。

データベースの復元

PostgreSQL の pg_restore アプリケーションを使用して、データベースを復元します。

手順:
  1. 移動元ジオデータベースが格納されているサーバに接続します。
  2. pg_restore コマンドは 2 回実行する必要があります。1 回目の実行で sde_spatial_references システム テーブルを含むパブリック スキーマを復元し、2 回目の実行で残りのデータを復元します。
  3. MS-DOS プロンプトで pg_restore コマンドを実行し、データベースのパブリック スキーマを復元します。

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

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

    pg_restore アプリケーションの詳細については、PostgreSQL のドキュメント(http://www.postgresql.org/docs/8.3/static/app-pgrestore.html)をご参照ください。

移動先の PostgreSQL データベース クラスタにデータベースを復元した後、スキーマとテーブルが新しいデータベースに正しく作成されていることを確認します。このためには、pgAdmin III でデータベース クラスタに接続し、新しいデータベースを右クリックして [リフレッシュ] をクリックし、データベースを展開してスキーマとその内容を確認します。


2/6/2012