チュートリアル: Azure Database Migration Service を使って、MongoDB を Azure Cosmos DB for MongoDB RU にオフラインで移行する
適用対象: MongoDB
重要
Azure Cosmos DB for MongoDB 仮想コアへの移行は、Azure Data Studio の MongoDB 移行拡張機能を使用して実行できます。 この拡張機能は、バックグラウンドで Azure Database Migration Service を活用します。 Azure Portal 上で Database Migration Service を使用して Azure Cosmos DB for MongoDB 仮想コアに移行することはできません。
この MongoDB 移行ガイドは、MongoDB の移行に関するシリーズの一部です。 MongoDB 移行の重要な手順は、次に示すように、移行前、移行、そして移行後です。
DMS を使用した MongoDB から Azure Cosmos DB へのオフライン データ移行の概要
Azure Database Migration Service を使って、MongoDB のオンプレミスまたはクラウドのインスタンスから Azure Cosmos DB for MongoDB に、データベースの 1 回限りの移行をオフラインで実行します。
このチュートリアルでは、以下の内容を学習します。
- Azure Database Migration Service のインスタンスを作成する。
- Azure Database Migration Service を使用して移行プロジェクトを作成する。
- 移行を実行する。
- 移行を監視する。
このチュートリアルでは、Azure 仮想マシンでホストされている MongoDB のデータセットを移行します。 Azure Database Migration Service を使って、データセットを Azure Cosmos DB for MongoDB に移行します。 MongoDB ソースをまだ設定していない場合は、「Azure の Windows VM に MongoDB をインストールして構成する」をご覧ください。
前提条件
このチュートリアルを完了するには、以下を実行する必要があります。
スループットの見積もりやパーティション キーの選択など、移行前の手順を完了します。
Azure Cosmos DB for MongoDB のアカウントを作成します。
注意
サーバーレス モードでプロビジョニングされた Azure Cosmos DB for MongoDB アカウントに移行する場合、DMS は現在サポートされていません。
Azure Resource Manager を使用して、Azure Database Migration Service 用の Microsoft Azure 仮想ネットワークを作成します。 このデプロイ モデルにより、ExpressRoute または VPN のどちらかを使用して、オンプレミスのソース サーバーへのサイト間接続が提供されます。 仮想ネットワークの作成方法の詳細については、Azure Virtual Network のドキュメントを参照してください。特に、詳細な手順が記載された "クイックスタート" の記事を参照してください。
仮想ネットワークのセットアップ中、Microsoft へのネットワーク ピアリングに ExpressRoute を使用する場合は、サービスのプロビジョニング先となるサブネットに、次のサービス エンドポイントを追加してください。
- ターゲット データベース エンドポイント (SQL エンドポイントや Azure Cosmos DB エンドポイントなど)
- ストレージ エンドポイント
- サービス バス エンドポイント
Azure Database Migration Service にはインターネット接続がないため、この構成が必要となります。
仮想ネットワークのネットワーク セキュリティ グループ (NSG) の規則によって、次の各通信ポートがブロックされていないことを確認します。53、443、445、9354、および 10000 から 20000。 詳細については、「ネットワーク セキュリティ グループによるネットワーク トラフィックのフィルタリング」を参照してください。
Azure Database Migration Service がソース MongoDB サーバーにアクセスできるように Windows ファイアウォールを開きます。既定では TCP ポート 27017 が使用されています。
ソース データベースの前でファイアウォール アプライアンスを使用している場合は、Azure Database Migration Service が移行のためにソース データベースにアクセスできるように、ファイアウォール規則の追加が必要になることがあります。
サーバー側の再試行機能を構成する
MongoDB から Azure Cosmos DB に移行する場合は、リソース ガバナンス機能を活用できます。 これらの機能により、プロビジョニング済み要求ユニット (RU/秒) のスループットを最大限に利用できるようになります。 Azure Cosmos DB では、Database Migration Service の特定の要求がコンテナーにプロビジョニングされている RU/秒を超える場合に、移行の過程でその要求を調整することができます。 その後、その要求を再試行する必要があります。
Database Migration Service では再試行を実行できます。 Database Migration Service と Azure Cosmos DB の間のネットワーク ホップに関係するラウンドトリップ時間が、その要求の全体的な応答時間に影響することを理解しておくことが重要です。 調整された要求の応答時間を改善することにより、移行に必要な合計時間を短縮できます。
Azure Cosmos DB のサーバー側の再試行機能を使用すると、サービスで調整エラー コードをインターセプトし、はるかに短いラウンドトリップ時間で再試行することができるため、要求の応答時間が大幅に短縮されます。
サーバー側の再試行を使用するには、Azure Cosmos DB ポータルで [機能]>[Server Side Retry](サーバー側の再試行) を選択します。
機能が無効になっている場合は、 [有効] を選択します。
リソース プロバイダーの登録
Database Migration Service の最初のインスタンスを作成する前に、Microsoft.DataMigration リソース プロバイダーを登録します。
Azure portal にサインインします。 サブスクリプションを検索して選択します。
Azure Database Migration Service のインスタンスを作成するサブスクリプションを選択してから、 [リソース プロバイダー] を選びます。
移行を検索してから、 [Microsoft.DataMigration] の [登録] を選択します。
インスタンスを作成する
Azure portal で [+ リソースの作成] を選択し、Azure Database Migration Service を検索して、ドロップダウン リストから [Azure Database Migration Service] を選択します。
[Azure Database Migration Service] 画面で、 [作成] を選択します。
[移行サービスの作成] で、サービスの名前、サブスクリプション、新規または既存のリソース グループを指定します。
Azure Database Migration Service のインスタンスを作成する場所を選択します。
既存の仮想ネットワークを選択するか、新しく作成します。
この仮想ネットワークによって、Azure Database Migration Service に、ソース MongoDB インスタンスとターゲット Azure Cosmos DB アカウントへのアクセスが提供されます。
Azure portal で仮想ネットワークを作成する方法の詳細については、Azure portal を使用した仮想ネットワークの作成に関するページを参照してください。
価格レベルを選択します。
コストと価格レベルの詳細については、価格に関するページを参照してください。
[作成] を選択して、サービスを作成します。
移行プロジェクトを作成する
サービスを作成したら、Azure portal 内でそのサービスを見つけて開きます。 次に、新しい移行プロジェクトを作成します。
Azure ポータルで、 [All services](すべてのサービス) を選択し、Azure Database Migration Service を検索して、Azure Database Migration Service を選択します。
[Azure Database Migration Services] 画面で、作成した Azure Database Migration Service インスタンスの名前を検索して選択します。
[+ New Migration Project](+ 新しい移行プロジェクト) を選択します。
[新しい移行プロジェクト] 画面で、プロジェクトの名前を指定し、 [ソース サーバーの種類] テキスト ボックスで [MongoDB] を選択します。 [ターゲット サーバーの種類] テキスト ボックスで [Azure Cosmos DB for NoSQL] を選び、[アクティビティの種類を選択します] で [オフライン データの移行] を選びます。
[アクティビティの作成と実行] を選択してプロジェクトを作成し、移行アクティビティを実行します。
ソース詳細を指定する
[ソースの詳細] 画面で、ソース MongoDB サーバーの接続の詳細を指定します。
重要
Azure Database Migration Service では、Azure Cosmos DB はソースとしてサポートしていません。
ソースへの接続には、3 つのモードがあります。
標準モード: 完全修飾ドメイン名または IP アドレス、ポート番号、および接続の資格情報を受け取ります。
接続文字列のモード: MongoDB 接続文字列を受け取ります。詳細については、「接続文字列の URI 形式」を参照してください。
Azure Storage からのデータ: BLOB コンテナーの SAS URL を受け取ります。 MongoDB bsondump ツールによって生成された BSON ダンプが BLOB コンテナーに含まれている場合は、 [Blob には BSON ダンプが含まれています] を選択します。 コンテナーに JSON ファイルが含まれている場合は、このオプションを選択しないでください。
このオプションを選択する場合は、ストレージ アカウントの接続文字列が次の形式で表示されていることを確認してください。
https://blobnameurl/container?SASKEY
この BLOB コンテナーの SAS 接続文字列は Azure Storage Explorer 内で見つけることができます。 該当するコンテナーの SAS を作成すると、要求された形式で URL が提供されます。
また、Azure Storage のダンプの種類情報に基づいて、次の点に注意してください。
BSON ダンプの場合、BLOB コンテナー内のデータは bsondump 形式にする必要があります。 データ ファイルは、包含データベースに基づいた名前が付けられたフォルダーに、collection.bson の形式で配置します。 メタデータ ファイルには collection.metadata.json の形式を使用して名前を付けます。
JSON ダンプの場合、BLOB コンテナー内のファイルは、包含データベースの名前が付けられたフォルダーに配置する必要があります。 データ ファイルは、各データベース フォルダー内の data というサブフォルダーに配置し、collection.json の形式で名前を付ける必要があります。 メタデータ ファイルは、metadata というサブフォルダーに配置し、同じ形式の collection.json を使用して名前を付ける必要があります。 メタデータ ファイルは、MongoDB bsondump ツールによって生成されたものと同じ形式にする必要があります。
重要
MongoDB サーバーでは、自己署名証明書の使用はお勧めしません。 使用する必要がある場合は、接続文字列のモードを使用してサーバーに接続し、接続文字列に必ず引用符 ("") を付けるようにしてください。
&sslVerifyCertificate=false
DNS 名を解決できない場合に備えて、IP アドレスを使用することもできます。
[保存] を選択します。
ターゲット詳細を指定する
[移行のターゲットの詳細] 画面で、ターゲットの Azure Cosmos DB アカウントに対する接続の詳細を指定します。 このアカウントは、事前プロビジョニングされた Azure Cosmos DB for MongoDB アカウントで、MongoDB データの移行先となります。
[保存] を選択します。
ターゲット データベースにマップする
[Map to target databases](ターゲット データベースにマップ) 画面で、移行用のソース データベースとターゲット データベースをマップします。
ターゲット データベースにソース データベースと同じデータベース名が含まれている場合、Azure Database Migration Service では、既定でターゲット データベースが選択されます。
データベース名の横に [作成] と表示される場合は、Azure Database Migration Service でターゲット データベースが見つからず、サービスによってデータベースが自動的に作成されることを示します。
以降のこの時点で、スループットをプロビジョニングすることができます。 Azure Cosmos DB では、データベース レベルで、またはコレクションごとに個別に、スループットをプロビジョニングできます。 スループットは、要求ユニットで測定されます。 Azure Cosmos DB の価格の詳細を確認してください。
[保存] を選択します。
[コレクション設定] 画面で、コレクションの一覧表示を展開し、移行されるコレクションの一覧を確認します。
Azure Database Migration Service では、ソースの MongoDB インスタンスに存在しているが、ターゲットの Azure Cosmos DB アカウントには存在していない、すべてのコレクションが自動的に選択されます。 データが既に含まれているコレクションを再度移行する場合は、このペインでコレクションを明示的に選択する必要があります。
コレクションで使用する RU の数を指定することができます。 Azure Database Migration Service では、コレクションのサイズに基づいて適切な既定値が提案されます。
Note
データベースの移行とコレクションを並列で実行します。 必要に応じて、Azure Database Migration Service の複数のインスタンスを使用して、実行速度を上げることができます。
また、最適なスケーラビリティのために、シャード キーを指定して Azure Cosmos DB のパーティション分割を利用することもできます。 シャードまたはパーティション キーの選択に関するベスト プラクティスを確認してください。
[保存] を選択します。
[Migration summary](移行の概要) 画面の [アクティビティ名] ボックスに移行アクティビティの名前を指定します。
移行を実行する
[移行の実行] を選択します。 移行アクティビティ ウィンドウが表示され、アクティビティの状態は [未開始] になっています。
移行を監視する
移行アクティビティ画面で、移行の状態が [完了] になるまで [最新の情報に更新] を選択して表示を更新します。
Note
アクティビティを選択して、データベースレベルおよびコレクションレベルの移行メトリックの詳細を取得できます。
Azure Cosmos DB 内のデータを検証する
移行が完了した後、Azure Cosmos DB アカウントを調べて、すべてのコレクションが正常に移行されたことを確認できます。
移行後の最適化
MongoDB データベースの格納データを Azure Cosmos DB for MongoDB に移行したら、Azure Cosmos DB に接続してデータを管理できます。 また、移行後のその他の最適化手順を実行することもできます。 これには、インデックス作成ポリシーの最適化、既定の整合性レベルの更新、Azure Cosmos DB アカウントのグローバル分散の構成などが含まれます。 詳細については、移行後の最適化に関するページをご覧ください。
その他のリソース
Azure Cosmos DB への移行のための容量計画を実行しようとしていますか?
- 既存のデータベース クラスター内の仮想コアとサーバーの数のみがわかっている場合は、仮想コアまたは vCPU を使用した要求ユニットの見積もりに関するページを参照してください
- 現在のデータベース ワークロードに対する通常の要求レートがわかっている場合は、Azure Cosmos DB Capacity Planner を使用した要求ユニットの見積もりに関するページを参照してください