教學課程:使用 Azure 資料庫移轉服務在線上狀態下將 MongoDB 移轉至 Azure Cosmos DB for MongoDB RU

適用於: MongoDB

重要

請先閱讀本指南,然後再執行您的移轉步驟。 Azure 資料庫移轉服務目前不支援移轉至 Azure Cosmos DB for MongoDB 虛擬核心帳戶。

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

Diagram of migration steps.

概述使用 DMS 在線上狀態下將資料從 MongoDB 移轉至 Azure Cosmos DB

您可以使用 Azure 資料庫移轉服務,在線上狀態下 (以最短的停機時間) 將資料庫從內部部署或雲端的 MongoDB 執行個體移轉至 Azure Cosmos DB for MongoDB。

本教學課程示範與「使用 Azure 資料庫移轉服務將 MongoDB 資料遷移至 Azure Cosmos DB」相關聯的步驟:

  • 建立 Azure 資料庫移轉服務的執行個體。
  • 建立移轉專案。
  • 指定來源。
  • 指定目標。
  • 對應至目標資料庫]。
  • 執行移轉。
  • 監視移轉。
  • 確認 Azure Cosmos DB 中的資料。
  • 在您準備就緒後完成移轉。

在本教學課程中,您會透過 Azure 資料庫移轉服務,以最短的停機時間,將資料集從Azure 虛擬機器上裝載的 MongoDB 移轉至 Azure Cosmos DB for MongoDB。 如果您尚未設定 MongoDB 來源,請參閱在 Azure 中的 Windows VM 上安裝及設定 MongoDB

注意

若要使用「Azure 資料庫移轉服務」來執行線上移轉,必須根據「進階」定價層建立執行個體。

重要

為了獲得最佳的移轉體驗,Microsoft 建議在目標資料庫所在的同一個 Azure 區域中,建立 Azure 資料庫移轉服務的執行個體。 跨區域或地理位置移動資料可能使移轉程序變慢。

提示

在 Azure Database Migration Service 中,您可在離線或線上時移轉資料庫。 在離線移轉中,當移轉開始時,應用程式即會開始停機。 若要將停機限制於在移轉後完全移轉至新環境所需的時間,請使用線上移轉。 建議您測試離線移轉,以決定停機是否在可接受範圍。 如果無法接受預期的停機,則請執行線上移轉。

本文說明如何在線上狀態下從 MongoDB 移轉至 Azure Cosmos DB for MongoDB。 如需離線移轉的相關資訊,請參閱使用 DMS 在離線狀態下將 MongoDB 移轉至 Azure Cosmos DB for MongoDB

必要條件

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

  • 完成移轉前步驟,例如估計輸送量、選擇分割索引鍵和索引編製原則。

  • 建立 Azure Cosmos DB for MongoDB 帳戶,並確定已啟用 SSR (伺服器端重試)

    注意

    若是要移轉至使用無伺服器模式佈建的 Azure Cosmos DB for MongoDB 帳戶,目前不支援使用 DMS。

  • 使用 Azure Resource Manager 部署模型建立 Azure 資料庫移轉服務的 Microsoft Azure 虛擬網路,以使用 ExpressRouteVPN 為您的內部部署來源伺服器提供站對站連線能力。

    注意

    在虛擬網路設定期間,如果您使用 ExpressRoute 搭配與 Microsoft 對等互連的網路,請將下列服務端點新增至將佈建服務的子網路:

    • 目標資料庫端點 (例如,SQL 端點、Azure Cosmos DB 端點等)
    • 儲存體端點
    • 服務匯流排端點

    此為必要設定,因為 Azure 資料庫移轉服務沒有網際網路連線。

  • 確定虛擬網路的網路安全性群組 (NSG) 規則不會封鎖下列通訊連接埠:53、443、445、9354 和 10000-20000。 如需虛擬網路 NSG 流量篩選的詳細資訊,請參閱<使用網路安全性群組來篩選網路流量>(機器翻譯) 一文。

  • 開啟您的 Windows 防火牆以允許 Azure 資料庫移轉服務存取來源 MongoDB 伺服器 (依預設會使用 TCP 連接埠 27017)。

  • 使用來源資料庫前面的防火牆設備時,您可能必須新增防火牆規則,才能讓 Azure 資料庫移轉服務存取來源資料庫,以進行移轉。

設定 Azure Cosmos DB 伺服器端重試以便進行有效率的移轉

從 MongoDB 移轉至 Azure Cosmos DB 的客戶可享有資源治理功能,以保證充分利用您佈建的輸送量 (RU/秒)。 如果特定的資料移轉服務要求超過容器所佈建的 RU/秒,則 Azure Cosmos DB 可能會在移轉期間對該要求進行節流,此時就需要重試該要求。 資料移轉服務能夠執行重試,但是資料移轉服務和 Azure Cosmos DB 之間網路躍點所涉及的往返時間會影響該要求的整體回應時間。 改善節流要求的回應時間可以縮短移轉所需的總時間。 Azure Cosmos DB 的伺服器端重試功能可讓服務攔截節流錯誤碼,並以較低的往返時間重試,可大幅改善要求的回應時間。

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

Screenshot of MongoDB Server-Side Retry feature.

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

Screenshot of MongoDB Server-Side Retry enable.

註冊資源提供者

您必須在建立第一個資料庫移轉服務執行個體之前,註冊 Microsoft.DataMigration 資源提供者。

  1. 登入 Azure 入口網站。 搜尋並選取訂閱

    Show portal subscriptions

  2. 選取您要在其中建立 Azure 資料庫移轉服務執行個體的訂用帳戶,然後選取 [資源提供者]

    Show resource providers

  3. 搜尋移轉,然後針對 [Microsoft.DataMigration] 選取 [註冊]

    Register resource provider

建立執行個體

  1. 在 Azure 入口網站中,選取 [+ 建立資源],搜尋「Azure 資料庫移轉服務」,然後從下拉式清單選取 [Azure 資料庫移轉服務]

    Azure Marketplace

  2. 在 [Azure 資料庫移轉服務] 畫面上,選取 [建立]

    Create Azure Database Migration Service instance

  3. [建立移轉服務] 畫面上,指定服務的名稱、訂用帳戶,以及新的或現有的資源群組。

  4. 選取您要在其中建立 Azure 資料庫移轉服務執行個體的位置。

  5. 選取現有的虛擬網路或建立新的虛擬網路。

    虛擬網路會為 Azure 資料庫移轉服務提供來源 MongoDB 執行個體和目標 Azure Cosmos DB 帳戶的存取權。

    如需如何在 Azure 入口網站中建立虛擬網路的詳細資訊,請參閱使用 Azure 入口網站建立虛擬網路一文。

  6. 從「進階」定價層選取 SKU。

    注意

    只有在使用「進階」層的情況下,才支援線上移轉。 如需成本和定價層的詳細資訊,請參閱定價分頁

    Configure Azure Database Migration Service instance settings

  7. 選取 [建立] 以建立服務。

建立移轉專案

建立服務之後,請在 Azure 入口網站中找出該服務,然後建立新的移轉專案。

  1. 在 Azure 入口網站中,選取 [所有服務],搜尋 Azure 資料庫移轉服務,然後選取 [Azure 資料庫移轉服務]

    Locate all instances of Azure Database Migration Service

  2. 在 [Azure 資料庫移轉服務] 畫面上,搜尋您建立的 Azure 資料庫移轉服務執行個體名稱,然後選取該執行個體。

    或者,您可以從 Azure 入口網站中的搜尋窗格探索 Azure 資料庫移轉服務執行個體。

    Use the Search pane in the Azure portal

  3. 選取 [+ 新增移轉專案]

  4. 在 [新增移轉專案] 畫面上指定專案名稱,在 [來源伺服器類型] 文字方塊中選取 [MongoDB],在 [目標伺服器類型] 文字方塊中選取 [Azure Cosmos DB for MongoDB],然後在 [選擇活動類型] 選取 [線上資料移轉 [預覽]]

    Create Database Migration Service project

  5. 選取 [儲存],然後選取 [建立及執行活動],以建立專案並執行移轉活動。

指定來源詳細資料

  1. 在 [來源詳細資料] 畫面上,指定來源 MongoDB 伺服器的連線詳細資料。

    重要

    Azure 資料庫移轉服務不支援以 Azure Cosmos DB 作為來源。

    有三種模式可連線至來源:

    • 標準模式,可接受完整網域名稱或 IP 位址、連接埠號碼和連線認證。

    • 連接字串模式,可接受連接字串 URI 格式一文中說明的 MongoDB 連接字串。

    • 來自 Azure 儲存體的資料,可接受 Blob 容器 SAS URL。 如果 Blob 容器含有 MongoDB bsondump 工具所產生的 BSON 傾印,請選取 [Blob 包含 BSON 傾印],如果容器包含 JSON 檔案,則將其取消選取。

      如果您選取此選項,請確定儲存體帳戶連接字串以下列格式顯示:

      https://blobnameurl/container?SASKEY
      

      此外,根據 Azure 儲存體中的類型傾印資訊,請留意下列詳細資料。

      • 就 BSON 傾印而言,Blob 容器內的資料必須採用 bsondump 格式,使資料檔案以 collection.bson 的格式放入依所屬資料庫命名的資料夾中。 中繼資料檔案 (如果有的話) 則應使用 collection.metadata.json 的格式命名。

      • 就 JSON 傾印而言,Blob 容器中的檔案必須放入依所屬資料庫命名的資料夾中。 在每個資料庫資料夾中,資料檔案必須放在名為「資料」的子資料夾中,並使用 collection.json 的格式命名。 中繼資料檔案 (如果有的話) 必須放在名為「中繼資料」的子資料夾中,並使用相同的格式 collection.json 命名。 中繼資料檔案必須採用 MongoDB bsondump 工具所產生的相同格式。

    重要

    不建議在 MongoDB 伺服器上使用自我簽署憑證。 不過,若已使用,請使用連接字串模式連線到伺服器,並確保您的連接字串具有 “”

    &sslVerifyCertificate=false
    

    如果無法解析 DNS 名稱,您可以使用 IP 位址。

    Specify source details

  2. 選取 [儲存]

    注意

    如果來源是複本集,則來源伺服器位址應為主要伺服器的位址;如果來源是分區化 MongoDB 叢集,則應為路由器的位址。 如果是分區化 MongoDB 叢集,則 Azure 資料庫移轉服務必須能夠連線至叢集中的個別分區,而這可能需要在更多機器上開啟防火牆。

指定目標詳細資料

  1. 在 [移轉目標詳細資料] 畫面上,指定目標 Azure Cosmos DB 帳戶的連線詳細資料,也就是您要將 MongoDB 資料移轉至預先佈建 Azure Cosmos DB 所在的 MongoDB 帳戶。

    Specify target details

  2. 選取 [儲存]。

對應到目標資料庫

  1. 在 [Map to target databases] \(對應到目標資料庫\) 畫面上,對應要進行移轉的來源資料庫和目標資料庫。

    如果目標資料庫包含與來源資料庫相同的資料庫名稱,Azure 資料庫移轉服務依預設會選取目標資料庫。

    如果字串 Create 出現在資料庫名稱旁邊,則代表 Azure 資料庫移轉服務未找到目標資料庫,且服務會為您建立該資料庫。

    在這個移轉階段,如果您想要在資料庫上共用輸送量,請指定輸送量 RU。 在 Cosmos DB 中,您可以在資料庫層級或個別針對每個集合佈建輸送量。 輸送量會以要求單位 (RU) 來測量。 深入了解 Azure Cosmos DB 定價

    Map to target databases

  2. 選取 [儲存]。

  3. 在 [集合設定] 畫面上,展開集合清單,然後檢閱要遷移的集合清單。

    Azure 資料庫移轉服務會自動選取所有存在於來源 MongoDB 執行個體上,卻不存在於目標 Azure Cosmos DB 帳戶上的集合。 如果您想要重新移轉已包含資料的集合,就必須在此畫面上明確地選取集合。

    您可以指定要讓集合使用的 RU 數目。 在大部分情況下,500 (分區化集合的最小值為 1000) 到 4000 之間的值即應足夠。 Azure 資料庫移轉服務會根據集合大小來建議智慧的預設值。

    注意

    如有必要,可使用多個 Azure 資料庫移轉服務執行個體來平行執行資料庫移轉及集合,以加快執行速度。

    您也可以指定分區索引鍵以便利用 Azure Cosmos DB 中的資料分割,從而獲得最佳延展性。 請務必檢閱選取分區/分割區索引鍵的最佳做法。 如果您沒有分割區索引鍵,您一律可以使用 _id 作為分區索引鍵,以達到更理想的輸送量。

    Select collections tables

  4. 選取 [儲存]。

  5. [移轉摘要] 畫面上的 [活動名稱] 文字方塊中,指定移轉活動的名稱。

    Migration summary

執行移轉

  • 選取 [執行移轉]

    [移轉活動] 視窗隨即出現,並顯示活動的 [狀態]

    Activity status

監視移轉

  • 在移轉活動畫面上選取 [重新整理] 以更新顯示,直到移轉的 [狀態] 顯示為 [正在重新執行] 為止。

    注意

    您可以選取活動來取得資料庫層級和集合層級移轉計量的詳細資料。

    Activity status replaying

確認 Azure Cosmos DB 中的資料

  1. 對來源 MongoDB 資料庫進行變更。

  2. 連線至 Azure Cosmos DB 以確認資料是否複寫自來源 MongoDB 伺服器。

    Screenshot that shows where you can verify that the data was replicated.

完成移轉

  • 當來源中的所有文件都出現在目標 Azure Cosmos DB 之後,從移轉活動的捷徑功能表中選取 [完成] 以完成移轉。

    此動作會完成所有暫止變更的重新執行,並完成移轉。

    Screenshot that shows the Finish menu option.

移轉後最佳化

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

其他資源

下一步