Azure Database for PostgreSQL を別のリージョンに再配置する
この記事では、リージョン ペアをレプリケーションと geo リストアに使用できない複数の地域にまたがる Azure Database for PostgreSQL、単一サーバー、フレキシブル サーバーの再配置ガイダンスについて説明します。
既存の Azure リソースを 1 つのリージョンから他のリージョンに移動する必要が生じる理由は多数存在します。 以下を行うことができます。
- 新しい Azure リージョンの利点を活用する。
- 特定のリージョンでしか利用できない機能やサービスをデプロイする。
- 内部ポリシーやガバナンスの要件を満たす。
- 会社の合併と買収に合わせた調整を行う
- 容量計画の要件を満たす。
Azure Cosmos DB for PostgreSQL (旧称 Azure Database for PostgreSQL - Hyperscale (Citus)) を再配置する方法については、「Azure Cosmos DB for PostgreSQL の読み取りレプリカ」を参照してください。
ネイティブ レプリケーションでサポートされるリージョン ペアの概要については、「リージョン間レプリケーション」を参照してください。
前提条件
前提条件は、データを含む再デプロイにのみ適用されます。 データなしでデータベースを移動する場合は、「準備」をスキップできます。
- データを含む PostgreSQL をあるリージョンから別のリージョンに再配置するには、バックアップおよび復元ツールを実行するための追加のコンピューティング リソースが必要です。 このガイドの例では、Ubuntu 20.04 LTS を実行している Azure VM を使用します。 コンピューティング リソースは次の条件を満たしている必要があります。
- プライベート ネットワーク上で、またはファイアウォール規則に含めることによって、ソース サーバーとターゲット サーバーの両方にネットワーク アクセスできる。
- ソース リージョンまたはターゲット リージョンのどちらかに配置されている。
- 高速ネットワークを使用している (使用可能な場合)。
- データベースの内容が中間ストレージに保存されず、論理バックアップ ツールの出力がターゲット サーバーに直接送信される。
- Azure Database for PostgreSQL インスタンスの設計によっては、再配置の前に、次の依存リソースをターゲット リージョンにデプロイして構成する必要がある場合があります。
ダウンタイム
発生の可能性のあるダウンタイムを理解するには、「Azure 向けのクラウド導入フレームワーク: 再配置方法を選択する」を参照してください。
準備
まず、Resource Manager テンプレートをエクスポートします。 このテンプレートには、Automation 名前空間について記述する設定が含まれています。
Azure portal にサインインします。
[すべてのリソース] を選択してから、Automation リソースを選択します。
[テンプレートのエクスポート] を選択します。
[テンプレートのエクスポート] ページで [ダウンロード] を選択します。
ポータルからダウンロードした .zip ファイルを見つけて、選択したフォルダーにそのファイルを解凍します。
この zip ファイルには、テンプレートとテンプレートをデプロイするためのスクリプトから構成される .json ファイルが含まれています。
データなしで再デプロイする
- エクスポートされたテンプレート パラメーターを宛先リージョンに合わせて調整します。
重要
ターゲット サーバーは、ソース サーバーの名前とは異なる必要があります。 新しいサーバーを指すようにクライアントを再構成する必要があります。
- テンプレートを新しいリージョンに再デプロイします。 ARM テンプレートを使用して Azure Database for PostgreSQL を作成する方法の例については、「クイック スタート: ARM テンプレートを使用して Azure Database for PostgreSQL - フレキシブル サーバーを作成する」を参照してください。
データを含めて再デプロイする
Azure Database for PostgreSQL のデータ移行を伴う再デプロイは、論理バックアップと復元に基づいており、ネイティブ ツールが必要です。 その結果、復元中に顕著なダウンタイムが発生することが予想されます。
ヒント
Azure portal を使用して Azure Database for PostgreSQL - フレキシブル サーバーを再配置できます。 単一サーバーのレプリケーションを実行する方法については、「Azure portal を使用して Azure Database for PostgreSQL - フレキシブル サーバーを別のリージョンに移動する」を参照してください。
- エクスポートされたテンプレート パラメーターを宛先リージョンに合わせて調整します。
重要
ターゲット サーバー名は、ソース サーバー名とは異なる必要があります。 新しいサーバーを指すようにクライアントを再構成する必要があります。
テンプレートを新しいリージョンに再デプロイします。 ARM テンプレートを使用して Azure Database for PostgreSQL を作成する方法の例については、「クイック スタート: ARM テンプレートを使用して Azure Database for PostgreSQL - フレキシブル サーバーを作成する」を参照してください。
移行用にプロビジョニングされたコンピューティング リソースに、移行する 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 ダウンロード (Ubuntu)」を参照してください。
他のプラットフォームについては、「PostgreSQL ダウンロード」にアクセスしてください。
(省略可能) ソース サーバーで追加のロールを作成した場合は、ターゲット サーバーでもそのロールを作成します。 既存のロールの一覧を取得するには、次のクエリを使用します。
select * from pg_catalog.pg_roles where rolename not like 'pg_%' and rolename not in ('azuresu', 'azure_pg_admin', 'replication') order by rolename;
各データベースを移行するには、次の手順を実行します。
- ソース サーバー上のすべてのデータベース アクティビティを停止します。
- 次のスクリプトの資格情報、ソース サーバー、ターゲット サーバー、データベース名を置き換えます。
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
データベースを移行するには、スクリプトを実行します。
ターゲット サーバーを指すようにクライアントを構成します。
アプリケーションで機能テストを実行します。
- サービス エンドポイントがターゲット リージョンで構成されていない場合に IaC がデータベースのデプロイに失敗するように、
ignoreMissingVnetServiceEndpoint
フラグがFalse
に設定されていることを確認します。
- サービス エンドポイントがターゲット リージョンで構成されていない場合に IaC がデータベースのデプロイに失敗するように、