Share via


教學課程:使用 MongoDB 原生工具,離線將 MongoDB 遷移至適用於 MongoDB 的 Azure Cosmos DB API (部分機器翻譯)

適用於: MongoDB

重要

請先閱讀本指南,然後再執行您的移轉步驟。

此 MongoDB 移轉指南是 MongoDB 移轉系列的一部分。 重要的 MongoDB 移轉步驟分為移轉前、移轉和移轉後,如下所示。

Diagram of migration steps.

使用 MongoDB 原生工具進行資料移轉的概觀

您可以使用 MongoDB 原生工具,在離線狀態下將資料庫從內部部署或雲端的 MongoDB 執行個體 (單次) 移轉至 Azure Cosmos DB 的 MongoDB 版 API。

在本教學課程中,您會了解如何:

  • 為您的使用案例選擇適當的 MongoDB 原生工具
  • 執行移轉。
  • 監視移轉。
  • 確認移轉成功。

在本教學課程中,您會使用 MongoDB 原生工具,從裝載在 Azure 虛擬機器的 MongoDB 中,將資料集移轉至 Azure Cosmos DB 的 MongoDB 版 API。 MongoDB 原生工具是一組二進位檔,可協助您在現有的 MongoDB 執行個體上進行資料操作。 由於 Azure Cosmos DB 會公開 API for MongoDB,因此 MongoDB 原生工具可以將資料插入 Azure Cosmos DB。 本文件的重點在於使用 mongoexport/mongoimportmongodump/mongorestore,將資料從 MongoDB 執行個體中向外移轉。 由於原生工具會使用連接字串連線到 MongoDB,所以您可以在任何位置執行這些工具,但建議您在與 MongoDB 執行個體相同的網路內執行這些工具,以避免發生防火牆問題。

MongoDB 原生工具只會在主機硬體允許的情況之下移動資料;原生工具是小型資料集最簡單的解決方案,因為不需要考慮總移轉時間。 如果您需要可調整的移轉流程,MongoDB Spark 連接器Azure 資料移轉服務 (DMS)Azure Data Factory (ADF) 都是更好的替代方案。

如果您尚未設定 MongoDB 來源,請參閱在 Azure 中的 Windows VM 上安裝及設定 MongoDB 一文。

必要條件

若要完成本教學課程,您需要:

  • 完成移轉前步驟,例如估計輸送量、選擇分割索引鍵和索引編製原則。
  • 建立 Azure Cosmos DB for MongoDB 帳戶
  • 登入您的 MongoDB 執行個體
    • 從此連結下載並安裝 MongoDB 原生工具
      • 確定您的 MongoDB 原生工具版本符合現有的 MongoDB 執行個體。
      • 如果 MongoDB 執行個體的版本與 Azure Cosmos DB for MongoDB 不同,請同時安裝 MongoDB 原生工具版本,並分別使用適用於 MongoDB 和 Azure Cosmos DB for MongoDB 的適當工具版本。
    • 新增具有 readWrite 權限的使用者 (除非已有權限)。 稍後在本教學課程中,請提供此使用者名稱/密碼給 mongoexportmongodump 工具。

設定 Azure Cosmos DB 伺服器端重試

從 MongoDB 移轉至 Azure Cosmos DB 的客戶可享有資源治理功能,以保證充分利用您佈建的輸送量 (RU/秒)。 如果移轉期間的特定要求超過容器佈建的 RU/秒,Azure Cosmos DB 可能會對該要求進行節流,此時就需要重試該要求。 移轉工具和 Azure Cosmos DB 之間網路躍點所涉及的往返時間會影響該要求的整體回應時間;而且,MongoDB 原生工具可能不會處理重試作業。 Azure Cosmos DB 的伺服器端重試功能可讓服務攔截節流錯誤碼,並以較低的往返時間重試,可大幅改善要求的回應時間。 從 MongoDB 原生工具的觀點來看,處理重試的需求會降到最低,這會對您的移轉體驗產生正面影響。

您可以在 Azure Cosmos DB 入口網站的 [功能] 分頁中找到伺服器端重試功能

Screenshot of MongoDB SSR feature.

如果已停用,建議您將其啟用,如下所示

Screenshot of MongoDB SSR enable.

選擇適當的 MongoDB 原生工具

Diagram of selecting the best MongoDB native tool.

  • mongoexport/mongoimport 是一組最適合用來移轉 MongoDB 資料庫子集的移轉工具。
    • mongoexport 會將您現有的資料匯出至人們可讀取的 JSON 或 CSV 檔案。 mongoexport 會採用引數,以指定要匯出的現有資料子集。
    • mongoimport 會開啟 JSON 或 CSV 檔案,並將內容插入目標資料庫執行個體 (在此案例中為 Azure Cosmos DB)。
    • 請注意,JSON 和 CSV 並非壓縮格式;當 mongoimport 將資料傳送至 Azure Cosmos DB 時,您可能會產生額外的網路費用。
  • mongodump/mongorestore 是一組最適合用來移轉整個 MongoDB 資料庫的移轉工具。 將資料插入 Azure Cosmos DB 時,壓縮的 BSON 格式可讓網路資源的使用更有效率。
    • mongodump 會將您現有的資料匯出為 BSON 檔案。
    • mongorestore 會將您的 BSON 檔案傾印匯入 Azure Cosmos DB。
  • 除此之外,如果您只是想要將小型 JSON 檔案匯入 Azure Cosmos DB for MongoDB,mongoimport 工具是內嵌資料的快速解決方案。

收集 Azure Cosmos DB for MongoDB 認證

Azure Cosmos DB for MongoDB 提供 MongoDB 原生工具可利用的相容存取認證。 您必須可取得這些存取認證,才能將資料移轉至 Azure Cosmos DB for MongoDB。 若要尋找這些認證:

  1. 開啟 Azure 入口網站

  2. 導覽至您的 Azure Cosmos DB for MongoDB 帳戶

  3. 在左側導覽列中,選取 [連接字串] 分頁,您應該會看到類似下面的畫面:

    Screenshot of Azure Cosmos DB credentials.

    • 主機 - 作為 MongoDB 主機名稱使用的 Azure Cosmos DB 端點
    • 連接埠 - 當 MongoDB 原生工具連線到 Azure Cosmos DB 時,您必須明確指定此連接埠
    • 使用者名稱 - 作為 MongoDB 使用者名稱使用的 Azure Cosmos DB 端點網域名稱的前置詞
    • 密碼 - 作為 MongoDB 密碼使用的 Azure Cosmos DB 主要金鑰
    • 此外,請注意 SSL 欄位是 true,也就是 MongoDB 原生工具在將資料寫入 Azure Cosmos DB 時必須啟用 SSL

執行移轉。

  1. 選擇您想要移轉的資料庫和集合。 在此範例中,我們會將 edx 資料庫中的查詢集合從 MongoDB 移轉至 Azure Cosmos DB。

本節的其餘部分將引導您使用上一節中選取的工具組。

mongoexport/mongoimport

  1. 若要從來源 MongoDB 執行個體匯出資料,請在 MongoDB 執行個體機器上開啟終端。 如果是 Linux 機器,請輸入

    mongoexport --host HOST:PORT --authenticationDatabase admin -u USERNAME -p PASSWORD --db edx --collection query --out edx.json
    

    在 Windows 上,可執行檔將會是 mongoexport.exe主機連接埠使用者名稱密碼應該根據現有 MongoDB 資料庫執行個體的屬性填入。

    您也可以選擇只匯出 MongoDB 資料集的子集。 這麼做的其中一個方法是新增額外的篩選引數:

    mongoexport --host HOST:PORT --authenticationDatabase admin -u USERNAME -p PASSWORD --db edx --collection query --out edx.json --query '{"field1":"value1"}'
    

    只有符合篩選準則 {"field1":"value1"} 的文件會匯出。

    執行呼叫之後,您應該會看到產生的 edx.json 檔案:

    Screenshot of mongoexport call.

  2. 您可以使用相同的終端將 edx.json 匯入 Azure Cosmos DB。 如果您在 Linux 機器上執行 mongoimport,請輸入

    mongoimport --host HOST:PORT -u USERNAME -p PASSWORD --db edx --collection importedQuery --ssl --type json --writeConcern="{w:0}" --file edx.json
    

    在 Windows 上,可執行檔將會是 mongoimport.exe主機連接埠使用者名稱密碼應該根據您稍早收集的 Azure Cosmos DB 認證來填入。

  3. 監視來自 mongoimport 的終端輸出。 您應該會看到其將文字行列印至終端機,其中包含移轉狀態的更新:

    Screenshot of mongoimport call.

  4. 最後,檢查 Azure Cosmos DB 以驗證移轉是否成功。 開啟 Azure Cosmos DB 入口網站,然後瀏覽至資料總管。 您應該會看到 (1) 已建立具有 importedQuery 集合的 edx 資料庫,以及 (2) 如果您只匯出資料的子集,則 importedQuery會包含符合所需資料子集的文件。 在下列範例中,只有一個文件符合篩選條件 {"field1":"value1"}

    Screenshot of Azure Cosmos DB data verification.

mongodump/mongorestore

  1. 若要建立 MongoDB 執行個體的 BSON 資料傾印,請在 MongoDB 執行個體機器上開啟終端。 如果是 Linux 機器,請輸入

    mongodump --host HOST:PORT --authenticationDatabase admin -u USERNAME -p PASSWORD --db edx --collection query --ssl --out edx-dump
    

    主機連接埠使用者名稱密碼應該根據現有 MongoDB 資料庫執行個體的屬性填入。 您應該會看到產生的 edx-dump 目錄,而 edx-dump 的目錄結構會重現來源 MongoDB 執行個體的資源階層 (資料庫和集合結構)。 每個集合都以 BSON 檔案表示:

    Screenshot of mongodump call.

  2. 您可以使用相同的終端,將 edx-dump 的內容還原至 Azure Cosmos DB。 如果您在 Linux 機器上執行 mongorestore,請輸入

    mongorestore --host HOST:PORT --authenticationDatabase admin -u USERNAME -p PASSWORD --db edx --collection importedQuery --writeConcern="{w:0}" --ssl edx-dump/edx/query.bson
    

    在 Windows 上,可執行檔將會是 mongorestore.exe主機連接埠使用者名稱密碼應該根據您稍早收集的 Azure Cosmos DB 認證來填入。

  3. 監視來自 mongorestore 的終端輸出。 您應該會看到其將幾行文字列印到終端以更新移轉狀態:

    Screenshot of mongorestore call.

  4. 最後,檢查 Azure Cosmos DB 以驗證移轉是否成功。 開啟 Azure Cosmos DB 入口網站,然後瀏覽至資料總管。 您應該會看到 (1) 已建立具有 importedQuery 集合的 edx 資料庫,以及 (2) importedQuery 應該包含來源集合中的整個資料集:

    Screenshot of verifying Azure Cosmos DB mongorestore data.

移轉後最佳化

將 MongoDB 資料庫中儲存的資料遷移至 Azure Cosmos DB 的 MongoDB 版 API 之後,您就可以連線到 Azure Cosmos DB 並管理這些資料。 您也可以執行其他的移轉後最佳化步驟,例如將索引編製原則最佳化、更新預設的一致性層級或設定 Azure Cosmos DB 帳戶的全域散發。 如需詳細資訊,請參閱移轉後最佳化一文。

其他資源

下一步