PostgreSQL データベースを Azure Arc 対応 PostgreSQL サーバーに移行する

このドキュメントでは、既存の PostgreSQL データベース (Azure Arc 対応 Data Services でホストされていないもの) を Azure Arc 対応 PostgreSQL サーバーに移行する手順について説明します。

Note

この記事で紹介しているテクノロジはプレビュー機能であり、「Microsoft Azure プレビューの追加利用規約」に従うことを条件として提供されます。

最新の更新プログラムについては、リリース ノートを参照してください。

考慮事項

Azure Arc 対応 PostgreSQL サーバーは PostgreSQL のコミュニティ バージョンです。 したがって、Azure Arc の外部にある PostgreSQL 上で動作するすべてのツールは、Azure Arc 対応 PostgreSQL サーバーで動作するはずです。

そのため、現在 Postgres で使用している一連のツールを使用して、次のことができます。

  1. Azure Arc の外部でホストされているインスタンスから Postgres データベースをバックアップする
  2. Azure Arc 対応 PostgreSQL サーバーでそれを復元する

ユーザーは次のことを行うことができます。

  • サーバー パラメーターをリセットする
  • セキュリティ コンテキストをリセットする: ユーザーやロールの再作成、アクセス許可のリセット...

このバックアップと復元操作を行うには、Postgres のバックアップと復元を実行できる任意のツールを使用できます。 次に例を示します。

  • Azure Data Studio とその Postgres 拡張機能
  • pgcli
  • pgAdmin
  • pg_dump
  • pg_restore
  • psql
  • ...

pgAdmin ツールを用いたそれらの手順について説明します。 次のセットアップを検討します。

  • ソース:
    オンプレミスのベア メタル サーバー上で実行されている、JEANYDSRV という名前の Postgres サーバー。 これはバージョン 14 で、それによってホストされている MyOnPremPostgresDB という名前のデータベースには 1 行だけのテーブル T1 が含まれます Migrate-source

  • [宛先] :
    Azure Arc 環境で実行されている、postgres01 という名前の Postgres サーバー。 バージョン 14 です。 標準の Postgres データベース以外のデータベースはありません。
    Migrate-destination

オンプレミスのソース データベースのバックアップを作成する

Migrate-source-backup

それを構成します。

  1. ファイル名を指定してください: MySourceBackup
  2. 形式を [カスタム] に設定してくださいMigrate-source-backup-configure

バックアップが正常に完了します。
Migrate-source-backup-completed

Azure Arc 対応 PostgreSQL サーバーの移行先システムに空のデータベースを作成する

Note

pgAdmin ツールで Postgres インスタンスを登録するには、Kubernetes クラスターでのインスタンスのパブリック IP を使用し、ポートとセキュリティ コンテキストを適切に設定する必要があります。 これらの詳細は、次のコマンドを実行して psql エンドポイントの行で確認できます。

az postgres server-arc endpoint list -n postgres01 --k8s-namespace <namespace> --use-k8s

次のような出力が返されます。

{
  "instances": [
    {
      "endpoints": [
    "Description": "PostgreSQL Instance",
    "Endpoint": "postgresql://postgres:<replace with password>@12.345.123.456:1234"
  },
  {
    "Description": "Log Search Dashboard",
    "Endpoint": "https://12.345.123.456:12345/kibana/app/kibana#/discover?_a=(query:(language:kuery,query:'custom_resource_name:\"postgres01\"'))"
  },
  {
    "Description": "Metrics Dashboard",
    "Endpoint": "https://12.345.123.456:12345/grafana/d/postgres-metrics?var-Namespace=arc3&var-Name=postgres01"
  }
],
"engine": "PostgreSql",
"name": "postgres01"
}
  ],
  "namespace": "arc"
}

移行先データベースに RESTORED_MyOnPremPostgresDB という名前を付けます。

Migrate-destination-db-create

Arc セットアップでデータベースを復元する

Migratre-db-restore

復元を構成します。

  1. 復元するバックアップが含まれているファイルを指定してください: MySourceBackup

  2. 形式を [カスタムまたは tar] に設定したままにしてくださいMigrate-db-restore-configure

  3. [復元] をクリックします。

    復元が成功します。
    Migrate-db-restore-completed

Azure Arc 対応 PostgreSQL Hyperscaleサーバーでデータベースが正常に復元されたことを確認する

次のいずれかの方法を使用します。

pgAdmin から:

Azure Arc のセットアップでホストされている Postgres インスタンスを展開します。 復元したデータベースのテーブルが表示され、データを選択すると、オンプレミスのインスタンスと同じ行が表示されます。

Migrate-db-restore-verification

Azure Arc セットアップ内の psql から:

Arc セットアップ内では、psql を使用して Postgres インスタンスに接続し、データベース コンテキストを RESTORED_MyOnPremPostgresDB に設定して、データのクエリを実行できます。

  1. psql の接続文字列の形成に役立つエンド ポイントの一覧を表示します。

    az postgres server-arc endpoint list -n postgres01 --k8s-namespace <namespace> --use-k8s
    
    {
      "instances": [
        {
          "endpoints": [
        "Description": "PostgreSQL Instance",
        "Endpoint": "postgresql://postgres:<replace with password>@12.345.123.456:1234"
      },
      {
        "Description": "Log Search Dashboard",
        "Endpoint": "https://12.345.123.456:12345/kibana/app/kibana#/discover?_a=(query:(language:kuery,query:'custom_resource_name:\"postgres01\"'))"
      },
      {
        "Description": "Metrics Dashboard",
        "Endpoint": "https://12.345.123.456:12345/grafana/d/postgres-metrics?var-Namespace=arc3&var-Name=postgres01"
      }
    ],
    "engine": "PostgreSql",
    "name": "postgres01"
    }
      ],
      "namespace": "arc"
    }
    
  2. psql の接続文字列から、-d パラメーターを使用してデータベース名を指定します。 次のコマンドでは、パスワードの入力を求められます。

    psql -d RESTORED_MyOnPremPostgresDB -U postgres -h 10.0.0.4 -p 32639
    

    psql が接続します。

    Password for user postgres:
    psql (10.12 (Ubuntu 10.12-0ubuntu0.18.04.1), server 12.3 (Debian 12.3-1.pgdg100+1))
    WARNING: psql major version 10, server major version 12.
          Some psql features might not work.
    SSL connection (protocol: TLSv1.3, cipher: TLS_AES_256_GCM_SHA384, bits: 256, compression: off)
    Type "help" for help.
    
    RESTORED_MyOnPremPostgresDB=#   
    
  3. テーブルを選択すると、オンプレミスの Postgres インスタンスから復元したデータが表示されます。

    RESTORED_MyOnPremPostgresDB=# select * from t1;
    
     col1 |    col2
    ------+-------------
        1 | BobbyIsADog
    (1 row)
    

Note

  • 現在、オンプレミスまたはその他のクラウドで実行されている既存の Postgres インスタンスを "Azure Arc にオンボードする" ことはできません。 つまり、既存の Postgres インスタンスに何らかの種類の "Azure Arc エージェント" をインストールして、Azure Arc で Postgres セットアップ対応にすることはできません。代わりに、新しい Postgres インスタンスを作成し、そこにデータを転送する必要があります。 上記の方法を使用してこれを行うことも、任意の ETL ツールを使用することもできます。

* これらのドキュメントで、Azure portal へのサインインおよび Azure Database for PostgreSQL の作成に関するセクションはスキップしてください。 Azure Arc デプロイの残りの手順を実装します。 これらのセクションは Azure クラウドで PaaS サービスとして提供される Azure Database for PostgreSQL サーバーに固有のものですが、ドキュメントの他の部分は Azure Arc 対応 PostgreSQL サーバーに直接適用できます。