チュートリアル: 移行サービスを使用して 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 を作成する方法の詳細については、次の「クイック スタート: サーバー の作成」リンクを参照してください。
ネットワークのセットアップ
ネットワーク セットアップは、移行サービスが正しく機能するために重要です。 ソースの PostgreSQL サーバーがターゲットの Azure Database for PostgreSQL サーバーと通信できることを確認します。 移行を成功させるには、次のネットワーク構成が不可欠です。
ネットワーク セットアップの詳細については、移行サービスのネットワーク ガイドを参照してください。
拡張機能を有効にする
Azure Database for PostgreSQL の移行サービスを使用して移行を確実に成功させるには、ソース PostgreSQL インスタンスの拡張機能を検証することが必要な場合があります。 拡張機能は、アプリケーションに必要になる可能性がある機能を提供します。 移行プロセスを開始する前に、ソース PostgreSQL インスタンス上の拡張機能を必ず検証してください。
Azure Database for PostgreSQL - フレキシブル サーバーのターゲット インスタンスで、ソース PostgreSQL インスタンスで特定されたサポート対象の拡張機能を有効にします。
詳細については、Azure Database for PostgreSQL の拡張機能に関するページを参照してください。
Note
shared_preload_libraries
パラメーターに変更を加えた場合は、再起動が必要です。
サーバー パラメーターを確認する
これらのパラメーターはターゲット環境に自動的に移行されないので手動で構成する必要があります。
ソース PostgreSQL データベースのサーバー パラメーター値を Azure Database for PostgreSQL と照合します。そのためには、Azure portal の [サーバー パラメーター] セクションにアクセスし、手動で値を適宜更新します。
パラメーターの変更を保存し、必要に応じて Azure Database for PostgreSQL フレキシブル サーバーを再起動して新しい構成を適用します。
重要
移行を開始する前に、フレキシブル サーバーのpassword_encryption サーバー パラメーターを SCRAM-SHA-256 から MD5 に変更します。 これは、単一サーバーの既存の資格情報をフレキシブル サーバーで機能させるために不可欠です。
ターゲットで高可用性 (信頼性) と読み取りレプリカを無効にする
ターゲット環境で高可用性 (信頼性) と読み取りレプリカを無効にすることが不可欠です。 これらの機能は、移行が完了した後にのみ有効にする必要があります。
これらのガイドラインに従うと、高可用性と読み取りレプリカによって導入された変数を追加することなく、スムーズな移行プロセスを実現できます。 移行が完了し、データベースが安定したら、これらの機能を有効にして、Azure のデータベース環境の可用性とスケーラビリティを向上させることができます。
Azure Database for PostgreSQL フレキシブル サーバーを構成する
ターゲット フレキシブル サーバーを作成します。 ガイド付きの手順については、ポータルを使用した Azure Database for PostgreSQL フレキシブル サーバーの作成に関するクイックスタートをご覧ください。
サーバーの起動時にライブラリを読み込む必要がある拡張機能を許可リストに載せます。 移行を始める前に、拡張機能を許可リストに載せておくことが不可欠です。
データベースのテーブル間のデータの分散が偏っている (ほとんどのデータが 1 つ (または少数) のテーブルに存在する) かどうかを調べます。 偏っている場合、移行の速度が予想より遅くなることがあります。 その場合は、大きなテーブルを並列に移行すると、移行の速度を上げることができます。
移行タスクを構成する
移行サービスには、Azure portal に関する簡単なウィザード ベースのエクスペリエンスが付属しています。 開始する方法は次のとおりです。
Web ブラウザーを開き、ポータルに移動します。 サインインするには、資格情報を入力します。 既定のビューはサービス ダッシュボードです。
お使いの Azure Database for PostgreSQL フレキシブル サーバーに移動します。
フレキシブル サーバーの [概要] タブの左側のメニューで、下にスクロールして [移行] を選びます。
[作成] ボタンを選んで、単一サーバーからフレキシブル サーバーへの移行を始めます。 初めて移行サービスを使う場合、空のグリッドと最初の移行の開始を促すプロンプトが表示されます。
フレキシブル サーバー ターゲットへの移行を既に作成してある場合は、単一サーバーからこのターゲットに対して試みられた移行に関する情報がグリッドに含まれます。
ウィザードベースの一連のタブを使用して、考えられるさまざまなソースからこのフレキシブル サーバー ターゲットへの移行を作成します。 既定では、[ソース サーバーの種類] は [Azure Database for PostgreSQL 単一サーバー] に設定されています。このシナリオでは、これを取り上げます。
または、Azure Database for PostgreSQL 単一サーバーから移行プロセスを開始することもできます。
Web ブラウザーを開き、ポータルに移動します。 サインインするには、資格情報を入力する必要があります。 既定のビューはサービス ダッシュボードです。
シングル サーバーを選択すると、概要タブで移行に関連するバナーを確認できます。[今すぐ移行する] を選択して開始します。
2 つのオプションがあるページが表示されます。 フレキシブル サーバーを既に作成してあり、それをターゲットとして使う場合は、[既存から選択] を選んで、対応する [サブスクリプション]、[リソース グループ]、[サーバー名] の詳細を選択します。 選択が完了したら、[移行ウィザードに移動] を選択し、[セットアップ] セクションの手順に進みます。
新しいフレキシブル サーバーを作成することを選んだ場合は、[新規作成] を選択し、[作成ウィザードに移動] を選択します。 このアクションにより、フレキシブル サーバーの作成プロセスが実行され、フレキシブル サーバーがデプロイされます。
フレキシブル サーバーをデプロイした後、「移行タスクを構成する」のステップ 3 から 5 を行います。
セットアップ
最初のタブは [セットアップ] です。 これを行っていなかった場合は、移行を開始する前に、「Azure Database for PostgreSQL フレキシブル サーバーを構成する」の説明に従って、必要な拡張機能を許可リストに載せてください。
移行名は、このフレキシブル サーバーへの移行ごとの一意識別子です。 このフィールドで使用できる文字は英数字のみで、アンダースコア (_) とハイフン (-) 以外の特殊文字は使用できません。 名前は英数字で始まる必要があります。 同じフレキシブル サーバー ターゲットへの 2 つの移行の名前を同じにすることはできないため、名前はターゲット サーバーに対して一意である必要もあります。
[ソース サーバーの種類] はソースを示します。 この場合は、Azure Database for PostgreSQL 単一サーバーです
[移行オプション] では、移行をトリガーする前に検証を実行できます。 次のいずれかのオプションを選択できます。
- [検証] - サーバーとデータベースがターゲットに移行できる状態になっていることを調べます。
- [移行] - 検証をスキップして移行を始めます。
- [検証と移行] - 移行をトリガーする前に検証を実行します。 検証エラーがない場合にのみ、移行がトリガーされます。
[検証] または [検証と移行] オプションを選び、移行を実行する前に移行前の検証を実行することを常にお勧めします。
[移行モード] では、オンラインとオフラインのどちらかの移行を選択できます。ここでは、[オフライン] に設定する必要があります。
[次: ランタイム サーバーの選択] ボタンを選択します。
ランタイム サーバー
移行ランタイム サーバーは、Azure Database for PostgreSQL の移行サービス内の特殊な機能であり、移行中に中間サーバーとして機能するように設計されています。 これは、ターゲット サーバーではない、別の Azure Database for PostgreSQL - フレキシブル サーバー インスタンスですが、プライベート ネットワーク経由でのみアクセスできるソース環境からのデータベースの移行を容易にするために使用されます。
ランタイム サーバーについて詳しくは、移行ランタイム サーバーに関する記事を参照してください。
[次へ: ソースに接続] ボタンを選択します。
ソースに接続する
[ソース] セクションでは、データベースのソースである単一サーバーに関連する詳細の指定を求められます。
[サブスクリプション] と [リソース グループ] を選ぶと、サーバー名のドロップダウン リストに、リージョン全体のそのリソース グループの下にシングル サーバーが表示されます。 データベースの移行元のソースを選びます。 単一サーバーから同じリージョン内のターゲットのフレキシブル サーバーに、データベースを移行できます。 リージョン間の移行は、インド、中国、UAE のサーバーについてのみ有効になります。
単一サーバー ソースを選ぶと、[場所] と [PostgreSQL バージョン] のボックスが自動的に設定されます。 データベースを正常に移行するために移行サービスで必要となるため、管理者ロールの資格情報を必ず指定してください。
[カスタム FQDN/IP] フィールドは省略可能であり、ソースがカスタム DNS サーバーの背後にある場合、またはソースにカスタム DNS 名前空間がある場合に使用できます。これにより、特定の FQDN または IP アドレス経由でのみソースにアクセスできるようにすることができます。 たとえば、カスタム DNS サーバーに DNS ゾーン postgres.database.azure.com
が含まれている場合、またはサーバーによってこのゾーンのクエリが 168.63.129.16
に転送される場合、このフィールドには singleserver.example.com
や 198.1.0.2
などのエントリ、または singleserver.postgres.database.azure.com
のような PostgreSQL FQDN を含めることができます。その場合、FQDN は、Azure パブリックまたはプライベート DNS ゾーンで解決されます。
すべてのフィールドに入力したら、[ソースに接続する] リンクを選びます。 これにより、入力されたソース サーバーの詳細が正しく、ソース サーバーに到達可能であることが検証されます。
[次: 移行ターゲットを選択] ボタンを選択して続行します。
移行ターゲットを選択する
[移行ターゲットの選択] セクションには、[サブスクリプション]、[リソース グループ]、[サーバー名]、[場所]、[PostgreSQL バージョン] など、フレキシブル サーバー ターゲットのメタデータが表示されます。
[カスタム FQDN/IP] フィールドは省略可能であり、ターゲットがカスタム DNS サーバーの背後にある場合、またはターゲットにカスタム DNS 名前空間がある場合に使用できます。これにより、特定の FQDN または IP アドレス経由でのみターゲットにアクセスできるようにすることができます。 たとえば、カスタム DNS サーバーに DNS ゾーン postgres.database.azure.com
が含まれている場合、またはサーバーによってこのゾーンのクエリが 168.63.129.16
に転送される場合、このフィールドには flexibleserver.example.com
や 198.1.0.2
などのエントリ、または flexibleserver.postgres.database.azure.com
のような PostgreSQL FQDN を含めることができます。その場合、FQDN は、Azure パブリックまたはプライベート DNS ゾーンで解決されます。
[認証方法] とすべての認証関連フィールドの適切な値を選択します。 指定した ID はターゲット サーバーの管理者ユーザーのものであることが必要です。 必要なすべての情報を入力した後、[ターゲットに接続] リンクを選択します。 これにより、入力されたターゲット サーバーの詳細が正しく、ターゲット サーバーに到達可能であることが検証されます。
[次: 移行するデータベースの選択] ボタンを選択して、移行するデータベースを選択します。
移行するデータベースの選択
このタブには、単一サーバー内のユーザー データベースの一覧が表示されます。 1 回の移行試行で最大 8 つのデータベースを選択して移行できます。 ユーザー データベースが 8 つを超える場合は、ソース サーバーとターゲット サーバーの間で、次のデータベース セットに対して移行プロセスが繰り返されます。 ターゲット サーバー上に存在する正確に同じ名前の選択したデータベースが上書きされます。
[次: サマリー] ボタンを選択して詳細を確認します。
まとめ
[概要] タブには、検証または移行の作成に関するすべての詳細がまとめられています。 詳細を確認し、[検証して移行の開始] ボタンを選択します。
移行監視ポータル
移行を開始すると、検証または移行の作成が成功したことを示す通知が表示されます。 フレキシブル サーバーの [移行] ページに、自動的にリダイレクトされます。 ここには、最近作成された検証または移行に関する新しいエントリがあります。
移行を表示するグリッドには、[名前]、[状態]、[移行モード]、[移行の種類]、[ソース サーバー]、[ソース サーバーの種類]、[データベース]、[開始時刻]、[実行時間] の列があります。 エントリは、開始日時の降順に表示され、最新のエントリが先頭に表示されます。
[最新の情報に更新] ボタンを使って、検証または移行の状態を更新できます。
グリッドで特定の移行の名前を選んで、関連する詳細を表示することもできます。
作成された検証または移行は、InProgress 状態と PerformingPreRequisiteSteps サブ状態になります。 ワークフローで移行インフラストラクチャとネットワーク接続が設定されるまで、2 から 3 分かかります。
移行の各オプションについて、移行を監視する方法を見てみましょう。
検証
PerformingPreRequisiteSteps サブ状態が完了すると、検証は Validation in Progress サブ状態になります。このサブ状態では、ソース サーバーとターゲット サーバーで移行の準備状況を評価するチェックが行われます。
すべての検証が Succeeded または Warning 状態の場合、検証は Succeeded 状態になります。
検証グリッドには次の情報があります
- [インスタンスの検証の詳細] と [データベースの検証の詳細] セクション: 移行の準備状況の確認に使われる検証ルールを表します。
- [検証名] - 特定の各検証規則の名前。
- [検証状態] - 各規則の結果を表し、3 つの値のいずれかになります。
- [成功] - エラーが見つからなかった場合。
- [失敗] - 検証エラーがある場合。
- [警告] - 検証の警告がある場合。
- [実行時間] - 検証操作にかかった時間。
- [開始時刻 (UTC)] と [終了時刻 (UTC)] - 検証操作の UTC での開始時刻と終了時刻。
検証中にエラーが発生した場合、[検証状態] は [失敗] 状態になります。 失敗した [検証名] または [データベース名] の検証を選ぶと、ファンアウト ペインに、詳細と、このエラーを回避するために実行する必要がある是正措置が表示されます。
移行
PerformingPreRequisiteSteps というサブ状態が完了すると、移行は、データベースの複製/コピーが行われる [データを移行しています] のサブ状態に移ります。 移行が完了するまでの時間は、移行するデータベースのサイズと形状によって異なります。 データがすべてのテーブルにほぼ均等に分散されている場合、移行はすぐに完了します。 テーブル サイズにスキューがあると、相対的に長い時間がかかります。
移行中のいずれかのデータベースを選ぶと、ファンアウト ペインが表示されます。 すべてのテーブル数 (コピー済み、キュー済み、コピー中、エラー) と、データベースの移行状態が表示されます。
MigratingData 状態が正常に完了すると、移行は Succeeded 状態に移ります。 Migrating Data 状態で問題が発生した場合、移行は Failed 状態に移ります。
移行が Succeeded 状態になると、単一サーバーからフレキシブル サーバー ターゲットへのスキーマとデータの移行が完了します。 ページを更新して進行状況を確認できます。
検証と移行
このオプションでは、最初に検証が実行されてから移行が開始されます。 PerformingPreRequisiteSteps サブ状態が完了すると、ワークフローは Validation in Progress サブ状態になります。
- 検証にエラーがある場合、移行は Failed 状態になります。
- 検証がエラーなしで完了すると、移行が開始され、ワークフローは Migrating Data のサブストレートに移ります。
操作が完了したら、[検証と移行] の結果を表示できます。
ポータルを使って移行を取り消す
進行中の検証または移行は取り消すことができます。 ワークフローを取り消すには、InProgress 状態である必要があります。 Succeeded または Failed 状態の検証または移行を取り消すことはできません。
検証を取り消すと、検証アクティビティはそれ以上行われなくなり、検証は Canceled 状態になります。
移行を取り消すと、ターゲット サーバーでそれ以上移行アクティビティは行われなくなり、Canceled 状態になります。 取り消しアクションでは、ターゲット サーバー上で移行サービスによって行われたすべての変更がロールバックされます。
完了時に移行を確認する
移行が成功したら、単一サーバーと同じ資格情報を使用してフレキシブル サーバーにログインできることを確認します。 単一サーバーから移行した後にフレキシブル サーバーで認証エラーが発生した場合は、原因として、フレキシブル サーバーの VM が FIPS 準拠になっていること、または単一サーバーの MD5 暗号化とは異なるパスワード暗号化アルゴリズム (SCRAM-SHA-256) を使用していることが考えられます。 この問題を軽減するには、次の手順に従います。
- フレキシブル サーバーの password_encryption サーバー パラメーターを SCRAM-SHA-256 から MD5 に変更します。
- 単一サーバーからフレキシブル サーバーへの移行を再開します。
- 認証の問題が解決しない場合は、既存のフレキシブル サーバーを削除し、新しいサーバーをプロビジョニングしますい。 手順 1 と 2 を繰り返して問題を解決します。
これにより、認証エラーが解決されるはずです。
移行後、次のタスクを実行できます:
フレキシブル サーバー上のデータを確認し、ソース インスタンスの正確なコピーであることを確認します。
検証後、必要に応じてフレキシブル サーバーで高可用性オプションを有効にします。
アプリケーションのニーズに合わせてフレキシブル サーバーの SKU を変更します。 この変更には、データベース サーバーの再起動が必要です。
ソース インスタンスの既定値からサーバー パラメーターを変更する場合は、フレキシブル サーバーでこれらのサーバー パラメーターの値をコピーします。
タグ、アラート、ファイアウォール規則 (該当する場合) などの他のサーバー設定をソース インスタンスからフレキシブル サーバーにコピーします。
接続文字列がフレキシブル サーバーをポイントするように、アプリケーションに変更を加えます。
データベースのパフォーマンスを厳密に監視して、パフォーマンス チューニングが必要かどうかを確認します。