教學課程:使用 Azure 資料庫移轉服務在線上狀態下將 MongoDB 移轉至 Azure Cosmos DB for MongoDB RU
適用於: MongoDB
重要
您可以使用適用於 Azure Data Studio 的 MongoDB 移轉延伸模組,將移轉至適用於 MongoDB 的 Azure Cosmos DB 虛擬核心。 此擴充功能會利用背景中的 Azure 資料移轉服務。 請注意,無法使用 Azure 入口網站 上的 資料移轉服務,將移轉至適用於 MongoDB 的 Azure Cosmos DB 虛擬核心。
此 MongoDB 移轉指南是 MongoDB 移轉系列的一部分。 重要的 MongoDB 移轉步驟是 移轉前、移轉和 移轉後。
概述使用 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 資料庫移轉服務中,您可在離線或線上時移轉資料庫。 在離線移轉中,當移轉開始時,應用程式即會開始停機。 若要將停機限制於在移轉後完全移轉至新環境所需的時間,請使用線上移轉。 建議您測試離線移轉,以決定停機是否在可接受範圍。 如果無法接受預期的停機,則請執行線上移轉。
本文說明如何在線上狀態下從 MongoDB 移轉至 Azure Cosmos DB for MongoDB。 如需離線移轉,請參閱使用 Azure 資料庫移轉服務在離線狀態下將 MongoDB 移轉至 Azure Cosmos DB for MongoDB RU 教學課程。
必要條件
若要完成本教學課程,您需要:
完成移轉前步驟,例如估計輸送量、選擇分割索引鍵和索引編製原則。
建立 Azure Cosmos DB for MongoDB 帳戶,並確定已啟用 [防止 Azure Cosmos DB for MongoDB 作業的速率限制錯誤]。
注意
若是要移轉至使用無伺服器模式佈建的 Azure Cosmos DB for MongoDB 帳戶,目前不支援使用 DMS。
使用 Azure Resource Manager 部署模型建立 Azure 資料庫移轉服務的 Microsoft Azure 虛擬網路,以使用 ExpressRoute 或 VPN 為您的內部部署來源伺服器提供站對站連線能力。
在虛擬網路設定期間,如果您使用 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 入口網站的 [功能] 分頁中找到伺服器端重試功能
如果 [已停用],建議您將其啟用,如下所示
註冊資源提供者
您必須在建立第一個資料庫移轉服務執行個體之前,註冊 Microsoft.DataMigration 資源提供者。
登入 Azure 入口網站。 搜尋並選取訂閱。
選取您要在其中建立 Azure 資料庫移轉服務執行個體的訂用帳戶,然後選取 [資源提供者]。
搜尋移轉,然後針對 [Microsoft.DataMigration] 選取 [註冊]。
建立執行個體
在 Azure 入口網站中,選取 [+ 建立資源],搜尋「Azure 資料庫移轉服務」,然後從下拉式清單選取 [Azure 資料庫移轉服務]。
在 [Azure 資料庫移轉服務] 畫面上,選取 [建立]。
在 [建立移轉服務] 畫面上,指定服務的名稱、訂用帳戶,以及新的或現有的資源群組。
選取您要在其中建立 Azure 資料庫移轉服務執行個體的位置。
選取現有的虛擬網路或建立新的虛擬網路。
虛擬網路會為 Azure 資料庫移轉服務提供來源 MongoDB 執行個體和目標 Azure Cosmos DB 帳戶的存取權。
如需如何在 Azure 入口網站中建立虛擬網路的詳細資訊,請參閱使用 Azure 入口網站建立虛擬網路一文。
從「進階」定價層選取 SKU。
注意
只有在使用「進階」層的情況下,才支援線上移轉。 如需成本和定價層的詳細資訊,請參閱定價分頁。
選取 [建立] 以建立服務。
建立移轉專案
建立服務之後,請在 Azure 入口網站中找出該服務,然後建立新的移轉專案。
在 Azure 入口網站中,選取 [所有服務],搜尋 Azure 資料庫移轉服務,然後選取 [Azure 資料庫移轉服務]。
在 [Azure 資料庫移轉服務] 畫面上,搜尋您建立的 Azure 資料庫移轉服務執行個體名稱,然後選取該執行個體。
或者,您可以從 Azure 入口網站中的搜尋窗格探索 Azure 資料庫移轉服務執行個體。
選取 [+ 新增移轉專案]。
在 [新增移轉專案] 畫面上指定專案名稱,在 [來源伺服器類型] 文字方塊中選取 [MongoDB],在 [目標伺服器類型] 文字方塊中選取 [Azure Cosmos DB for MongoDB],然後在 [選擇活動類型] 選取 [線上資料移轉 [預覽]]。
選取 [儲存],然後選取 [建立及執行活動],以建立專案並執行移轉活動。
指定來源詳細資料
在 [來源詳細資料] 畫面上,指定來源 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 位址。
選取儲存。
如果來源是複本集,則來源伺服器位址應為主要伺服器的位址;如果來源是分區化 MongoDB 叢集,則應為路由器的位址。 如果是分區化 MongoDB 叢集,則 Azure 資料庫移轉服務必須能夠連線至叢集中的個別分區,而這可能需要在更多機器上開啟防火牆。
指定目標詳細資料
在 [移轉目標詳細資料] 畫面上,指定目標 Azure Cosmos DB 帳戶的連線詳細資料,也就是您要將 MongoDB 資料移轉至預先佈建 Azure Cosmos DB 所在的 MongoDB 帳戶。
選取儲存。
對應到目標資料庫
在 [Map to target databases] \(對應到目標資料庫\) 畫面上,對應要進行移轉的來源資料庫和目標資料庫。
如果目標資料庫包含與來源資料庫相同的資料庫名稱,Azure 資料庫移轉服務依預設會選取目標資料庫。
如果字串 Create 出現在資料庫名稱旁邊,則代表 Azure 資料庫移轉服務未找到目標資料庫,且服務會為您建立該資料庫。
在這個移轉階段,如果您想要在資料庫上共用輸送量,請指定輸送量 RU。 在 Cosmos DB 中,您可以在資料庫層級或個別針對每個集合佈建輸送量。 在 [Azure Cosmos DB 的要求單位 (RU)] 中測量輸送量。 深入了解 Azure Cosmos DB 定價。
選取儲存。
在 [集合設定] 畫面上,展開集合清單,然後檢閱要遷移的集合清單。
Azure 資料庫移轉服務會自動選取所有存在於來源 MongoDB 執行個體上,卻不存在於目標 Azure Cosmos DB 帳戶上的集合。 如果您想要重新移轉已包含資料的集合,就必須在此畫面上明確地選取集合。
您可以指定要讓集合使用的 RU 數目。 在大部分情況下,500 (分區化集合的最小值為 1000) 到 4000 之間的值即應足夠。 Azure 資料庫移轉服務會根據集合大小來建議智慧的預設值。
如有必要,可使用多個 Azure 資料庫移轉服務執行個體來平行執行資料庫移轉及集合,以加快執行速度。
您也可以指定分區索引鍵以便利用 Azure Cosmos DB 中的資料分割,從而獲得最佳延展性。 請務必檢閱選取分區/分割區索引鍵的最佳做法。 如果您沒有分割區索引鍵,您一律可以使用 _id 作為分區索引鍵,以達到更理想的輸送量。
選取儲存。
在 [移轉摘要] 畫面上的 [活動名稱] 文字方塊中,指定移轉活動的名稱。
執行移轉
選取 [執行移轉]。
[移轉活動] 視窗隨即出現,並顯示活動的 [狀態]。
監視移轉
在移轉活動畫面上選取 [重新整理] 以更新顯示,直到移轉的 [狀態] 顯示為 [正在重新執行] 為止。
注意
您可以選取活動來取得資料庫層級和集合層級移轉計量的詳細資料。
確認 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 容量規劃工具來估計要求單位