チュートリアル: MongoDB を Azure Cosmos DB の MongoDB 用 API にオフラインで移行する

適用対象: MongoDB 用 Azure Cosmos DB API

重要

移行手順を実行する前に、このガイド全体をお読みください。

この MongoDB 移行ガイドは、MongoDB の移行に関するシリーズの一部です。 MongoDB 移行の重要な手順は、次に示すように、移行前、移行、そして移行後です。

移行手順の図。

DMS を使用した MongoDB から Azure Cosmos DB へのオフライン データ移行の概要

Azure Database Migration Service を使用して、MongoDB のオンプレミスまたはクラウドのインスタンスから Azure Cosmos DB の MongoDB 用 API に、データベースの 1 回限りの移行をオフラインで実行します。

このチュートリアルでは、以下の内容を学習します。

  • Azure Database Migration Service のインスタンスを作成する。
  • Azure Database Migration Service を使用して移行プロジェクトを作成する。
  • 移行を実行する。
  • 移行を監視する。

このチュートリアルでは、Azure 仮想マシンでホストされている MongoDB のデータセットを移行します。 Azure Database Migration Service を使用して、データセットを Azure Cosmos DB の MongoDB 用 API に移行します。 MongoDB ソースをまだ設定していない場合は、「Azure の Windows VM に MongoDB をインストールして構成する」をご覧ください。

前提条件

このチュートリアルを完了するには、以下を実行する必要があります。

  • スループットの見積もりやパーティション キーの選択など、移行前の手順を完了します。

  • Azure Cosmos DB の MongoDB 用 API アカウントを作成します

  • 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](サーバー側の再試行) を選択します。

サーバー側の再試行機能を見つける場所を示すスクリーンショット。

機能が無効になっている場合は、 [有効] を選択します。

サーバー側の再試行を有効にする方法を示すスクリーンショット。

リソース プロバイダーの登録

  1. Azure portal にサインインし、 [すべてのサービス] を選択し、 [サブスクリプション] を選択します。

    ポータルのサブスクリプションを示すスクリーンショット。

  2. Azure Database Migration Service のインスタンスを作成するサブスクリプションを選択してから、 [リソース プロバイダー] を選びます。

    リソース プロバイダーを示すスクリーンショット。

  3. 移行を検索し、Microsoft.DataMigration の右側にある [登録] を選択します。

    リソース プロバイダーの登録方法を示すスクリーンショット。

インスタンスを作成する

  1. Azure portal で [+ リソースの作成] を選択し、Azure Database Migration Service を検索して、ドロップダウン リストから [Azure Database Migration Service] を選択します。

    Azure Marketplace を示すスクリーンショット。

  2. [Azure Database Migration Service] 画面で、 [作成] を選択します。

    Azure Database Migration Service のインスタンスを作成する方法を示すスクリーンショット。

  3. [移行サービスの作成] で、サービスの名前、サブスクリプション、新規または既存のリソース グループを指定します。

  4. Azure Database Migration Service のインスタンスを作成する場所を選択します。

  5. 既存の仮想ネットワークを選択するか、新しく作成します。

    この仮想ネットワークによって、Azure Database Migration Service に、ソース MongoDB インスタンスとターゲット Azure Cosmos DB アカウントへのアクセスが提供されます。

    Azure portal で仮想ネットワークを作成する方法の詳細については、Azure portal を使用した仮想ネットワークの作成に関するページを参照してください。

  6. 価格レベルを選択します。

    コストと価格レベルの詳細については、価格に関するページを参照してください。

    Azure Database Migration Service のインスタンスの構成設定を示すスクリーンショット。

  7. [作成] を選択して、サービスを作成します。

移行プロジェクトを作成する

サービスを作成したら、Azure portal 内でそのサービスを見つけて開きます。 次に、新しい移行プロジェクトを作成します。

  1. Azure ポータルで、 [All services](すべてのサービス) を選択し、Azure Database Migration Service を検索して、Azure Database Migration Service を選択します。

    Azure Database Migration Service のすべてのインスタンスを検索する方法を示すスクリーンショット。

  2. [Azure Database Migration Services] 画面で、作成した Azure Database Migration Service インスタンスの名前を検索して選択します。

  3. [+ New Migration Project](+ 新しい移行プロジェクト) を選択します。

  4. [新しい移行プロジェクト] 画面で、プロジェクトの名前を指定し、 [ソース サーバーの種類] テキスト ボックスで [MongoDB] を選択します。 [ターゲット サーバーの種類] テキスト ボックスで [CosmosDB (MongoDB API)] を選択し、 [アクティビティの種類を選択します][オフライン データの移行] を選択します。

    プロジェクトのオプションを示すスクリーンショット。

  5. [アクティビティの作成と実行] を選択してプロジェクトを作成し、移行アクティビティを実行します。

ソース詳細を指定する

  1. [ソースの詳細] 画面で、ソース 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 アドレスを使用することもできます。

    ソースの詳細を指定する方法を示すスクリーンショット。

  2. [保存] を選択します。

ターゲット詳細を指定する

  1. [移行のターゲットの詳細] 画面で、ターゲットの Azure Cosmos DB アカウントに対する接続の詳細を指定します。 このアカウントは、事前プロビジョニングされた Azure Cosmos DB の MongoDB 用 API アカウントで、MongoDB データの移行先となります。

    ターゲットの詳細を指定する方法を示すスクリーンショット。

  2. [保存] を選択します。

ターゲット データベースにマップする

  1. [Map to target databases](ターゲット データベースにマップ) 画面で、移行用のソース データベースとターゲット データベースをマップします。

    ターゲット データベースにソース データベースと同じデータベース名が含まれている場合、Azure Database Migration Service では、既定でターゲット データベースが選択されます。

    データベース名の横に [作成] と表示される場合は、Azure Database Migration Service でターゲット データベースが見つからず、サービスによってデータベースが自動的に作成されることを示します。

    以降のこの時点で、スループットをプロビジョニングすることができます。 Azure Cosmos DB では、データベース レベルで、またはコレクションごとに個別に、スループットをプロビジョニングできます。 スループットは、要求ユニットで測定されます。 Azure Cosmos DB の価格の詳細を確認してください。

    ターゲット データベースにマッピングする方法を示すスクリーンショット。

  2. [保存] を選択します。

  3. [コレクション設定] 画面で、コレクションの一覧表示を展開し、移行されるコレクションの一覧を確認します。

    Azure Database Migration Service では、ソースの MongoDB インスタンスに存在しているが、ターゲットの Azure Cosmos DB アカウントには存在していない、すべてのコレクションが自動的に選択されます。 データが既に含まれているコレクションを再度移行する場合は、このペインでコレクションを明示的に選択する必要があります。

    コレクションで使用する RU の数を指定することができます。 Azure Database Migration Service では、コレクションのサイズに基づいて適切な既定値が提案されます。

    注意

    データベースの移行とコレクションを並列で実行します。 必要に応じて、Azure Database Migration Service の複数のインスタンスを使用して、実行速度を上げることができます。

    また、最適なスケーラビリティのために、シャード キーを指定して Azure Cosmos DB のパーティション分割を利用することもできます。 シャードまたはパーティション キーの選択に関するベスト プラクティスを確認してください。

    コレクション テーブルの選択方法を示すスクリーンショット。

  4. [保存] を選択します。

  5. [Migration summary](移行の概要) 画面の [アクティビティ名] ボックスに移行アクティビティの名前を指定します。

    移行の概要を示すスクリーンショット。

移行を実行する

[移行の実行] を選択します。 移行アクティビティ ウィンドウが表示され、アクティビティの状態は [未開始] になっています。

アクティビティの状態を示すスクリーンショット。

移行を監視する

移行アクティビティ画面で、移行の状態が [完了] になるまで [最新の情報に更新] を選択して表示を更新します。

注意

アクティビティを選択して、データベースレベルおよびコレクションレベルの移行メトリックの詳細を取得できます。

アクティビティが完了した状態を示すスクリーンショット。

Azure Cosmos DB 内のデータを検証する

移行が完了した後、Azure Cosmos DB アカウントを調べて、すべてのコレクションが正常に移行されたことを確認できます。

すべてのコレクションが正常に移行されたことを確認するために、Azure Cosmos DB アカウントを確認する場所を示すスクリーンショット。

移行後の最適化

MongoDB データベースの格納データを Azure Cosmos DB の MongoDB 用 API に移行したら、Azure Cosmos DB に接続してデータを管理できます。 また、移行後のその他の最適化手順を実行することもできます。 これには、インデックス作成ポリシーの最適化、既定の整合性レベルの更新、Azure Cosmos DB アカウントのグローバル分散の構成などが含まれます。 詳細については、移行後の最適化に関するページをご覧ください。

次のステップ

Azure データベースの移行ガイド」で、他のシナリオの移行ガイダンスを確認する。