チュートリアル: 移行サービスを使用して Amazon Aurora PostgreSQL から Azure Database for PostgreSQL にオフラインで移行する
この記事では、PostgreSQL データベースを Amazon Aurora から Azure Database for PostgreSQL にオフラインで移行する方法について説明します。
Azure Database for PostgreSQL の移行サービスは、Azure portal と Azure CLI に統合されたフル マネージド サービスです。 これは、Azure Database for PostgreSQL サーバーへの移行過程を簡略化するように設計されています。
このチュートリアルでは、次の作業を行いました。
- 前提条件を満たす
- 移行を開始する
- 移行を監視する
- 移行を検証する
前提条件
Azure Database for PostgreSQL の移行サービスを使用して移行を開始する前に、以下の前提条件を満たすことが重要です。 これらの前提条件は、オフライン移行シナリオ向けの特別なものです。
- ソース バージョンを確認する
- ターゲット セットアップを構成する
- ネットワーク セットアップを構成する
- 拡張機能を有効にする
- サーバー パラメーターを確認する
- ユーザーとロールを確認する
- ターゲット上の高可用性 (信頼性) と読み取りレプリカを無効にする
ソース バージョンの確認
ソースの PostgreSQL サーバーのバージョンが 9.5 以降である必要があります。 ソースの PostgreSQL バージョンが 9.5 より前の場合は、移行を開始する前にバージョンを 9.5 以降にアップグレードします。
ターゲット セットアップを構成する
移行を開始する前に、Azure 内に Azure Database for PostgreSQL のインスタンスを作成する必要があります。 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 のインスタンスを再起動して新しい構成を適用します。
ユーザーとロールを確認する
Azure Database for PostgreSQL に移行する場合、ユーザーとロールの移行には手動による介入が必要となるため、これらに個別に対処する必要があります。
ユーザーとロールの手動による移行: ユーザーとそれに関連付けられているロールは、Azure Database for PostgreSQL のインスタンスに手動で移行する必要があります。 このプロセスを容易にするために、
--globals-only
フラグ付きの pg_dumpall ユーティリティを使用して、ロールやユーザー アカウントなどのグローバル オブジェクトをエクスポートすることができます。次のコマンドを実行します。
<username>
を実際のユーザー名に置き換え、<filename>
を出力ファイルに使用する名前に置き換えます。pg_dumpall --globals-only -U <username> -f <filename>.sql
スーパーユーザー ロールの制限: Azure Database for PostgreSQL では、スーパーユーザー ロールはサポートされていません。 移行前に、スーパーユーザーのアクセス許可を削除する必要があります。 必要に応じてアクセス許可とロールを調整してください。
これらの手順を実行することで、スーパーユーザーの制限に関連する問題を回避して、ユーザー アカウントとロールを Azure Database for PostgreSQL に正しく移行することができます。
ターゲット上で高可用性 (信頼性) と読み取りレプリカを無効にする
移行を開始する前に、ターゲット環境で高可用性 (信頼性) と読み取りレプリカを無効にすることが重要です。 これらの機能は、移行が完了した後にのみ有効にする必要があります。
移行を開始する
Azure portal または Azure CLI を使用して移行することができます。
Azure portal には、移行をガイドするために、シンプルで直感的なウィザードベースのエクスペリエンスが用意されています。 このチュートリアルで説明する手順を実行すると、データベースを Azure Database for PostgreSQL - フレキシブル サーバーにシームレスに転送し、その強力な機能とスケーラビリティを活用できます。
Azure portal を使用して移行するには、まず移行タスクを構成します。 次に、ソースとターゲットに接続し、移行を開始します。
移行タスクを構成する
Azure portal で移行タスクを構成するには、次の手順を行います。
Web ブラウザーを開き、Azure portal に移動します。 資格情報を入力してサインインします。
Azure Database for PostgreSQL - フレキシブル サーバーのインスタンスに移動します。
サービス メニューで、[移行] を選択します。
[作成] を選択して、Amazon Aurora からフレキシブル サーバーに移行します。
移行サービスを初めて使用すると、最初の移行を開始するためのプロンプトが表示された空のグリッドが表示されます。 フレキシブル サーバー ターゲットへの移行が既に作成されている場合、グリッドに、試行された移行に関する情報が表示されます。
[作成] を選択して、移行を設定するための一連のタブを処理します。
セットアップ
次の情報を入力または選択します。
移行名: このフレキシブル サーバー ターゲットへの各移行の一意識別子を入力します。 移行名で使用できるのは、英数字とハイフン (
-
) のみです。 名前はハイフンで開始することはできません。また、ターゲット サーバーに対して一意である必要があります。 同じフレキシブル サーバー ターゲットへの 2 つの移行に、同じ名前を付けることはできません。ソース サーバーの種類: クラウドベース PostgreSQL サービス、オンプレミス セットアップ、仮想マシンなど、PostgreSQL ソースと一致するソースの種類を選択します。
移行オプション: 以下のいずれかの移行前検証のオプションを選択します。
- 検証する。 サーバーとデータベースがターゲットに移行できる状態になっていることを確認します。
- 移行。 検証をスキップし、移行を開始します。
- 検証と移行。 移行をトリガーする前に検証を実行します。 検証エラーがない場合、移行がトリガーされます。
移行前検証では [検証] または [検証と移行] オプションを選択することが推奨されます。
詳細については、「移行前検証」を参照してください。
移行モード: 移行のモードを選択します。 既定のオプションは [オフライン] です。
[次へ: ソースに接続] を選択します。
ランタイム サーバーを選択する
移行ランタイム サーバーは、移行サービスの特殊な機能です。 ランタイム サーバーは、移行時の中継サーバーとして機能します。 これは、ターゲット サーバーではない Azure Database for PostgreSQL - フレキシブル サーバーの別個のインスタンスです。 ランタイム サーバーは、プライベート ネットワークを経由してのみアクセスできるソース環境からのデータベースの移行を支援します。
詳細については、移行ランタイム サーバーに関するページを参照してください。
ソースに接続する
[ソースに接続] タブで、データベース ソースについて次の情報を入力または選択します。
- サーバー名: ソース PostgreSQL インスタンスのホスト名または IP アドレスを入力します。
- ポート: ソース サーバーのポート番号を入力します。
- サーバー管理者ログイン名: ソース PostgreSQL サーバーのユーザー名を入力します。
- パスワード: ソース PostgreSQL サーバーのパスワードを入力します。
- SSL モード: サポートされている値は [優先] と [必須] です。 ソース PostgreSQL サーバーの Secure Sockets Layer (SSL) がオフになっている場合は、[優先] を選択します。 ソース サーバーの SSL がオンになっている場合は、[必須] を選択します。 SSL 値は、postgresql.conf ファイル内で設定されます。
- 接続のテスト: ターゲットとソース間の接続テストを開始します。 接続が成功したら、次の手順に進み、ターゲットとソースの間のネットワークの問題を特定し、ソースのユーザー名とパスワードを検証します。 テスト接続の確立には数分かかります。
テスト接続が成功したら、[次へ: 移行ターゲットの選択] を選択します。
移行ターゲットを選んでください
[移行ターゲットの選択] タブで、サブスクリプション、リソース グループ、サーバー名に加えて、フレキシブル サーバー ターゲットについて次の情報を入力または選択します。
- 管理者ユーザー名: ターゲット PostgreSQL サーバーの管理者ユーザー名。
- パスワード: ターゲット PostgreSQL サーバーのパスワード。
- カスタム FQDN/IP (省略可能): カスタム FQDN/IP フィールドは省略可能であり、ターゲットがカスタム DNS サーバーの背後にある場合、またはカスタム DNS 名前空間がある場合に使用でき、特定の FQDN または IP アドレス経由でのみアクセスできます。 たとえば、カスタム DNS サーバーに DNS ゾーン
postgres.database.azure.com
が含まれる場合、またはこのゾーンのクエリを168.63.129.16
に転送し、FQDN が Azure パブリック DNS ゾーンまたはプライベート DNS ゾーンで解決される場合、これには、flexibleserver.example.com
や198.1.0.2
、またはflexibleserver.postgres.database.azure.com
のような PostgreSQL FQDN などのエントリを含めることができます。 - 接続のテスト: ターゲットとソース間の接続テストを開始します。 接続が成功したら、次の手順に進み、ターゲットとソースの間のネットワークの問題を特定し、ターゲット サーバーのユーザー名とパスワードを検証します。 テスト接続の確立には数分かかります。
テスト接続が成功したら、[次へ: 移行するデータベースの選択] を選択します。
移行するデータベースを選択する
[移行するデータベースの選択] タブで、ソース PostgreSQL サーバーから移行するユーザー データベースを一覧から選択します。
データベースを選択したら、[次へ: 概要] を選択します。
まとめ
[概要] タブには、検証または移行を作成するためのソースとターゲットの詳細がすべてまとめられます。 詳細を確認した後、[検証と移行の開始] を選択します。
移行を監視する
[検証と移行の開始] を選択した後、数秒で、検証または移行の作成が成功したことを示す通知が表示されます。 フレキシブル サーバー インスタンスの [移行] ペインにリダイレクトされます。 状態エントリは InProgress で、サブ状態は PerformingPreRequisiteSteps になります。 ワークフローで移行インフラストラクチャが設定され、ネットワーク接続が確認されるまで、2 から 3 分かかります。
移行を表示するグリッドには、次の列があります。
- 名前
- Status
- 移行モード
- 移行の種類
- ソース サーバー
- ソース サーバーの種類
- データベース
- 期間
- [開始時刻]
エントリは、開始時刻の降順に表示され、最新のエントリが一番上に表示されます。 メニュー バーの [更新] を選択すると、検証または移行の実行の状態を更新できます。
移行の詳細
関連する詳細を表示するには、移行の一覧で移行の名前を選択します。
[セットアップ] タブで、移行オプションの [検証と移行] を選択します。 このシナリオでは、移行が開始される前に検証が完了します。 PerformingPreRequisiteSteps サブ状態が完了すると、ワークフローのサブ状態は Validation in Progress に移ります。
検証にエラーがある場合、移行は Failed 状態になります。
検証がエラーなしで完了すると、移行が開始され、ワークフローのサブ状態は Migrating Data に移ります。
検証の詳細は、以下のようにインスタンス レベルとデータベース レベルで確認できます。
インスタンス レベルでの検証:
- Azure Database for PostgreSQL - フレキシブル サーバーのインスタンスのサーバー パラメーターで拡張機能が有効になっている場合は、ソース バージョンの接続チェック (
PostgreSQL version >= 9.5
サーバー パラメーターのチェック) に関連する検証を確認します。
- Azure Database for PostgreSQL - フレキシブル サーバーのインスタンスのサーバー パラメーターで拡張機能が有効になっている場合は、ソース バージョンの接続チェック (
データベース レベルでの検証:
- Azure Database for PostgreSQL - フレキシブル サーバー内の拡張機能と照合順序のサポートに関連する個々のデータベースの検証を確認します。
移行と検証の現在の状態は、[移行の詳細] ペインで確認できます。
次の表は、いくつかの起こり得る移行の状態とサブ状態を示したものです。
移行の状態
State | 説明 |
---|---|
InProgress | 移行インフラストラクチャのセットアップが進行中、または実際のデータ移行が進行中です。 |
取り消されました | 移行が取り消されたか削除されました。 |
Failed | 移行が失敗しました。 |
Validation failed | 検証が失敗しました。 |
Succeeded | 移行が成功し、完了しました。 |
WaitingForUserAction | オンライン移行でのみ適用されます。 ユーザーが一括移行を実行するのを待機しています。 |
移行サブ状態
下位状態 | 説明 |
---|---|
PerformingPreRequisiteSteps | データ移行のためのインフラストラクチャのセットアップが進行中です。 |
Validation in Progress | 検証を実行中です。 |
MigratingData | データ移行が進行中です。 |
CompletingMigration | 移行は完了の最終段階です。 |
完了 | 移行が完了しました。 |
Failed | 移行に失敗しました。 |
検証のサブ状態
下位状態 | 説明 |
---|---|
Failed | 検証に失敗しました。 |
Succeeded | 検証が成功しました。 |
警告 | 検証で警告が発生しています。 |
移行の取り消し
進行中の検証または移行は取り消すことができます。 ワークフローをキャンセルするには、ワークフローが In progress 状態である必要があります。 Succeeded または Failed 状態の検証または移行を取り消すことはできません。
移行をキャンセルすると、それ以降のターゲット サーバー上での移行アクティビティは停止し、移行の試みは Canceled 状態に切り替わります。 キャンセル アクションは、ターゲット サーバー上で移行サービスによって行われたすべての変更をロールバックします。
移行を検証する
データベースの移行が完了したら、ソースとターゲットの間のデータを手動で検証します。 ターゲット データベース内のすべてのオブジェクトが正常に作成されたことを確認します。
移行後、以下のタスクを実行できます。
- フレキシブル サーバー上のデータを検証し、それがソース インスタンスの正確なコピーであることを確認します。
- 検証後、必要に応じてフレキシブル サーバー上の高可用性オプションを有効にします。
- アプリケーションのニーズに合わせて、フレキシブル サーバーの SKU (バージョン) を変更します。 この変更には、データベース サーバーの再起動が必要になります。
- ソース インスタンスでサーバー パラメーターの既定値を変更している場合は、それらのサーバー パラメーター値をフレキシブル サーバーにコピーします。
- タグ、アラート、ファイアウォール規則 (該当する場合) などの他のサーバー設定をソース インスタンスからフレキシブル サーバーにコピーします。
- 接続文字列がフレキシブル サーバーをポイントするように、アプリケーションに変更を加えます。
- データベースのパフォーマンスを厳密に監視して、パフォーマンス チューニングが必要かどうかを確認します。