チュートリアル: 移行サービスを使用して Azure Database for PostgreSQL - 単一サーバー から Azure Database for PostgreSQL - フレキシブル サーバーに移行する

適用対象: Azure Database for PostgreSQL - フレキシブル サーバー

Azure portal を使って、Azure Database for PostgreSQL – 単一サーバーのインスタンスを Azure Database for PostgreSQL – フレキシブル サーバーに移行できます。 このチュートリアルでは、Azure portal を使用して、Azure Database for PostgreSQL シングル サーバーから PostgreSQL フレキシブル サーバーへのサンプル データベースの移行を実行します。

  • Azure Database for PostgreSQL - フレキシブル サーバーを構成する
  • 移行タスクを構成する
  • 移行を監視する
  • 移行の取り消し
  • 移行後の処理

Azure portal を使用して移行できます。

前提条件 (オフライン)

Azure Database for PostgreSQL の移行サービスを使用して移行を開始する前に、オフライン移行シナリオに適用される次の前提条件を満たすことが不可欠です。

ソース バージョンの確認

ソース PostgreSQL のバージョンは >= 9.5 である必要があります。 ソース PostgreSQL のバージョンが 9.5 より小さい場合は、移行前にソース PostgreSQL のバージョンを 9.5 以上にアップグレードします。

ターゲット設定

  • 移行する前に、Azure Database for PostgreSQL を Azure で設定する必要があります。

  • Azure Database for PostgreSQL 用に選択された SKU は、互換性と適切なパフォーマンスを確保するために、ソース データベースの仕様に対応している必要があります。

  • 新しい Azure Database for PostgreSQL を作成する方法の詳細については、次の「クイック スタート: サーバー の作成」リンクを参照してください。

ネットワークのセットアップ

移行中にソースとターゲットの間の接続を正常に行うためには、適切なネットワーク設定が不可欠です。 さまざまなシナリオでネットワーク接続を確立するのに役立つガイドを次に示します:

移行のネットワーク要件:

  • ExpressRoute/IPsec VPN/VPN トンネリング: オンプレミス/AWS ソースを Azure に接続する場合、セキュリティで保護されたデータ転送を容易にするために、ExpressRoute、IPsec VPN、または VPN トンネリングを設定することが必要になる場合があります。

  • VNET ピアリング: 2 つの異なる VNet 間に仮想ネットワーク ピアリングを確立して、直接ネットワーク接続を有効にします。これは、Azure VM と Azure Database for PostgreSQL の間の移行の前提条件です。

接続のシナリオ:

次の表は、ソースとターゲット間のネットワークの設定に役立ちます。

source 移行先 接続に関するヒント
公開 公開 ソースがターゲットのファイアウォール規則でホワイトリストに登録されている場合、他のアクションは必要ありません。
Private Public この構成はサポートされていません。データ転送には pg_dump/pg_restore を使用します。
パブリック プライベート ソースがターゲットのファイアウォール規則でホワイトリストに登録されている場合、他のアクションは必要ありません。
プライベート プライベート ソースとターゲットの間に ExpressRoute、IPsec VPN、VPN トンネリング、または仮想ネットワーク ピアリングを確立します。
プライベート プライベート エンドポイント この構成はサポートされていません。Microsoft サポートにお問い合わせください。

ネットワークに関するその他の考慮事項:

  • pg_hba.conf 構成: ソースとターゲットの PostgreSQL インスタンス間の接続を容易にするには、pg_hba.conf ファイルを検証して変更する必要があります。 このファイルにはクライアント認証が含まれており、ターゲット PostgreSQL がソースに接続できるように構成する必要があります。 通常、pg_hba.conf ファイルを変更するには、ソース PostgreSQL インスタンスを再起動する必要があります。

Note

pg_hba.conf ファイルは、PostgreSQL インストールのデータ ディレクトリにあります。 ソース データベースがオンプレミスの PostgreSQL サーバーまたは Azure VM でホストされている PostgreSQL サーバーである場合は、このファイルを確認して構成する必要があります。 AWS RDS または同様のマネージド サービス上の PostgreSQL インスタンスの場合、pg_hba.conf ファイルに直接アクセスしたり、適用したりすることはできません。 代わりに、サービスの提供されるセキュリティとネットワーク アクセスの構成によってアクセスが制御されます。

ネットワークセットアップの詳細については、「Azure Database for PostgreSQL - フレキシブル サーバーの移行サービスのネットワーク ガイド」にアクセスしてください。

Extensions

拡張機能は、その機能を強化するために PostgreSQL に追加できる追加の機能です。 拡張機能は Azure Database for PostgreSQL でサポートされていますが、手動で有効にする必要があります。 拡張機能を有効にするには、次の手順に従います:

  • ソースの select コマンドを使用して、使用されているすべての拡張機能を一覧表示します - select extname,extversion from pg_extension;

  • Azure Database for PostgreSQL の [サーバー パラメーター] ページで azure.extensions サーバー パラメーターを検索します。 PostgreSQL 内のソースにある拡張機能を有効にします。

  • パラメーターの変更を保存し、必要に応じて Azure Database for PostgreSQL を再起動して新しい構成を適用します。

    拡張機能のスクリーンショット。

  • リストに次のいずれかの拡張機能が含まれているかどうかを確認します。

    • PG_CRON
    • PG_HINT_PLAN
    • PG_PARTMAN_BGW
    • PG_PREWARM
    • PG_STAT_STATEMENTS
    • PG_AUDIT
    • PGLOGICAL
    • WAL2JSON

"はい" の場合は、サーバー パラメーター ページで shared_preload_libraries パラメーターを検索します。 このパラメーターは、サーバーの再起動時に事前に読み込まれる拡張ライブラリのセットを示します。

サーバー パラメーター

これらのパラメーターはターゲット環境に自動的に移行されないので手動で構成する必要があります。

  • Azure portal の [サーバー パラメーター] セクションにアクセスし、それに応じて値を手動で更新して、ソース PostgreSQL データベースのサーバー パラメーター値を Azure Database for PostgreSQL と照合します。

  • パラメーターの変更を保存し、必要に応じて Azure Database for PostgreSQL を再起動して新しい構成を適用します。

ターゲットで高可用性 (信頼性) と読み取りレプリカを無効にする

  • ターゲット環境で高可用性 (信頼性) と読み取りレプリカを無効にすることが不可欠です。 これらの機能は、移行が完了した後にのみ有効にする必要があります。

  • これらのガイドラインに従うと、HA と読み取りレプリカによって導入された変数を追加することなく、スムーズな移行プロセスを実現できます。 移行が完了し、データベースが安定したら、これらの機能を有効にして、Azure のデータベース環境の可用性とスケーラビリティを向上させることができます。

Azure Database for PostgreSQL - フレキシブル サーバーを構成する

  • ターゲット フレキシブル サーバーを作成します。 ガイド付きの手順については、ポータルを使用した Azure Database for PostgreSQL フレキシブル サーバーの作成に関するクイックスタートをご覧ください。

  • サーバーの起動時にライブラリを読み込む必要がある拡張機能を許可リストに載せます。 移行を始める前に、拡張機能を許可リストに載せておくことが不可欠です。

  • データベースのテーブル間のデータの分散が偏っている (ほとんどのデータが 1 つ (または少数) のテーブルに存在する) かどうかを調べます。 偏っている場合、移行の速度が予想より遅くなることがあります。 その場合は、大きなテーブルを並列に移行すると、移行の速度を上げることができます。

移行タスクを構成する

移行サービスには、Azure portal に関する簡単なウィザード ベースのエクスペリエンスが付属しています。 開始する方法は次のとおりです。

  1. Web ブラウザーを開き、ポータルに移動します。 サインインするには、資格情報を入力します。 既定のビューはサービス ダッシュボードです。

  2. お使いの Azure Database for PostgreSQL フレキシブル サーバーに移動します。

  3. フレキシブル サーバーの [概要] タブの左側のメニューで、下にスクロールして [移行] を選びます。

    フレキシブルの [概要] ページのスクリーンショット。

  4. [作成] ボタンを選んで、単一サーバーからフレキシブル サーバーへの移行を始めます。 初めて移行サービスを使う場合、空のグリッドと最初の移行の開始を促すプロンプトが表示されます。

    フレキシブル サーバーの [移行] タブのスクリーンショット。

    フレキシブル サーバー ターゲットへの移行を既に作成してある場合は、単一サーバーからこのターゲットに対して試みられた移行に関する情報がグリッドに含まれます。

  5. [シングル サーバーから移行] ボタンを選びます。 ウィザードベースの一連のタブを使用して、任意のソース シングル サーバーからこのフレキシブル サーバー ターゲットへの移行を作成します。

または、Azure Database for PostgreSQL 単一サーバーから移行プロセスを開始することもできます。

  1. Web ブラウザーを開き、ポータルに移動します。 サインインするには、資格情報を入力する必要があります。 既定のビューはサービス ダッシュボードです。

  2. シングル サーバーを選択すると、概要タブで移行に関連するバナーを確認できます。[今すぐ移行する] を選択して開始します。

    [シングル サーバー] タブから移行を開始する画面のスクリーンショット。

  3. 2 つのオプションがあるページが表示されます。 フレキシブル サーバーを既に作成してあり、それをターゲットとして使いたい場合は、[既存から選択] を選んで、対応するサブスクリプション、リソース グループ、サーバー名の詳細を選びます。 選択が済んだら、[移行ウィザードに移動] を選び、このページの「[セットアップ] タブ」セクションの手順に進みます。

    既存のフレキシブル サーバーのオプション選択を示すスクリーンショット。

  4. [新しいフレキシブル サーバーの作成] を選択した場合は、[新規作成] を選択し、[作成ウィザードに移動] を選択します。 このアクションにより、フレキシブル サーバーの作成プロセスが実行され、フレキシブル サーバーがデプロイされます。

    新しいフレキシブル サーバーのオプション選択を示すスクリーンショット。

フレキシブル サーバーをデプロイした後、「移行タスクを構成する」のステップ 3 から 5 を行います。

セットアップ タブ

最初のタブは [セットアップ] です。 行わなかった場合は、「移行を始める前に、拡張機能を許可リストに載せておくことが不可欠です」で示されているように、必要な拡張機能を許可リストに載せます。

オフラインの [セットアップ] タブに含まれる詳細のスクリーンショット。

移行名は、このフレキシブル サーバーへの移行ごとの一意識別子です。 このフィールドで使用できる文字は英数字のみで、ハイフン (-) 以外の特殊文字は使用できません。 名前はハイフンから開始できず、1 つのターゲット サーバーに対して一意である必要があります。 同じフレキシブル サーバー ターゲットへの 2 つの移行の名前を同じにすることはできません。

[ソース サーバーの種類] はソースを示します。 この場合、Azure Database for PostgreSQL 単一サーバーです。

[移行オプション] では、移行をトリガーする前に検証を実行できます。 次のいずれかのオプションを選択できます。

  • [検証] - サーバーとデータベースがターゲットに移行できる状態になっていることを調べます。
  • [移行] - 検証をスキップして移行を始めます。
  • [検証と移行] - 移行をトリガーする前に検証を実行します。 検証エラーがない場合にのみ、移行がトリガーされます。

[検証] または [検証と移行] オプションを選び、移行を実行する前に移行前の検証を実行することを常にお勧めします。

[オンライン] 移行 (プレビュー) を選ぶ場合は、移行元の単一サーバーで論理レプリケーションが有効にされている必要があります。 有効にされていない場合は、移行サービスによって移行元の単一サーバーで論理レプリケーションが自動的に有効にされます。 また、単一サーバー側のペインの [レプリケーション] タブで、Azure のレプリケーション サポート レベルを [論理] に設定して、手動でレプリケーションをセットアップすることもできます。 どちらの方法でも、ソースの単一サーバーを再起動します。

[次へ: ソースに接続] ボタンを選択します。

[ソース] タブ

[ソース] タブでは、データベースのソースである単一サーバーに関連する詳細の指定を求められます。

[サブスクリプション][リソース グループ] を選ぶと、サーバー名のドロップダウン リストに、リージョン全体のそのリソース グループの下にシングル サーバーが表示されます。 データベースの移行元のソースを選びます。 単一サーバーから同じリージョン内のターゲットのフレキシブル サーバーに、データベースを移行できます。 リージョン間の移行は、インド、中国、UAE のサーバーについてのみ有効になります。

シングル サーバー ソースを選ぶと、[場所][PostgreSQL バージョン][サーバー管理者ログイン名] の各ボックスが自動的に設定されます。 サーバー管理者のサインイン名は、単一サーバーの作成に使われた管理者ユーザー名です。 [パスワード] ボックスに、管理者ユーザーのパスワードを入力します。 移行サービスは、管理者ユーザーとして単一サーバー データベースを移行します。

すべてのフィールドに入力したら、[ソースに接続する] リンクを選びます。 これにより、入力されたソース サーバーの詳細が正しく、ソース サーバーに到達可能であることが検証されます。

ソース データベース サーバーの詳細のスクリーンショット。

[次へ: 移行ターゲットを選択] ボタンを選択して続行します。

[ターゲット] タブ

[ターゲット] タブには、サブスクリプション名、リソース グループ、サーバー名、場所、PostgreSQL バージョンなど、フレキシブル サーバーのメタデータが表示されます。

ターゲット データベース サーバーの詳細のスクリーンショット。

タブの [サーバー管理者ログイン名] には、フレキシブル サーバー ターゲットの作成時に使われた管理者ユーザー名が表示されます。 管理者ユーザーに対応するパスワードを入力します。 パスワードを入力した後、[ターゲットに接続する] リンクを選びます。 これにより、入力されたターゲット サーバーの詳細が正しく、ターゲット サーバーに到達可能であることが検証されます。

[次へ] ボタンを選んで、移行するデータベースを選びます。

[移行するデータベースの選択] タブ

このタブには、単一サーバー内のユーザー データベースの一覧が表示されます。 1 回の移行試行で最大 8 つのデータベースを選択して移行できます。 ユーザー データベースが 8 つを超える場合は、ソース サーバーとターゲット サーバーの間で、次のデータベース セットに対して移行プロセスが繰り返されます。 既定では、ターゲット上で同じ名前の選択されたデータベースが上書きされます。

移行するデータベースのスクリーンショット。

[次へ] ボタンを選んで、詳細を確認します。

まとめ

[概要] タブには、検証または移行の作成に関するすべての詳細がまとめられています。 詳細を確認して、開始ボタンを選びます。

移行の詳細を確認する画面のスクリーンショット。

移行監視ポータル

開始ボタンを選ぶと、検証または移行の作成が成功したことを示す通知が数秒で表示されます。 フレキシブル サーバーの [移行] ページに、自動的にリダイレクトされます。 ここには、最近作成された検証または移行に関する新しいエントリがあります。

最近作成された移行の詳細のスクリーンショット。

移行を表示するグリッドには、[名前][状態][移行の種類][移行モード][ソース サーバー][ソース サーバーの種類][データベース][開始時刻][期間] の列があります。 エントリは、開始日時の降順に表示され、最新のエントリが先頭に表示されます。

[最新の情報に更新] ボタンを使って、検証または移行の状態を更新できます。 グリッドで移行の名前を選んで、関連する詳細を見ることもできます。

作成された検証または移行は、InProgress 状態と PerformingPreRequisiteSteps サブ状態になります。 ワークフローで移行インフラストラクチャとネットワーク接続が設定されるまで、2 から 3 分かかります。

移行オプションについて、移行を監視する方法を見てみましょう。

検証

PerformingPreRequisiteSteps サブ状態が完了すると、検証は Validation in Progress サブ状態になります。このサブ状態では、ソース サーバーとターゲット サーバーで移行の準備状況を評価するチェックが行われます。

すべての検証が Succeeded または Warning 状態の場合、検証は Succeeded 状態になります。

検証グリッドのスクリーンショット。

検証グリッドには次があります

  • [インスタンスの検証の詳細][データベースの検証の詳細] セクション: 移行の準備状況の確認に使われる検証ルールを表します。
  • [検証状態] - 各規則の結果を表し、3 つの値のいずれかになります
    • [成功] - エラーが見つからなかった場合。
    • [失敗] - 検証エラーがある場合。
    • [警告] - 検証の警告がある場合。
  • [期間] - 検証操作にかかった時間。
  • [開始時刻と終了時刻] - 検証操作の開始時刻と終了時刻 (UTC)。

検証中にエラーが発生した場合、[検証状態][失敗] 状態になります。 失敗した [検証名] または [データベース名] の検証を選ぶと、ファンアウト ペインに、詳細と、このエラーを回避するために実行する必要がある是正措置が表示されます。

失敗状態を含む検証グリッドのスクリーンショット。

移行

PerformingPreRequisiteSteps サブ状態が完了すると、移行は、データベースの複製とコピーが行われる MigratingData サブ状態に移ります。 移行が完了するまでの時間は、移行するデータベースのサイズと形状によって異なります。 データがすべてのテーブルにほぼ均等に分散されている場合、移行はすぐに完了します。 テーブル サイズにスキューがあると、相対的に長い時間がかかります。

移行中のいずれかのデータベースを選ぶと、ファンアウト ペインが表示されます。 データベースの移行状態とは別に、コピー済み、キュー済み、コピー中、エラーなど、すべてのテーブル数が表示されます。

すべての DB 詳細を含む移行グリッドのスクリーンショット。

MigratingData 状態が正常に完了すると、移行は Succeeded 状態に移ります。 Migrating Data 状態で問題が発生した場合、移行は Failed 状態に移ります。

移行結果のスクリーンショット。

移行が Succeeded 状態になると、単一サーバーからフレキシブル サーバー ターゲットへのスキーマとデータの移行が完了します。 ページの更新ボタンを使用して同じことを確認できます。

完了した移行のスクリーンショット。

検証と移行

このオプションでは、最初に検証が実行されてから移行が開始されます。 PerformingPreRequisiteSteps サブ状態が完了すると、ワークフローは Validation in Progress サブ状態になります。

  • 検証にエラーがある場合、移行は Failed 状態になります。
  • 検証がエラーなしで完了すると、移行が開始され、ワークフローは Migrating Data のサブストレートに移ります。

操作が完了したら、[検証と移行] の結果を表示できます。

詳細ページの検証タブを示すスクリーンショット。

ポータルを使って移行を取り消す

進行中の検証または移行は取り消すことができます。 ワークフローを取り消すには、InProgress 状態である必要があります。 Succeeded または Failed 状態の検証または移行を取り消すことはできません。

検証を取り消すと、検証アクティビティはそれ以上行われなくなり、検証は Canceled 状態になります。 移行を取り消すと、ターゲット サーバーでそれ以上移行アクティビティは行われなくなり、Canceled 状態になります。 ターゲット サーバー上の変更がドロップまたはロールバックされることはありません。 取り消された移行に関連するターゲット サーバー上のデータベースは必ず削除してください。

移行後の処理

データベースを完了したら、ソースとターゲット間のデータを手動で検証し、ターゲット データベース内のすべてのオブジェクトが正常に作成されたことを確認する必要があります。

移行後、次のタスクを実行できます:

  • フレキシブル サーバー上のデータを確認し、ソース インスタンスの正確なコピーであることを確認します。

  • 検証後、必要に応じてフレキシブル サーバーで高可用性オプションを有効にします。

  • アプリケーションのニーズに合わせてフレキシブル サーバーの SKU を変更します。 この変更には、データベース サーバーの再起動が必要です。

  • ソース インスタンスの既定値からサーバー パラメーターを変更する場合は、フレキシブル サーバーでこれらのサーバー パラメーターの値をコピーします。

  • タグ、アラート、ファイアウォール規則 (該当する場合) などの他のサーバー設定をソース インスタンスからフレキシブル サーバーにコピーします。

  • 接続文字列がフレキシブル サーバーをポイントするように、アプリケーションに変更を加えます。

  • データベースのパフォーマンスを厳密に監視して、パフォーマンス チューニングが必要かどうかを確認します。