このチュートリアルでは、Visual Studio Code の Azure DocumentDB 移行拡張機能を使用して、MongoDB のオンプレミスまたはクラウド インスタンスから Azure DocumentDB への移行ジョブを作成および管理します。 この拡張機能は、サービスを中断することなく移行を実行するための開発者向けのインターフェイスを提供します。 この拡張機能により、インフラストラクチャを追加する必要がなくなり、セキュリティで保護された接続性、ゼロコストの使用、移行するデータベースとコレクションをきめ細かく制御できます。
この記事では、拡張機能の統合ワークフローを使用して、Visual Studio Code 内で直接移行手順を簡略化することに重点を置いています。 このアプローチは、複雑さと信頼性を最小限に抑えた、合理化された管理されたエクスペリエンスが必要なシナリオに最適です。
[前提条件]
Azure サブスクリプション
- Azure サブスクリプションをお持ちでない場合は、無料アカウントを作成してください
既存の Azure DocumentDB クラスター
- クラスターがない場合は、新しいクラスターを作成します
- マシンに Azure DocumentDB 移行拡張機能 をインストールします。 これにより、前提条件である DocumentDB for Visual Studio Code 拡張機能が自動的にインストールされます。
移行を開始する前に、Azure DocumentDB アカウントと既存の MongoDB インスタンスを移行用に準備します。
MongoDB インスタンス (ソース)
- 移行前評価を完了して、ソース インスタンスとターゲット アカウントの間に非互換性と警告があるかどうかを判断します。
- 既に存在しない限り、
readAnyDatabaseとclusterMonitorのアクセス許可を持つユーザーを追加します。 拡張機能で移行ジョブを作成するときに、この資格情報を使用します。
Azure DocumentDB (ターゲット)
- Azure DocumentDB アカウントの資格情報を収集します。
- ユーザーが
createCollection、dropCollection、createIndex、insert、listCollectionsのアクセス許可を持っていることを確認します。
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 接続から移行拡張機能を呼び出すことができます。
展開された (接続されている) 接続を右クリックします。
コンテキスト メニューから [データ移行 ] を選択します。
コマンド パレットから [ Azure DocumentDB に移行 ] を選択します。
移行ウィザードを使用して、プロセスを進めます。
移行ジョブを作成する
移行ジョブは、コレクションのグループをソースから移行先の Azure DocumentDB に移行するために使用されます。 移行ジョブの作成ウィザードには、6 つの手順があります。
手順 1: ジョブを作成する
この手順では、ジョブの基本的な詳細を指定します。
ジョブ名: 移行ジョブを識別するためのわかりやすい名前を指定します。
移行モード: ユース ケースに最も適した移行モードを選択します。
- オンライン 移行ではコレクション データがコピーされ、プロセス中に更新プログラムも確実にレプリケートされます。 このメソッドは、ダウンタイムを最小限に抑え、ビジネス継続性のための継続的な運用を可能にするという利点があります。 進行中の操作が重要であり、ダウンタイムの削減が優先される場合は、このオプションを使用します。
- オフライン 移行では、最初にデータベースのスナップショットがキャプチャされ、よりシンプルで予測可能なアプローチが提供されます。 データベースの静的コピーを使用しても問題なく機能し、リアルタイムの更新は必須ではありません。
Important
MongoDB からのオンライン移行を確実に成功させるには、ソース MongoDB サーバーで ChangeStream を有効にする必要があります。 ChangeStream がないと、最初の移行後にデータに加えられた変更はキャプチャされません。 従って、オンライン移行モードは、ソース MongoDB サーバーで ChangeStream が有効になっている場合にのみ使用してください。
接続: 組織のセキュリティ要件とネットワークのセットアップに応じて、[ パブリック ] と [ プライベート] から選択します。
- ソース サーバーとターゲット サーバーがパブリック IP を介してインターネット上でアクセス可能な場合は、Public を使用します。 これにより、外部アクセシビリティを必要とするサービスのサポートが可能になります。
- ソース サーバーまたはターゲット サーバーが仮想ネットワーク内のプライベート IP 経由でのみアクセス できる場合は 、Private を使用します。 パブリック インターネットへの露出を排除することで、セキュリティを強化します。
[次へ] を選択して続行します。
手順 2: ターゲットを選択する
この手順では、既存の Azure DocumentDB アカウントを選択し、その接続文字列を指定します。
ドロップダウンからサブスクリプション、リソース グループ、Azure DocumentDB アカウントを選択します。
Azure DocumentDB アカウントに接続文字列を指定します。
画面に一覧表示されている IP が Azure DocumentDB ファイアウォールで許可されていることを確認します。
[次へ] を選択して続行します。
手順 3: データベース移行サービス (DMS) を選択する
Azure Database Migration Service は、ローカル リソースに依存するのではなく、データ転送にクラウド インフラストラクチャを使用して Azure データ プラットフォームとの間でデータを移行するサービスです。 ドロップダウンから既存の Azure Database Migration Service インスタンスを選択するか、[ DMS の作成 ] を選択して新しい移行サービスを作成します。
Important
Microsoft.DataMigration リソース プロバイダーがサブスクリプションに登録されていることを確認します。 必要なのは、サブスクリプションごとに 1 回だけです。
[次へ] を選択して続行します。
手順 4: 接続を構成する
この画面は、手順 1 で選択した接続モードによって異なります。
パブリック接続
パブリック接続では、移行ジョブはパブリック インターネットを使用してソースとターゲットに接続します。 通信を有効にするには、ソースファイアウォールとターゲットファイアウォールを更新する必要があります。 DMS サーバーからの通信を有効にするには、画面に一覧表示されている IP アドレスをソースファイアウォールとターゲット ファイアウォールに追加します。 詳細については、 Azure DocumentDB クラスター ファイアウォールの構成に関するページ を参照してください。
プライベート接続
プライベート接続では、移行ジョブは仮想ネットワーク内で実行されます。 仮想ネットワークと安全に通信するために、仮想ネットワーク ピアリングを使用します。
ドロップダウンからサブスクリプション、リソース グループ、仮想ネットワークを選択します。
画面に表示される PowerShell スクリプトを実行して、仮想ネットワーク統合を有効にします。
[次へ] を選択して続行します。
手順 5: コレクションを選択する
この手順では、移行ジョブに含めるコレクションを選択します。 指定された検索オプションを使用して、コレクションの一覧から選択します。 ターゲットに既に存在するコレクションは、[ターゲットに存在する] 列で自動的に [はい] とマークされます。
ヒント
移行ジョブの作成後にコレクションの一覧を追加できないため、含めるすべてのコレクションを選択してください。
[次へ] を選択して続行します。
手順 6: 確認して開始する
[ 移行の開始] を選択する前に、移行ジョブの詳細を確認します。 詳細を更新する必要がある場合は、[ 詳細の編集] ボタンを使用します。
移行ジョブが正常に作成されると、[ 既存のジョブの表示 ] ページに自動的にリダイレクトされます
ヒント
データ移行タスクは、Azure Database Migration Service で実行されます。 そのため、データ移行中にソース環境とターゲット環境に接続する必要はありません。 ダッシュボードの状態は、頻繁に更新されます。
既存の移行ジョブを監視する
[ 既存のジョブの表示 ] タブを使用して、初期化されたジョブの移行状態を監視します。 ジョブは、選択した DMS に基づいて一覧表示されます。 [ DMS の変更 ] ボタンを使用して選択内容を変更します。
状態は頻繁に自動的に更新されます。 選択したコレクション スナップショットがターゲットにコピーされると、オフライン ジョブは自動的に完了します。 ただし、オンライン移行は手動で切り替える必要があります。
コレクションごとの状態を表示するには、テーブルから行を選択します。
オンライン移行を監視する
オンライン移行は、オフライン移行とは異なり、自動的には完了しません。 代わりに、[カットオーバー] を選択して手動で確定するまで、継続して実行されます。
オンライン移行を完了するには、指定された順序で次の手順に従います。
すべてのコレクションの初期データ読み込みが完了すると、[ カットオーバー ] ボタンが有効になります。 この段階では、ジョブはレプリケーションフェーズにあり、ソースインスタンスからターゲットインスタンスに最新の変更を反映するために、更新を継続的にコピーしています。
移行のカットオーバーを実行する準備ができたら、移行するソース コレクションへのすべての受信トランザクションを停止します。
レプリケーションギャップには、最後の更新と現在の時刻の間の時間差が表示されます。
テーブル内のレプリケーションの変更を監視し、レプリケーション変更の反映メトリクスが安定するまで待ちます。 ソースからのすべての更新がターゲットに正常にコピーされたことを示すため、レプリケーション変更適用メトリックは安定している必要があります。
すべてのコレクションでレプリケーションのギャップが最小限で、レプリケーションの変更の再生メトリックが安定している場合は、[カットオーバー] を選択します。
ソース コレクションとターゲット コレクションの間で行数が同じであることを手動で検証します。
注
ソースとターゲットが同期されていることを検証せずにカットオーバー操作を実行すると、データが失われる可能性があります。
サブスクリプションに Microsoft.DataMigration リソース プロバイダーを登録する
Microsoft.DataMigration リソース プロバイダーがサブスクリプションに登録されていることを確認するには、次の手順に従います。
Azure portal
Azure portal にアクセスし、サブスクリプションに移動します。
左側のメニューで、[設定] で [リソース プロバイダー] を選択します。
上部の検索ボックスで 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 クライアントから実行されるコマンドを使用して、ウィザード UI に直接表示されます。 この機能には、VS Code を実行しているマシンと、ソース環境とターゲット環境の両方の間のネットワーク接続が必要です。
データ移行タスクは、 Azure Database Migration Service (DMS) によって実行されます。 DMS は、データ移動アクティビティを調整および管理する Azure でホストされるサービスです。 移行タスクが作成されたら、ソース環境とターゲット環境への接続を維持する必要がなくなりました。
移行中にデータベースとコレクションの名前を変更できますか?
この拡張機能は、移行中のデータベースとコレクションの名前変更をサポートしていません。
接続の問題を回避するためにソース サーバーファイアウォールを構成するにはどうすればよいですか?
必要なネットワーク構成は、選択した接続モードによって異なります。
- パブリック モード: 通信を有効にするには、ソース ファイアウォールとターゲット ファイアウォールの両方でウィザードに表示される IP アドレスを許可する必要があります。
- プライベート モード: DMS サーバーが 仮想ネットワーク 内のソースおよびターゲット エンドポイントと安全に通信できるように、仮想ネットワーク統合を有効にする必要があります。
VS Code の接続についても参照してください
1 回の移行で移行できるデータベースとコレクションの数はいくつですか?
1 回の移行には、最大 25 個のコレクションを含めることができます。 ただし、 複数の移行ジョブ を作成して実行して、他のコレクションを移行することはできます。
同時に実行できる移行ジョブの数はいくつですか?
パブリック アクセスを使用する場合は、複数の移行ジョブを実行できます。 ただし、 プライベート アクセスを使用する場合、1 つの仮想ネットワークで一度にサポートできる アクティブなジョブは 1 つだけです。 プライベート アクセスで複数のジョブを実行するには、ジョブごとに 異なる仮想ネットワーク を使用する必要があります。
拡張機能で生成されるログの種類は何ですか?
拡張機能は、エラー、警告、およびその他の診断ログを既定のログ ディレクトリに記録します。
-
ウィンドウズ -
C:\Users\<username>\.dmamongo\logs\ -
Linux -
~/.dmamongo/logs -
macOS -
/Users/<username>/.dmamongo/logs