Azure Database for PostgreSQL を別のリージョンに移動する

この記事では、レプリケーションやジオリストアが利用できない地域におけるAzure Database for PostgreSQL、シングルサーバー、フレキシブルサーバーのリロケーションガイダンスを扱っています。

あなたが既存のAzureリソースをある地域から別の地域に移動したいと思う理由には、様々なものがあります。 次の操作を行うことをお勧めします:

  • 新しい Azure リージョンを活用してください。
  • 特定の地域でのみ利用可能な機能やサービスを展開する。
  • 内部ポリシーとガバナンスの要件を満たす。
  • 企業の合併・買収に適応する
  • 容量計画の要件を満たしてください。

Azure Cosmos DB for PostgreSQL(旧称Azure Database for PostgreSQL - Hyperscale (Citus))のrelocation 方法を学びたい方は、「Read replicas in Azure Cosmos DB for PostgreSQL 」をご覧ください。

ネイティブ複製でサポートされているリージョンペアの概要については、 クロスリージョン複製を参照してください。

前提条件

前提条件は データ付き再デプロイにのみ適用されます。 データなしでデータベースを移動するには、 Prepareをスキップできます。

  • PostgreSQLをある地域から別の地域へデータを持ち移すには、バックアップや復元ツールを実行するための追加の計算リソースが必要です。 このガイドの例はUbuntu 20.04 LTSを実行しているAzure VMを使っています。 計算資源は以下の通りでなければなりません:

    • プライベートネットワーク上またはファイアウォールルールに含めて、ソースサーバーとターゲットサーバーの両方にネットワークアクセスを持つこと。
    • 発生源またはターゲット領域のいずれかに位置してください。
    • Accelerated Networking(可能であれば)を活用してください。
    • データベースの内容は中間ストレージに保存されることはありません。論理バックアップツールの出力は直接ターゲットサーバーに送信されます。
  • Azure Database for PostgreSQLのインスタンス設計によっては、以下の依存リソースをリロケーション前にターゲットリージョンにデプロイ・設定する必要がある場合があります:

稼働停止時間 (ダウンタイム)

可能性のあるダウンタイムを理解するためには、「Azureのクラウド導入フレームワーク: 移行方法の選択」を参照してください。

準備する

作業を始めるには、リソース マネージャー テンプレートをエクスポートします。 このテンプレートには、オートメーション名前空間を説明する設定が含まれています。

  1. Azure portal にサインインします。

  2. すべてのリソースを選択し、次に自動化リソースを選択します。

  3. [テンプレートのエクスポート] を選択します。

  4. エクスポート テンプレート ページで、ダウンロード を選択します。

  5. ポータルからダウンロードした .zip ファイルを見つけて、そのファイルを好きなフォルダに解凍してください。

    この zip ファイルには、テンプレートとテンプレートをデプロイするためのスクリプトを含む .json ファイルが含まれています。

データなしで再展開する

  1. エクスポートしたテンプレートのパラメータを宛先の領域に合わせて調整してください。

    重要

    ターゲットサーバーはソースサーバーの名前とは異なる必要があります。 クライアントを新しいサーバーに向け直すように再設定する必要があります。

  2. テンプレートを新しい地域に再デプロイしてください。 ARM テンプレートを使用して Azure Database for PostgreSQL を作成する方法の例については、Quickstart: Use an ARM template to create an Azure Database for PostgreSQL - Flexible Server を参照してください。

データを使用して再デプロイする

Azure Database for PostgreSQLのデータ移行を伴う再展開は論理的なバックアップと復元に基づいており、ネイティブツールが必要です。 そのため、復旧作業中に明らかなダウンタイムが発生することが予想されます。

ヒント

Azureポータルを使ってAzure Database for PostgreSQL - Flexible Serverを移動させることができます。 シングルサーバーでのレプリケーションの実施方法を学びたい方は、「Azureポータルを使ってMove an Azure Database for PostgreSQL - Flexible Serverを別のリージョンに移す」をご覧ください。

  1. エクスポートしたテンプレートのパラメータを宛先の領域に合わせて調整してください。

    重要

    ターゲットサーバー名は送信元サーバー名とは異なる必要があります。 クライアントを新しいサーバーに向け直すように再設定する必要があります。

  2. テンプレートを新しい地域に再デプロイしてください。 ARM テンプレートを使って Azure Database for PostgreSQL を作成する方法の例については、「クイック スタート: ARM テンプレートを使用して Azure Database for PostgreSQL - Flexible Server を作成する」をご覧ください。

  3. 移行用にプロビジョニングされたコンピュートリソースに、移行予定のPostgreSQLバージョン用のPostgreSQLクライアントツールをインストールします。 以下の例は、Ubuntu 20.04 LTSを実行するAzure VM上でPostgreSQLバージョン13を使用しています。

      sudo sh -c 'echo "deb http://apt.postgresql.org/pub/repos/apt $(lsb_release -cs)-pgdg main" > /etc/apt/sources.list.d/pgdg.list'
      wget --quiet -O - https://www.postgresql.org/media/keys/ACCC4CF8.asc | sudo apt-key add -
      sudo apt-get update
      sudo apt-get install -y postgresql-client-13
    

    UbuntuにおけるPostgreSQLコンポーネントのインストールに関する詳細は、 Linux downloads (Ubuntu)を参照してください。

    他のプラットフォームについては 、PostgreSQL Downloadsにアクセスしてください。

  4. (任意)ソースサーバーで追加ロールを作成した場合は、ターゲットサーバーで作成してください。 既存の役割のリストを取得するには、以下のクエリを使用します。

    select *
    from pg_catalog.pg_roles
    where rolename not like 'pg_%' and rolename not in ('azuresu', 'azure_pg_admin', 'replication')
    order by rolename;
    
  5. 各データベースを移行するには、以下の手順を行います。

    1. ソースサーバー上のすべてのデータベース活動を停止してください。

    2. 認証情報、ソースサーバー、ターゲットサーバー、データベース名を以下のスクリプトで置き換えます。

      export USER=admin_username
      export PGPASSWORD=admin_password
      export SOURCE=pgsql-arpp-source.postgres.database.azure.com
      export TARGET=pgsql-arpp-target.postgres.database.azure.com
      export DATABASE=database_name
      pg_dump -h $SOURCE -U $USER --create --exclude-schema=pg_catalog $DATABASE | psql -h $TARGET -U $USER postgres
      
    3. データベースを移行するには、スクリプトを実行してください。

    4. クライアントをターゲットサーバーを指すように設定してください。

    5. アプリケーションに対して機能テストを実施してください。

      1. ignoreMissingVnetServiceEndpointフラグがFalseに設定されていることを確認してください。そうすれば、サービスエンドポイントがターゲットリージョンで設定されていない場合、IaCがデータベースを展開できません。