前提条件 (オフライン)
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 パラメーターを検索します。 このパラメーターは、サーバーの再起動時に事前に読み込まれる拡張ライブラリのセットを示します。
サーバー パラメーター
これらのパラメーターはターゲット環境に自動的に移行されないので手動で構成する必要があります。
ターゲットで高可用性 (信頼性) と読み取りレプリカを無効にする
ターゲット環境で高可用性 (信頼性) と読み取りレプリカを無効にすることが不可欠です。 これらの機能は、移行が完了した後にのみ有効にする必要があります。
これらのガイドラインに従うと、HA と読み取りレプリカによって導入された変数を追加することなく、スムーズな移行プロセスを実現できます。 移行が完了し、データベースが安定したら、これらの機能を有効にして、Azure のデータベース環境の可用性とスケーラビリティを向上させることができます。
作業の開始
Microsoft Azure を初めて使う場合は、オファリングを評価するためのアカウントを作成します。
Azure CLI のインストール ページから、お使いのオペレーティング システム用の最新の Azure CLI をインストールします。
Azure CLI が既にインストールされている場合は、az version
コマンドを使用してバージョンを確認します。 移行 CLI コマンドを使用するには、バージョンが 2.50.0 以降である必要があります。 そうでない場合は、Azure CLI のバージョンを更新します。
az login
コマンドを実行します。
az login
ブラウザー ウィンドウが開き、Azure サインイン ページが表示されます。 認証を成功させるために Azure 資格情報を入力します。 Azure CLI でサインインするその他の方法については、こちらの記事をご覧ください。
移行の CLI コマンド (オフライン)
移行サービスには、移行関連のタスクを実行するための使いやすい CLI コマンドが付属しています。 すべての CLI コマンドは、az postgres flexible-server migration
から始まります。 移行を始める前に、拡張機能を許可リストに載せることが重要です。
help
パラメーターを使用すると、コマンドに関連付けられているオプションを理解し、適切な構文をフレーミングするのに役立ちます。
az postgres flexible-server migration --help
上記のコマンドを実行すると、次の出力が得られます。
出力には、サポートされている移行コマンドとそのアクションが一覧表示されます。 これらのコマンドを詳しく見てみましょう。
Azure CLI を使用して移行を作成する
create
コマンドは、ソース サーバーからターゲット サーバーへの移行の作成に役立ちます。
az postgres flexible-server migration create -- help
上記のコマンドを実行すると、次の結果が得られます。
必要な引数が一覧表示され、ソース サーバーからターゲット サーバーへの移行を適切に作成するための構文例が示されます。 新しい移行を作成する CLI コマンドを次に示します。
az postgres flexible-server migration create [--subscription]
[--resource-group]
[--name]
[--migration-name]
[--migration-mode]
[--properties]
パラメーター |
説明 |
subscription |
フレキシブル サーバー ターゲットのサブスクリプション ID。 |
resource-group |
フレキシブル サーバー ターゲットのリソース グループ。 |
name |
フレキシブル サーバー ターゲットの名前。 |
migration-name |
フレキシブル サーバーに対して試行された移行に対する一意識別子。 このフィールドで使用することができる文字は英数字のみで、かつハイフン (- ) 以外の特殊文字は使用することができません。 名前の先頭に - を付けることはできません。1 つのフレキシブル サーバー ターゲットへの 2 つの移行に、同じ名前をつけることはできません。 |
migration-mode |
これは省略可能なパラメーターです。 既定値: オフライン。 オフライン移行では、ソース データベースを特定の時点でターゲット サーバーにコピーします。 |
properties |
シングル サーバー ソースに関する情報を持つ JSON ファイルへの絶対パス。 |
次に例を示します。
az postgres flexible-server migration create --subscription 11111111-1111-1111-1111-111111111111 --resource-group my-learning-rg --name myflexibleserver --migration-name migration1 --properties "C:\Users\Administrator\Documents\migrationBody.JSON" --migration-mode offline
create
コマンドで使われる migration-name
引数は、update
、delete
、show.
などの他の CLI コマンドで使われます。これは、それらすべてのコマンドでの対応するアクションで、移行の試行を一意に識別します。
最後に、properties
引数の一部として渡す JSON ファイルが create
コマンドに必要です。
JSON の構造体は次のとおりです。
{
"properties": {
"sourceDbServerResourceId":"/subscriptions/<subscriptionid>/resourceGroups/<src_ rg_name>/providers/Microsoft.DBforPostgreSQL/servers/<source server name>",
"secretParameters": {
"adminCredentials":
{
"sourceServerPassword": "<password>",
"targetServerPassword": "<password>"
},
"sourceServerUserName": "<username>@<servername>",
"targetServerUserName": "<username>"
},
"dbsToMigrate":
[
"<db1>","<db2>"
],
"overwriteDbsInTarget":"true"
}
}
JSON ファイル形式に含められる create
パラメーターを次に示します。
パラメーター |
型 |
内容 |
sourceDbServerResourceId |
必須 |
このパラメーターはシングル サーバー ソースのリソース ID であり、必須です。 |
adminCredentials |
必須 |
このパラメーターは、シングル サーバー ソースとフレキシブル サーバー ターゲットの両方の管理者ユーザーのパスワードを一覧表示します。 これらのパスワードは、ソース サーバーとターゲットの両方のサーバーに対する認証に役立ちます。 |
sourceServerUserName |
必須 |
既定値は単一サーバーの作成時に作成された管理者ユーザーであり、指定されたパスワードは、このユーザーの認証に使われます。 既定のユーザーを使っていない場合、このパラメーターは移行を実行するためのソース サーバー上でのユーザーまたはロールです。 このユーザーは、移行に関連するデータベース オブジェクトで必要な特権と所有権を持ち、azure_pg_admin ロールのメンバーである必要があります。 |
targetServerUserName |
必須 |
既定値は、フレキシブル サーバーの作成時に作成された管理者ユーザーであり、指定されたパスワードは、このユーザーの認証に使われます。 既定のユーザーを使用していない場合、このパラメーターはこの移行の実行に使用されるターゲット サーバー上のユーザーまたはロールです。 このユーザーは、azure_pg_admin、pg_read_all_settings、pg_read_all_stats、pg_stat_scan_tables ロールのメンバーであり、Create ロールである Create DB 属性を持っている必要があります。 |
dbsToMigrate |
必須 |
フレキシブル サーバーに移行するデータベースのリストを指定します。 移行されるのはユーザー データベースだけです。 システム データベース、および template0 や template1 などのテンプレート データベースは移行されません。 |
overwriteDbsInTarget |
必須 |
true に設定すると、移行しようとしているものと同じ名前の既存のデータベースがターゲット サーバーにある場合、移行サービスはそのデータベースを自動的に上書きします。 |
SetupLogicalReplicationOnSourceDBIfNeeded |
省略可能 |
このプロパティを true に設定して、ソース サーバーで論理レプリケーションを自動的に有効にできます。 サーバー設定のこの変更には、サーバーを再起動する必要があり、2 から 3 分のダウンタイムが発生します。 |
SourceDBServerFullyQualifiedDomainName |
省略可能 |
仮想ネットワークの名前解決にカスタム DNS サーバーを使用する場合に使用します。 このプロパティのカスタム DNS サーバーに従って、シングル サーバー ソースの FQDN を指定します。 |
TargetDBServerFullyQualifiedDomainName |
オプション |
仮想ネットワーク内の名前解決にカスタム DNS サーバーを使用する場合に使用します。 カスタム DNS サーバーに従ってフレキシブル サーバー ターゲットの FQDN を指定します。
SourceDBServerFullyQualifiedDomainName と TargetDBServerFullyQualifiedDomainName を JSON の一部として含めるのは、名前解決のために Azure 提供の DNS ではなくカスタム DNS サーバーを使用するまれなシナリオに限られます。 それ以外の場合は、これらのパラメーターを JSON ファイルに含めないでください。 |
コマンド応答に関しては、次の重要な点に注意してください。
create
コマンドがトリガーされると、移行は InProgress
状態と PerformingPreRequisiteSteps
サブ状態に移ります。 移行ワークフローで、移行インフラストラクチャをデプロイし、ソースとターゲットの間の接続を設定するには、数分かかります。
PerformingPreRequisiteSteps
サブ状態が完了すると、移行は Migrating Data,
サブ状態に遷移し、データベースの複製やコピーが行われます。
- 移行される各データベースには、テーブル数、増分挿入、削除、保留中のバイトなど、すべての移行の詳細を含む独自のセクションがあります。
Migrating Data
サブ状態が完了するまでにかかる時間は、移行するデータベースのサイズによって異なります。
- 移行は、
Migrating Data
サブ状態が正常に完了するとすぐ、Succeeded
状態に遷移します。 Migrating Data
サブ状態で問題が発生した場合、移行は Failed
状態に移行します。
レプリケーションの設定
[オンライン] 移行 (プレビュー) を選ぶ場合は、移行元の単一サーバーで論理レプリケーションが有効にされている必要があります。 それが有効になっていない場合は、付属の JSON ファイルで値が true
に設定された SetupLogicalReplicationOnSourceDBIfNeeded
パラメーターが渡されると、移行サービスはソースの単一サーバーで論理レプリケーションを自動的にオンにします。 ソースでのレプリケーションは、移行を開始した後で、次のコマンドを使って手動で設定することもできます。 どちらの方法で論理レプリケーションを有効にしても、ソースの単一サーバーが再起動されます。
次に例を示します。
az postgres flexible-server migration update --subscription 11111111-1111-1111-1111-111111111111 --resource-group my-learning-rg --name myflexibleserver --migration-name CLIMigrationExample --setup-replication
フレキシブル サーバーが WaitingForLogicalReplicationSetupRequestOnSourceDB
状態で待機している場合は、その移行を進めるためにこのコマンドが必要です。
上記のいずれかのリージョンでオンライン移行を実行するには、次を使用します。
az postgres flexible-server migration create --subscription 11111111-1111-1111-1111-111111111111 --resource-group my-learning-rg --name myflexibleserver --migration-name migration1 --properties "C:\Users\Administrator\Documents\migrationBody.JSON" --migration-mode online
移行の一覧を表示する
list
コマンドは、フレキシブル サーバー ターゲットへのすべての移行の試行を一覧表示します。
az postgres flexible-server migration list [--subscription]
[--resource-group]
[--name]
[--filter]
filter
パラメーターには、次の 2 つのオプションがあります。
Active
: ターゲット サーバーへの現在のアクティブな移行の試行 (進行中) を一覧表示します。 失敗、キャンセル、または成功した移行は含まれません。
All
: ターゲット サーバーへのすべての移行の試行を一覧表示します。 これには、状態に関係なく、アクティブな移行と過去の移行の両方が含まれます。
このコマンドの詳細を確認するには、help
パラメーターを使用します。
az postgres flexible-server migration list -- help
移行を監視する
show
コマンドは、進行中の移行を監視するのに役立ち、移行の現在の状態とサブ状態を示します。
これらの詳細には、移行の現在の状態とサブ状態に関する情報が含まれます。
az postgres flexible-server migration show [--subscription]
[--resource-group]
[--name]
[--migration-name]
migration_name
パラメーターは、create
コマンド中に移行に割り当てられた名前です。 詳細を示す CLI コマンドからのサンプル応答のスナップショットを次に示します。
このコマンドの詳細を確認するには、help
パラメーターを使用します。
az postgres flexible-server migration show -- help
次の表で、移行の状態とサブ状態について説明します。
移行の状態 |
説明 |
InProgress |
移行インフラストラクチャが設定されているか、実際のデータ移行が進行中です。 |
Canceled |
移行が取り消されたか削除されました。 |
Failed |
移行は失敗しました。 |
Succeeded |
移行が成功し、完了しました。 |
移行サブ状態 |
説明 |
PerformingPreRequisiteSteps |
インフラストラクチャが設定され、データ移行の準備ができています。 |
MigratingData |
データ移行が進行中です。 |
CompletingMigration |
一括移行が進行中です。 |
Completed |
一括移行が成功し、移行は完了しています。 |
前提条件 (オンライン)
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 サーバーのレプリケーション設定で、レプリケーションのサポートを [論理] に設定する必要があります。 さらに、サーバー パラメータ max_wal_senders
および max_replication_slots
の値は、移行する必要があるデータベースの数と同じである必要があります。 これらは、次のコマンドを使用してコマンド ラインで構成することもできます。
- ALTER SYSTEM SET wal_level = logical;
- ALTER SYSTEM SET max_wal_senders =
number of databases to migrate
;
- ALTER SYSTEM SET max_replication_slots =
number of databases to migrate
;
オンライン移行のすべての前提条件が整った後、ソース PostgreSQL サーバーを再起動する必要があります。
Note
Azure Database for PostgreSQL 単一サーバーでのオンライン移行の場合、Azure portal の単一サーバー ページのレプリケーション設定で、Azure レプリケーションのサポートを論理に設定します。
ネットワークのセットアップ
移行中にソースとターゲットの間の接続を正常に行うためには、適切なネットワーク設定が不可欠です。 さまざまなシナリオでネットワーク接続を確立するのに役立つガイドを次に示します:
移行のネットワーク要件:
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 パラメーターを検索します。 このパラメーターは、サーバーの再起動時に事前に読み込まれる拡張ライブラリのセットを示します。
サーバー パラメーター
これらのパラメーターはターゲット環境に自動的に移行されないので手動で構成する必要があります。
ターゲットで高可用性 (信頼性) と読み取りレプリカを無効にする
ターゲット環境で高可用性 (信頼性) と読み取りレプリカを無効にすることが不可欠です。 これらの機能は、移行が完了した後にのみ有効にする必要があります。
これらのガイドラインに従うと、HA と読み取りレプリカによって導入された変数を追加することなく、スムーズな移行プロセスを実現できます。 移行が完了し、データベースが安定したら、これらの機能を有効にして、Azure のデータベース環境の可用性とスケーラビリティを向上させることができます。
作業の開始
Microsoft Azure を初めて使う場合は、オファリングを評価するためのアカウントを作成します。
Azure CLI のインストール ページから、お使いのオペレーティング システム用の最新の Azure CLI をインストールします。
Azure CLI が既にインストールされている場合は、az version
コマンドを使用してバージョンを確認します。 移行 CLI コマンドを使用するには、バージョンが 2.50.0 以降である必要があります。 そうでない場合は、Azure CLI のバージョンを更新します。
az login
コマンドを実行します。
az login
ブラウザー ウィンドウが開き、Azure サインイン ページが表示されます。 認証を成功させるために Azure 資格情報を入力します。 Azure CLI でサインインするその他の方法については、こちらの記事をご覧ください。
移行の CLI コマンド (オンライン)
移行サービスには、移行関連のタスクを実行するための使いやすい CLI コマンドが付属しています。 すべての CLI コマンドは、az postgres flexible-server migration
から始まります。 移行を始める前に、拡張機能を許可リストに載せることが重要です。
help
パラメーターを使用すると、コマンドに関連付けられているオプションを理解し、適切な構文をフレーミングするのに役立ちます。
az postgres flexible-server migration --help
上記のコマンドを実行すると、次の出力が得られます。
出力には、サポートされている移行コマンドとそのアクションが一覧表示されます。 これらのコマンドを詳しく見てみましょう。
Azure CLI を使用して移行を作成する
create
コマンドは、ソース サーバーからターゲット サーバーへの移行の作成に役立ちます。
az postgres flexible-server migration create -- help
上記のコマンドを実行すると、次の結果が得られます。
必要な引数が一覧表示され、ソース サーバーからターゲット サーバーへの移行を適切に作成するための構文例が示されます。 新しい移行を作成する CLI コマンドを次に示します。
az postgres flexible-server migration create [--subscription]
[--resource-group]
[--name]
[--migration-name]
[--migration-mode]
[--properties]
パラメーター |
説明 |
subscription |
フレキシブル サーバー ターゲットのサブスクリプション ID。 |
resource-group |
フレキシブル サーバー ターゲットのリソース グループ。 |
name |
フレキシブル サーバー ターゲットの名前。 |
migration-name |
フレキシブル サーバーに対して試行された移行に対する一意識別子。 このフィールドで使用することができる文字は英数字のみで、かつハイフン (- ) 以外の特殊文字は使用することができません。 名前の先頭に - を付けることはできません。1 つのフレキシブル サーバー ターゲットへの 2 つの移行に、同じ名前をつけることはできません。 |
migration-mode |
これは省略可能なパラメーターです。 既定値: オフライン。 オフライン移行では、ソース データベースを特定の時点でターゲット サーバーにコピーします。 |
properties |
シングル サーバー ソースに関する情報を持つ JSON ファイルへの絶対パス。 |
次に例を示します。
az postgres flexible-server migration create --subscription 11111111-1111-1111-1111-111111111111 --resource-group my-learning-rg --name myflexibleserver --migration-name migration1 --properties "C:\Users\Administrator\Documents\migrationBody.JSON" --migration-mode offline
create
コマンドで使われる migration-name
引数は、update
、delete
、show.
などの他の CLI コマンドで使われます。これは、それらすべてのコマンドでの対応するアクションで、移行の試行を一意に識別します。
最後に、properties
引数の一部として渡す JSON ファイルが create
コマンドに必要です。
JSON の構造体は次のとおりです。
{
"properties": {
"sourceDbServerResourceId":"/subscriptions/<subscriptionid>/resourceGroups/<src_ rg_name>/providers/Microsoft.DBforPostgreSQL/servers/<source server name>",
"secretParameters": {
"adminCredentials":
{
"sourceServerPassword": "<password>",
"targetServerPassword": "<password>"
},
"sourceServerUserName": "<username>@<servername>",
"targetServerUserName": "<username>"
},
"dbsToMigrate":
[
"<db1>","<db2>"
],
"overwriteDbsInTarget":"true"
}
}
JSON ファイル形式に含められる create
パラメーターを次に示します。
パラメーター |
型 |
内容 |
sourceDbServerResourceId |
必須 |
このパラメーターはシングル サーバー ソースのリソース ID であり、必須です。 |
adminCredentials |
必須 |
このパラメーターは、シングル サーバー ソースとフレキシブル サーバー ターゲットの両方の管理者ユーザーのパスワードを一覧表示します。 これらのパスワードは、ソース サーバーとターゲットの両方のサーバーに対する認証に役立ちます。 |
sourceServerUserName |
必須 |
既定値は単一サーバーの作成時に作成された管理者ユーザーであり、指定されたパスワードは、このユーザーの認証に使われます。 既定のユーザーを使っていない場合、このパラメーターは移行を実行するためのソース サーバー上でのユーザーまたはロールです。 このユーザーは、移行に関連するデータベース オブジェクトで必要な特権と所有権を持ち、azure_pg_admin ロールのメンバーである必要があります。 |
targetServerUserName |
必須 |
既定値は、フレキシブル サーバーの作成時に作成された管理者ユーザーであり、指定されたパスワードは、このユーザーの認証に使われます。 既定のユーザーを使用していない場合、このパラメーターはこの移行の実行に使用されるターゲット サーバー上のユーザーまたはロールです。 このユーザーは、azure_pg_admin、pg_read_all_settings、pg_read_all_stats、pg_stat_scan_tables ロールのメンバーであり、Create ロールである Create DB 属性を持っている必要があります。 |
dbsToMigrate |
必須 |
フレキシブル サーバーに移行するデータベースのリストを指定します。 移行されるのはユーザー データベースだけです。 システム データベース、および template0 や template1 などのテンプレート データベースは移行されません。 |
overwriteDbsInTarget |
必須 |
true に設定すると、移行しようとしているものと同じ名前の既存のデータベースがターゲット サーバーにある場合、移行サービスはそのデータベースを自動的に上書きします。 |
SetupLogicalReplicationOnSourceDBIfNeeded |
省略可能 |
このプロパティを true に設定して、ソース サーバーで論理レプリケーションを自動的に有効にできます。 サーバー設定のこの変更には、サーバーを再起動する必要があり、2 から 3 分のダウンタイムが発生します。 |
SourceDBServerFullyQualifiedDomainName |
省略可能 |
仮想ネットワークの名前解決にカスタム DNS サーバーを使用する場合に使用します。 このプロパティのカスタム DNS サーバーに従って、シングル サーバー ソースの FQDN を指定します。 |
TargetDBServerFullyQualifiedDomainName |
オプション |
仮想ネットワーク内の名前解決にカスタム DNS サーバーを使用する場合に使用します。 カスタム DNS サーバーに従ってフレキシブル サーバー ターゲットの FQDN を指定します。
SourceDBServerFullyQualifiedDomainName と TargetDBServerFullyQualifiedDomainName を JSON の一部として含めるのは、名前解決のために Azure 提供の DNS ではなくカスタム DNS サーバーを使用するまれなシナリオに限られます。 それ以外の場合は、これらのパラメーターを JSON ファイルに含めないでください。 |
コマンド応答に関しては、次の重要な点に注意してください。
create
コマンドがトリガーされると、移行は InProgress
状態と PerformingPreRequisiteSteps
サブ状態に移ります。 移行ワークフローで、移行インフラストラクチャをデプロイし、ソースとターゲットの間の接続を設定するには、数分かかります。
PerformingPreRequisiteSteps
サブ状態が完了すると、移行は Migrating Data,
サブ状態に遷移し、データベースの複製やコピーが行われます。
- 移行される各データベースには、テーブル数、増分挿入、削除、保留中のバイトなど、すべての移行の詳細を含む独自のセクションがあります。
Migrating Data
サブ状態が完了するまでにかかる時間は、移行するデータベースのサイズによって異なります。
- 移行は、
Migrating Data
サブ状態が正常に完了するとすぐ、Succeeded
状態に遷移します。 Migrating Data
サブ状態で問題が発生した場合、移行は Failed
状態に移行します。
レプリケーションの設定
[オンライン] 移行 (プレビュー) を選ぶ場合は、移行元の単一サーバーで論理レプリケーションが有効にされている必要があります。 それが有効になっていない場合は、付属の JSON ファイルで値が true
に設定された SetupLogicalReplicationOnSourceDBIfNeeded
パラメーターが渡されると、移行サービスはソースの単一サーバーで論理レプリケーションを自動的にオンにします。 ソースでのレプリケーションは、移行を開始した後で、次のコマンドを使って手動で設定することもできます。 どちらの方法で論理レプリケーションを有効にしても、ソースの単一サーバーが再起動されます。
次に例を示します。
az postgres flexible-server migration update --subscription 11111111-1111-1111-1111-111111111111 --resource-group my-learning-rg --name myflexibleserver --migration-name CLIMigrationExample --setup-replication
フレキシブル サーバーが WaitingForLogicalReplicationSetupRequestOnSourceDB
状態で待機している場合は、その移行を進めるためにこのコマンドが必要です。
上記のいずれかのリージョンでオンライン移行を実行するには、次を使用します。
az postgres flexible-server migration create --subscription 11111111-1111-1111-1111-111111111111 --resource-group my-learning-rg --name myflexibleserver --migration-name migration1 --properties "C:\Users\Administrator\Documents\migrationBody.JSON" --migration-mode online
移行の一覧を表示する
list
コマンドは、フレキシブル サーバー ターゲットへのすべての移行の試行を一覧表示します。
az postgres flexible-server migration list [--subscription]
[--resource-group]
[--name]
[--filter]
filter
パラメーターには、次の 2 つのオプションがあります。
Active
: ターゲット サーバーへの現在のアクティブな移行の試行 (進行中) を一覧表示します。 失敗、キャンセル、または成功した移行は含まれません。
All
: ターゲット サーバーへのすべての移行の試行を一覧表示します。 これには、状態に関係なく、アクティブな移行と過去の移行の両方が含まれます。
このコマンドの詳細を確認するには、help
パラメーターを使用します。
az postgres flexible-server migration list -- help
移行を監視する
show
コマンドは、進行中の移行を監視するのに役立ち、移行の現在の状態とサブ状態を示します。
これらの詳細には、移行の現在の状態とサブ状態に関する情報が含まれます。
az postgres flexible-server migration show [--subscription]
[--resource-group]
[--name]
[--migration-name]
migration_name
パラメーターは、create
コマンド中に移行に割り当てられた名前です。 詳細を示す CLI コマンドからのサンプル応答のスナップショットを次に示します。
このコマンドの詳細を確認するには、help
パラメーターを使用します。
az postgres flexible-server migration show -- help
次の表で、移行の状態とサブ状態について説明します。
移行の状態 |
説明 |
InProgress |
移行インフラストラクチャが設定されているか、実際のデータ移行が進行中です。 |
Canceled |
移行が取り消されたか削除されました。 |
Failed |
移行は失敗しました。 |
Succeeded |
移行が成功し、完了しました。 |
移行サブ状態 |
説明 |
PerformingPreRequisiteSteps |
インフラストラクチャが設定され、データ移行の準備ができています。 |
MigratingData |
データ移行が進行中です。 |
CompletingMigration |
一括移行が進行中です。 |
Completed |
一括移行が成功し、移行は完了しています。 |
一括移行
オンライン移行では、基本データの移行が完了すると、その移行タスクは WaitingForCutoverTrigger
サブ状態に移動します。 この状態では、ユーザーは以下のコマンドを使用して、CLI を通じて一括移行をトリガーすることができます。 ポータルから移行グリッド内の移行名を選択することで、一括移行をトリガーすることもできます。
次に例を示します。
az postgres flexible-server migration update --subscription 11111111-1111-1111-1111-111111111111 --resource-group my-learning-rg --name myflexibleserver --migration-name CLIMigrationExample --cutover
一括移行を開始する前に、次のことを確認するのが重要です。
- ソースへの書き込みが停止している -
latency
パラメーターが 0 まで減少する、または 0 に近い
latency
パラメーターは、ターゲットがソースと最後に同期されたタイミングを示します。 たとえば、以下の画像に示すように、これら 2 つのデータベースの場合は 201 と 202 です。 これは、ソースで過去約 200 秒間に発生した変更が、まだターゲットに同期されていないことを意味します。 この時点で、ソースへの書き込みを停止し、一括移行を開始することができます。 ソースで大量のトラフィックが発生する場合は、まず書き込みを停止して、Latency
が 0 に近づいてから一括移行を開始することをお勧めします。 一括移行操作は、ソースからターゲットに保留中のすべての変更を適用して、移行を完了します。 Latency
がゼロではなくても "一括移行" をトリガーした場合、レプリケーションはその時点までで停止します。 その場合、一括移行の時点までのソース上のすべてのデータが、ターゲットに適用されます。 たとえば、一括移行の時点で待ち時間が 15 分の場合、過去 15 分間のすべての変更データがターゲットに適用されます。 所要時間は、その過去 15 分間に発生した変更のバックログによって異なります。 そのため、一括移行をトリガーする前に、待機時間をゼロまたはゼロに近い値にすることをお勧めします。
latency
の情報は、migration show コマンドを使用して取得することができます。
一括移行を開始する前の、移行のスナップショットを次に示します。
一括移行が開始された後、基本コピーの間に発生したすべてのトランザクションが順番にターゲットにコピーされて、移行が完了されます。
一括移行が成功しなかった場合、その移行は Failed
状態になります。
このコマンドの詳細を確認するには、help
パラメーターを使用します。
az postgres flexible-server migration update -- help