このチュートリアルでは、Visual Studio Codeの Azure DocumentDB 移行拡張機能を使用して、MongoDB のオンプレミスまたはクラウド インスタンスから DocumentDB をAzure移行ジョブを作成および管理します。 この拡張機能は、サービスを中断することなく移行を実行するための開発者向けのインターフェイスを提供します。 この拡張機能により、インフラストラクチャを追加する必要がなくなり、セキュリティで保護された接続性、ゼロコストの使用、移行するデータベースとコレクションをきめ細かく制御できます。
この記事では、拡張機能の統合ワークフローを使用して、Visual Studio Code内の移行手順を直接簡略化することに重点を置いています。 このアプローチは、複雑さと信頼性を最小限に抑えた、合理化された管理されたエクスペリエンスが必要なシナリオに最適です。
[前提条件]
Azure サブスクリプション
- Azure サブスクリプションがない場合は、無料アカウント を作成します。
既存の Azure DocumentDB クラスター
- クラスターがない場合は、新しいクラスターを作成します
- Azure DocumentDB 移行拡張機能をコンピューターにインストールします。 これにより、前提条件である DocumentDB for Visual Studio Code 拡張機能が自動的にインストールされます。
移行を開始する前に、Azure DocumentDB アカウントと既存の MongoDB インスタンスを移行用に準備します。
MongoDB インスタンス (ソース)
- 移行前評価を完了して、ソース インスタンスとターゲット アカウントの間に非互換性と警告があるかどうかを判断します。
- 既に存在しない限り、
readAnyDatabaseとclusterMonitorのアクセス許可を持つユーザーを追加します。 拡張機能で移行ジョブを作成するときに、この資格情報を使用します。
Azure DocumentDB (ターゲット)
- Azure DocumentDB account の資格情報を収集します。
- ユーザーが
createCollection、dropCollection、createIndex、insert、listCollectionsのアクセス許可を持っていることを確認します。
最低限必要なアクセス許可
移行ジョブを作成して実行するには、次の最小ロールを使用します。
| 最小権限 | Scope | 接続モードに適用されます | Purpose |
|---|---|---|---|
| Reader | Subscription | パブリックとプライベート | サブスクリプションとリソース グループを一覧表示します。 移行ジョブごとに必要です。 |
| Azure Database Migration Service貢献者 | リソース グループ | パブリックとプライベート | Azure Database Migration Service (DMS) を作成します。 移行ごとに新しい DMS を作成する必要はありません。 リージョンごとに 1 つの DMS で十分です。 |
| 投稿者 | Subscription | パブリックとプライベート | DMS をサブスクリプションに登録します。 これは 1 回限りのアクティビティであり、別のユーザーに委任できます。 |
| ユーザーアクセス管理者 | 仮想ネットワーク | プライベートのみ | DMS オブジェクト プリンシパルにネットワーク共同作成者ロールを割り当てます。 これは仮想ネットワークごとの 1 回限りのアクティビティであり、別のユーザーに委任できます。 |
| 投稿者 | Azure DocumentDB | パブリックとプライベート | 移行ジョブをトリガーします。 |
プロバイダー登録の詳細については、サブスクリプションで Microsoft.DataMigration リソース プロバイダーを登録する を参照してください。
Important
Microsoft Entra ID認証は、移行ジョブでは現在サポートされていません。 ネイティブ DocumentDB 認証を使用してください。
移行を実行する
移行のサイズ設定、速度、およびカットオーバーに関する計画ガイダンスについては、「 移行のベスト プラクティス」を参照してください。
ソースに接続する
- DocumentDB for VS Code 拡張機能を開きます。
- 移行する MongoDB サーバーを ドキュメント DB 接続 の一覧に追加します。
- [ 新しい接続の追加] を選択します。
- ナビゲーション バーで、[接続文字列] を選択 します。
- 接続文字列を貼り付けます:
mongodb://<YOUR_USERNAME>:<YOUR_PASSWORD>@localhost:10260/?tls=true&tlsAllowInvalidCertificates=true&authMechanism=SCRAM-SHA-256 - DocumentDB 接続から接続を選択し、それを展開して接続します。
移行拡張機能を呼び出す
DocumentDB 接続から移行拡張機能を呼び出すことができます。
展開された (接続されている) 接続を右クリックします。
コンテキスト メニューから [データ移行 ] を選択します。
Visual Studio Code のコンテキストメニューのスクリーンショット コマンド パレットで、Azure DocumentDB への移行 を選択します。
Visual Studio Code で移行ツールを一覧表示するコマンドパレットのスクリーンショット。 次に、Azure DocumentDB に移行を選択します。
移行ウィザードを使用して、プロセスを進めます。
移行ジョブを作成する
移行ジョブは、コレクションのグループをソースから DocumentDB Azure移行先に移行するために使用されます。 移行ジョブの作成ウィザードには、6 つの手順があります。
手順 1: ジョブを作成する
この手順では、ジョブの基本的な詳細を指定します。
ジョブ名: 移行ジョブを識別するためのわかりやすい名前を指定します。
移行モード: ユース ケースに最も適した移行モードを選択します。
- オンライン 移行ではコレクション データがコピーされ、プロセス中に更新プログラムも確実にレプリケートされます。 このメソッドは、ダウンタイムを最小限に抑え、ビジネス継続性のための継続的な運用を可能にするという利点があります。 進行中の操作が重要であり、ダウンタイムの削減が優先される場合は、このオプションを使用します。
- オフライン 移行では、最初にデータベースのスナップショットがキャプチャされ、よりシンプルで予測可能なアプローチが提供されます。 データベースの静的コピーを使用しても問題なく機能し、リアルタイムの更新は必須ではありません。
Important
MongoDB からのオンライン移行を確実に成功させるには、ソース MongoDB サーバーで ChangeStream を有効にする必要があります。 ChangeStream がないと、最初の移行後にデータに加えられた変更はキャプチャされません。 従って、オンライン移行モードは、ソース MongoDB サーバーで ChangeStream が有効になっている場合にのみ使用してください。
接続: 組織のセキュリティ要件とネットワークのセットアップに応じて、[ パブリック ] と [ プライベート] から選択します。
- ソース サーバーとターゲット サーバーがパブリック IP を介してインターネット上でアクセス可能な場合は、Public を使用します。 これにより、外部アクセシビリティを必要とするサービスのサポートが可能になります。
- ソース サーバーまたはターゲット サーバーが仮想ネットワーク内のプライベート IP 経由でのみアクセス できる場合は 、Private を使用します。 パブリック インターネットへの露出を排除することで、セキュリティを強化します。
[次へ] を選択して続行します。
手順 2: ターゲットを選択する
この手順では、既存の Azure DocumentDB アカウントを選択し、その接続文字列を指定します。
ドロップダウンから、サブスクリプション、リソース グループ、Azure DocumentDB アカウントを選択します。
Azure DocumentDB アカウントに接続文字列を指定します。
Azure DocumentDB ファイアウォールで、画面に一覧表示されている IP が許可されていることを確認します。
[次へ] を選択して続行します。
手順 3: Database Migration Service(DMS) を選択する
Azure Database Migration Serviceは、ローカル リソースに依存するのではなく、データ転送にクラウド インフラストラクチャを使用して、Azure データ プラットフォームとの間でデータを移行するサービスです。 ドロップダウンから既存のAzure Database Migration Service インスタンスを選択するか、Create DMS を選択して新しい移行サービスを作成します。
Important
Microsoft.DataMigration リソース プロバイダーが、あなたのサブスクリプションに登録されていることを確認してください。 必要なのは、サブスクリプションごとに 1 回だけです。
[次へ] を選択して続行します。
手順 4: 接続を構成する
この画面は、手順 1 で選択した接続モードによって異なります。
パブリック接続
パブリック接続では、移行ジョブはパブリック インターネットを使用してソースとターゲットに接続します。 通信を有効にするには、ソースファイアウォールとターゲットファイアウォールを更新する必要があります。 DMS サーバーからの通信を有効にするには、画面に一覧表示されている IP アドレスをソースファイアウォールとターゲット ファイアウォールに追加します。 ネットワーク モデルの詳細については、「 パブリック接続」を参照してください。 ファイアウォール構成のガイダンスについては、 DocumentDB クラスター ファイアウォールAzure構成する方法に関するページを参照してください。
プライベート接続
プライベート接続では、移行ジョブは仮想ネットワーク内で実行されます。 仮想ネットワークと安全に通信するために、仮想ネットワーク ピアリングを使用します。 ネットワーク モデルの詳細については、「 プライベート接続」を参照してください。
このツールを使用すると、ソース用とターゲット用の 2 つの仮想ネットワークをピアリングできます。 ネットワーク構成に応じて、ドロップダウンからサブスクリプション、リソース グループ、仮想ネットワークを選択します。
[ DMS 構成] セクションで、仮想ネットワークと競合しない CIDR 範囲を選択します。
画面に表示される PowerShell スクリプトを実行して、仮想ネットワーク統合を有効にします。
[次へ] を選択して続行します。
手順 5: コレクションを選択する
この手順では、移行ジョブに含めるコレクションを選択します。 指定された検索オプションを使用して、コレクションの一覧から選択します。 ターゲットに既に存在するコレクションは、[ターゲットに存在する] 列で自動的に [はい] とマークされます。
ヒント
移行ジョブの作成後にコレクションの一覧を追加できないため、含めるすべてのコレクションを選択してください。
[次へ] を選択して続行します。
手順 6: 確認して開始する
[ 移行の開始] を選択する前に、移行ジョブの詳細を確認します。 詳細を更新する必要がある場合は、[ 詳細の編集] ボタンを使用します。
移行ジョブが正常に作成されると、[ 既存のジョブの表示 ] ページに自動的にリダイレクトされます
ヒント
データ移行タスクは、Azure Database Migration Serviceで実行されます。 そのため、データ移行中にソース環境とターゲット環境に接続する必要はありません。 ダッシュボードの状態は、頻繁に更新されます。
既存の移行ジョブを監視する
[ 既存のジョブの表示 ] タブを使用して、初期化されたジョブの移行状態を監視します。 ジョブは、選択した DMS に基づいて一覧表示されます。 [ DMS の変更 ] ボタンを使用して選択内容を変更します。
状態は頻繁に自動的に更新されます。 選択したコレクション スナップショットがターゲットにコピーされると、オフライン ジョブは自動的に完了します。 ただし、オンライン移行は手動で切り替える必要があります。
コレクションごとの状態を表示するには、テーブルから行を選択します。
オンライン移行を監視する
オンライン移行は、オフライン移行とは異なり、自動的には完了しません。 代わりに、[カットオーバー] を選択して手動で確定するまで、継続して実行されます。
オンライン移行を完了するには、指定された順序で次の手順に従います。
すべてのコレクションの初期データ読み込みが完了すると、[ カットオーバー ] ボタンが有効になります。 この段階では、ジョブはレプリケーションフェーズにあり、ソースインスタンスからターゲットインスタンスに最新の変更を反映するために、更新を継続的にコピーしています。
移行のカットオーバーを実行する準備ができたら、移行するソース コレクションへのすべての受信トランザクションを停止します。
レプリケーションギャップには、最後の更新と現在の時刻の間の時間差が表示されます。
テーブル内のレプリケーションの変更を監視し、レプリケーション変更の反映メトリクスが安定するまで待ちます。 ソースからのすべての更新がターゲットに正常にコピーされたことを示すため、レプリケーション変更適用メトリックは安定している必要があります。
すべてのコレクションでレプリケーションのギャップが最小限で、レプリケーションの変更の再生メトリックが安定している場合は、[カットオーバー] を選択します。
ソース コレクションとターゲット コレクションの間で行数が同じであることを手動で検証します。
注
ソースとターゲットが同期されていることを検証せずにカットオーバー操作を実行すると、データが失われる可能性があります。
移行シナリオ
Azure DocumentDB 移行拡張機能では、Azureで実行されている MongoDB インスタンス、オンプレミスのデータセンター、その他のクラウド プロバイダーなど、いくつかのソース環境がサポートされています。 この拡張機能は、さまざまなネットワーク構成とセキュリティ要件に対応するための柔軟な接続オプションを提供します。
サポートされているソース環境
次の表は、サポートされている移行ソースをまとめたものです。
| ソース環境 | Description |
|---|---|
| Azure内 | Azure 仮想マシンまたはその他のAzureホステッド サービスで実行されている MongoDB インスタンス |
| オンプレミス | ローカル データ センターまたはプライベート インフラストラクチャで実行されている MongoDB サーバー |
| その他のクラウド プロバイダー | 他のクラウド プラットフォームでホストされている MongoDB インスタンス |
パブリック接続
パブリック接続モードでは、Azure Database Migration Service (DMS) はパブリック インターネット経由でソース サーバーとターゲット サーバーに接続します。 DMS は、ソース サーバーとターゲット サーバーの両方のファイアウォール許可リストに追加する静的 IP アドレスを提供します。 DMS は、特定のリージョン内のすべての移行に共有パブリック仮想ネットワークを使用します。 この仮想ネットワークはお客様間で共有されますが、各移行ジョブは、ジョブ レベルの分離を確保するために、独自の分離されたプライベート ワーカー ノードで実行されます。
パブリック接続は、次の場合に使用します。
- ソース サーバーとターゲット サーバーには、パブリック IP アドレスを介してアクセスできます。
- 組織のセキュリティ ポリシーでは、パブリック インターネット経由の接続が許可されます。
- 仮想ネットワークを構成せずに、より簡単なセットアップが必要です。
パブリック接続を有効にするには:
移行ウィザードで、接続モードとして [ パブリック ] を選択します。
ウィザードに表示される静的 IP アドレスをメモします。
これらの IP アドレスを、ソース MongoDB サーバーのファイアウォール許可リストに追加します。
これらの IP アドレスを Azure DocumentDB ファイアウォールに追加します。
プライベート接続
プライベート接続モードでは、DMS は移行ジョブごとに専用のプライベート仮想ネットワークをプロビジョニングし、ソースとターゲットの仮想ネットワークとピアリングします。 つまり、すべてのジョブは分離されたワーカー ノードと分離されたネットワークの両方を取得するため、ジョブ間でトラフィックが交差せず、顧客間に共有ネットワーク パスが存在しなくなります。
この拡張機能では、最大 2 つの仮想ネットワークがサポートされます。
- ソース仮想ネットワーク: ソース MongoDB サーバーにアクセスできる仮想ネットワーク。
- ターゲット仮想ネットワーク: Azure DocumentDB クラスターにアクセスできる仮想ネットワーク。
プライベート接続は、次の場合に使用します。
- ソース サーバーまたはターゲット サーバーにパブリック インターネット経由でアクセスできません。
- 組織では、すべてのトラフィックがプライベート ネットワークを通過する必要があります。
- パブリック インターネットの露出を避ける必要があります。
他のクラウド プロバイダーまたはオンプレミスから
任意の VPN ツールを使用して、Azureと別のクラウドまたはオンプレミスのソース環境との間のネットワーク接続を設定します。
Azureのプライベート エンドポイントから
ソースとターゲットの仮想ネットワークのプライベート エンドポイントを設定します。
プライベート接続を有効にするには:
移行ウィザードで、接続モードとして [プライベート ] を選択します。
ソース環境のサブスクリプション、リソース グループ、および仮想ネットワークを選択します。
ターゲット環境のサブスクリプション、リソース グループ、および仮想ネットワークを選択します。
[ DMS 構成] セクションで、既存の仮想ネットワークと競合しない CIDR 範囲を選択します。
ウィザードで提供されている PowerShell スクリプトを実行して、仮想ネットワークの統合とピアリングを有効にします。
Important
プライベート アクセスを使用する場合、1 つの仮想ネットワークで一度にサポートできるアクティブな移行ジョブは 1 つだけです。 複数の同時実行ジョブを実行するには、ジョブごとに異なる仮想ネットワークを使用します。
サブスクリプションに Microsoft.DataMigration リソース プロバイダーを登録します
確実にMicrosoft。DataMigration リソース プロバイダーがサブスクリプションに登録されている場合は、次の手順に従います。
Azure ポータル
Azure ポータルに移動し、サブスクリプションに移動します。
左側のメニューで、[設定] で [リソース プロバイダー] を選択します。
上部の検索ボックスで「Microsoft.DataMigration」を検索します。
登録されていない場合は、それを選択して [ 登録 ] ボタンを選択します。
Azure CLI
Azure Cloud Shellまたはローカル ターミナルを開きます。
リソース プロバイダーを登録する以下のコマンドを実行します。
az provider register --namespace Microsoft.DataMigration
PowerShell
Azure Cloud Shellまたはローカルの PowerShell を開きます。
リソース プロバイダーを登録する以下のコマンドを実行します。
Register-AzResourceProvider -ProviderNamespace "Microsoft.DataMigration"
FAQ
Azure DocumentDB でビューがサポートされている場合、コレクションの選択画面の手順でビューが表示されないのはなぜですか?
Azure DocumentDB では、新しいビューの作成がサポートされています。 ただし、移行拡張機能では、既存のビューの移行はサポートされていません。
移行が完了したら、いつでもビューを再作成できます。
MongoDB から Azure DocumentDB に移行するときにスキップされるコレクションとデータベースはどれですか?
次のデータベースとコレクションは、MongoDB の内部と見なされます。
カテゴリ
Description
データベース
管理者、ローカル、システム構成
コレクション
プレフィックスを持つ任意のコレクション system.
移行ジョブは自分のコンピューターでローカルに実行されますか?
VS Code の移行ウィザードでは、ローカル コンピューターからソース環境とターゲット環境の両方へのネットワーク接続が必要です。 この接続は、データベースとコレクションを列挙し、移行ジョブを送信するために使用されます。 ジョブが送信されたら、VS Code を閉じるか、ソース環境とターゲット環境から切断できます。
データ移行は、Azure Database Migration Service (DMS) によって完全に実行されます。これは、すべてのデータ移動を管理するAzureホスト型サービスです。 DMS はジョブの実行にローカル コンピューターまたは VS Code に依存しないため、ジョブの送信後にローカル接続は必要ありません。
移行中にデータベースとコレクションの名前を変更できますか?
この拡張機能は、移行中のデータベースとコレクションの名前変更をサポートしていません。
接続の問題を回避するためにソース サーバーファイアウォールを構成するにはどうすればよいですか?
必要なネットワーク構成は、選択した接続モードによって異なります。
-
パブリック モード: 通信を有効にするには、ソース ファイアウォールとターゲット ファイアウォールの両方でウィザードに表示される IP アドレスを許可する必要があります。
-
プライベート モード: DMS サーバーが 仮想ネットワーク 内のソースおよびターゲット エンドポイントと安全に通信できるように、仮想ネットワーク統合を有効にする必要があります。
VS Code の接続についても参照してください
1 回の移行で移行できるデータベースとコレクションの数はいくつですか?
1 回の移行に含めることができるコレクションの数に制限はありません。
同時に実行できる移行ジョブの数はいくつですか?
パブリック アクセスを使用する場合は、複数の移行ジョブを実行できます。 ただし、 プライベート アクセスを使用する場合、1 つの仮想ネットワークで一度にサポートできる アクティブなジョブは 1 つだけです。 プライベート アクセスで複数のジョブを実行するには、ジョブごとに 異なる仮想ネットワーク を使用する必要があります。
拡張機能で生成されるログの種類は何ですか?
拡張機能は、エラー、警告、およびその他の診断ログを既定のログ ディレクトリに記録します。
-
Windows -
C:\Users\<username>\.dmamongo\logs\
-
Linux -
~/.dmamongo/logs
-
Macos -
/Users/<username>/.dmamongo/logs
次のステップ