在這個教學中,你會使用 Visual Studio Code 中的 Azure DocumentDB 遷移擴充功能,建立並管理從本地或雲端 MongoDB 實例到 Azure DocumentDB 的遷移工作。 此擴充套件提供一個開發者友善的介面,讓遷移過程能無服務中斷。 此擴充功能消除了額外基礎設施的需求,並提供安全的連接、零成本使用,以及細緻控制哪些資料庫與收藏要遷移。
本文重點在於利用擴充功能整合的工作流程,直接在 Visual Studio Code 內簡化遷移步驟。 這種方法非常適合希望提供簡潔、可管理的體驗,且複雜度最小且可靠性最高。
Prerequisites
Azure 訂用帳戶
- 如果您沒有 Azure 訂用帳戶,請建立 免費帳戶
一個現有的 Azure DocumentDB 叢集
- 如果你沒有叢集,就建立 一個新的叢集
- 在您的機器上安裝 Azure DocumentDB 遷移擴充功能 。 此裝置會自動安裝其前置條件,即 DocumentDB for Visual Studio Code 擴充功能。
在開始遷移前,先準備好你的 Azure DocumentDB 帳號和現有的 MongoDB 實例進行遷移。
MongoDB 實例(原始碼)
- 完成遷移前評估,以判斷來源實例與目標帳號之間是否存在不相容及警告。
- 新增一個具備
readAnyDatabaseclusterMonitor權限的使用者,除非此使用者已經存在。 你在擴充功能中建立遷移工作時會使用這個憑證。
Azure DocumentDB (目標)
- 收集 Azure DocumentDB 帳戶的憑證。
- 確保使用者擁有
createCollection、dropCollection、createIndexinsertlistCollections、 及 權限。
最低必要權限
請使用以下最低限度的角色來建立並執行遷移任務。
| 最低角色 | Scope | 適用於連接模式 | Purpose |
|---|---|---|---|
| Reader | 訂閱 | 公私部門 | 列出訂閱和資源群組。 每份移民工作都必須如此。 |
| Azure 資料移轉服務 撰稿人 | 資源群組 | 公私部門 | 建立Azure 資料移轉服務(DMS)。 你不需要每次遷移都建立新的 DMS。 每個地區只用一個DMS就夠了。 |
| Contributor | 訂閱 | 公私部門 | 請在訂閱中註冊 DMS。 這是一次性的活動,可以委派給其他使用者。 |
| 使用者存取系統管理員 | 虛擬網路 | 僅限私人 | 將網路貢獻者角色指派給 DMS 物件主體。 這是每個虛擬網路的一次性活動,可以委派給其他使用者。 |
| Contributor | Azure DocumentDB | 公私部門 | 啟動遷移任務。 |
關於提供者註冊的詳細資訊,請參閱 在您的訂閱中註冊 Microsoft.DataMigration 資源提供者。
Important
Microsoft Entra ID 認證目前不支援遷移工作。 請使用原生的 DocumentDB 認證。
執行移轉。
關於遷移規模、速度與切換的規劃指引,請參閱 遷移最佳實務。
連線至來源
- 打開 DocumentDB for VS Code 擴充套件。
- 將你想遷移的 MongoDB 伺服器加入文件 資料庫連線 清單。
- 選擇 新增連線。
- 在導航列中,選擇 連接字串。
- 貼上你的連接字串:
mongodb://<YOUR_USERNAME>:<YOUR_PASSWORD>@localhost:10260/?tls=true&tlsAllowInvalidCertificates=true&authMechanism=SCRAM-SHA-256 - 從 DocumentDB 的連線中,選擇該連線並展開以連接。
調用遷移擴充功能
你可以從 DocumentDB 連線中呼叫遷移擴充功能。
在已連接的已展開連線上按右鍵。
從右鍵選單選擇 資料遷移 。
從指令面板中選擇 Migration 至 Azure DocumentDB。
Visual Studio Code 中顯示遷移工具的指令面板截圖。 然後選擇 遷移到 Azure DocumentDB。
遷移精靈會引導你完成整個流程。
** 建立遷移作業
遷移工作用於將一組集合從來源遷移到目的地 Azure DocumentDB。 建立遷移工作精靈有六個步驟。
步驟一:創造工作
在這個步驟中,你提供工作的基本細節。
職缺名稱:提供一個使用者友善的名稱來識別遷移職缺。
遷移模式:選擇最適合你使用情境的遷移模式。
- 線上 遷移會複製集合資料,並確保在過程中更新也能同步。 這種方法的優勢在於它的停機時間極短,從而使業務可以持續運作,確保業務連續性。 當持續運作至關重要且減少停機時間是重中之重時,請選擇此選項。
- 離線移轉會在開始時擷取資料庫快照,提供較簡單且可預測的方法。 當使用資料庫的靜態副本可以被接受且即時更新不是必需時,這樣做效果良好。
Important
若要確保從 MongoDB 成功在線移轉,必須在來源 MongoDB 伺服器上啟用 ChangeStream。 沒有 ChangeStream,初始遷移後對資料所做的任何修改都無法被記錄。 因此,只有在來源 MongoDB 伺服器上啟用 ChangeStream 時,才使用在線移轉模式。
連接性:根據貴組織的安全要求與網路配置,可選擇 公共 與 私密。
- 當來源伺服器與目標伺服器可透過網際網路透過公開 IP 存取時,請使用 Public 。 它能支援需要外部存取的服務。
- 當來源伺服器或目標伺服器只能透過虛擬網路內的私有 IP 存取時,請使用 私人 伺服器。 它透過減少暴露於公共互聯網,提升安全性。
選取 下一步 以繼續。
步驟二:選擇目標
在此步驟中,你選擇一個現有的 Azure DocumentDB 帳號並提供其連接字串。
從下拉選單中選擇訂閱、資源群組和 Azure DocumentDB 帳號。
提供 Azure DocumentDB 帳號的連線字串。
確認螢幕上列出的 IP 是否允許在 Azure DocumentDB 防火牆上使用。
選取 下一步 以繼續。
步驟 3:選擇資料庫遷移服務(DMS)
Azure 資料移轉服務 是一項透過雲端基礎設施進行資料傳輸,而非依賴本地資源,將資料從Azure資料平台之間遷移的服務。 從下拉選單中選擇現有的 Azure 資料移轉服務 實例,或選擇 Create DMS以建立新的遷移服務。
Important
請確認 Microsoft.DataMigration 資源提供者已在您的訂閱中註冊。 每個訂閱只需執行一次。
選取 下一步 以繼續。
步驟 4:設定連接性
這個畫面取決於你在步驟1中選擇的連接模式。
公用連線
在公共連線中,遷移工作會透過公共網際網路連接到你的來源和目標。 要啟用通訊,你必須更新來源防火牆和目標防火牆。 要啟用 DMS 伺服器的通訊,請將螢幕中列出的 IP 位址加入來源與目標防火牆。 欲了解更多網路模式資訊,請參閱 公共連接。 防火牆設定指引請參見 configure Azure DocumentDB cluster防火牆。
私密連線
在私人連線中,遷移工作會在其虛擬網路內執行。 為了安全地與您的虛擬網路進行通訊,我們使用虛擬網路對等連線。 欲了解更多關於網路模型的資訊,請參閱 私人連接。
該工具允許將兩個虛擬網路進行對等連接,一個作為來源網路,另一個作為目標網路。 根據你的網路設定,從下拉選單中選擇訂閱、資源群組和虛擬網路。
在 DMS 設定 區塊中,選擇一個不會與虛擬網路衝突的 CIDR 範圍。
執行螢幕上提供的 PowerShell 腳本,以啟用虛擬網路整合。
選取 下一步 以繼續。
步驟五:選擇合集
在此步驟中,你選擇要納入遷移工作的集合。 透過提供的搜尋選項,從收藏列表中選擇。 已存在於目標中的集合會自動在「目標中存在」欄位標記為「是」。
小提示
請務必選擇所有你想包含的集合,因為一旦建立遷移工作,收藏清單就無法再新增。
選取 下一步 以繼續。
步驟6:確認並開始
在選擇 「開始遷移」前,請先閱讀遷移工作詳情。 如果需要更新細節,請使用 編輯詳情 按鈕。
一旦遷移工作成功建立,你會自動被導向「 檢視現有工作 」頁面
小提示
資料遷移任務是在 Azure 資料移轉服務 上執行的。 因此,在資料遷移過程中,你不必同時連接來源環境和目標環境。 狀態會在儀表板上定期更新。
監控現有的移民工作
使用 「檢視現有工作 」標籤來監控已初始化工作的遷移狀態。 職缺是根據所選的DMS列出的。 使用 「變更 DMS」 按鈕來更改你的選擇。
狀態會定期自動更新。 離線工作在選取的集合快照複製到目標後會自動完成。 然而,線上移轉需要手動切換。
要查看各集合狀態,請從表格中選擇一列。
監控線上遷移
在線遷移與離線遷移不同,無法自動完成。 相反地,它們會持續運行,直到手動選擇切換來完成為止。
若要完成線上遷移,請依照給定的順序進行以下步驟:
當所有集合的初始資料載入完成後,切換按鈕 就會被啟用。 此時,工作處於複製階段,持續將來源實例的更新複製到目標實例,以使其保持與最新變更同步。
準備進行遷移切換時,停止所有流入待遷移來源集合的交易。
複製間隙顯示上次更新與當前時間之間的時間間隔。
監控資料表中的複寫變更,並等待「複寫變更已播放」指標穩定。 穩定的 Replication Changes Played 指標表示所有來自來源的更新都已成功複製到目標。
當所有集合的複製缺口最小且 Replication Changes Played 指標穩定時,選擇 Cutover。
手動驗證來源集合和目標集合之間的行數是否相同。
Note
在未驗證來源與目標同步的情況下執行切換操作,可能會導致資料遺失。
移轉案例
Azure DocumentDB 遷移擴充支援多種原始環境,包括在 Azure 上運行的 MongoDB 實例、本地資料中心及其他雲端供應商。 該擴充功能提供彈性的連接選項,以因應不同的網路配置與安全需求。
支援的原始碼環境
下表總結了所支援的遷移來源:
| 來源環境 | Description |
|---|---|
| 在 Azure 裡面 | Azure 虛擬機器或其他 Azure 托管服務上的 MongoDB 實例 |
| On-premises | 運行於您當地資料中心或私人基礎設施中的 MongoDB 伺服器 |
| 其他雲端提供者 | 託管於其他雲端平台的 MongoDB 實例 |
公用連線
在公開連線模式下,Azure 資料移轉服務(DMS)透過公共網際網路連接到你的來源伺服器和目標伺服器。 DMS 提供靜態 IP 位址,你可以在來源伺服器和目標伺服器上加入防火牆的允許清單。 DMS 使用共用的公共虛擬網路來處理特定區域內的所有遷移。 雖然這個虛擬網路在多個客戶間是共享的,但每個遷移作業都會在獨立的私有工作節點上執行,以確保工作層級的隔離。
以下情況下使用公共連線:
- 你的來源伺服器和目標伺服器都可透過公共 IP 位址存取。
- 你們組織的安全政策允許透過公共網網路連線。
- 你需要一個更簡單的設置,不含虛擬網路配置。
為了實現公共連接:
在遷移精靈中,選擇 「公共 」作為連接模式。
請注意精靈中顯示的靜態 IP 位址。
將這些 IP 位址加入你來源 MongoDB 伺服器的防火牆允許清單。
將這些 IP 位址加入 Azure DocumentDB 防火牆。
私密連線
在私有連線模式下,DMS 會為每個遷移任務配置專用的私有虛擬網路,並與你的來源及目標虛擬網路進行對等連結。 這表示每個工作同時擁有隔離的工人節點與獨立網路,確保工作間不會有流量交叉,客戶之間也不會有共用的網路路徑。
擴充功能支援最多兩個虛擬網路:
- 來源虛擬網路:可存取原始 MongoDB 伺服器的虛擬網路。
- 目標虛擬網路:您可以存取Azure DocumentDB 叢集的虛擬網路。
以下情況下使用私人連線:
- 你的來源伺服器或目標伺服器無法透過公共網網存取。
- 您的組織要求所有流量都必須流經私人網路。
- 你需要避免公開接觸網路。
來自其他雲端供應商或本地部署
使用你偏好的 VPN 工具,在 Azure 與你在其他雲端或本地的來源環境之間建立網路連線。
從 Azure 中的專用端點
為來源與目標虛擬網路設置私有端點。
為了實現私人連線:
在遷移精靈中,選擇 「私人 」作為連接模式。
選擇你來源環境的訂閱、資源群組和虛擬網路。
選擇目標環境的訂閱、資源群組和虛擬網路。
在 DMS 設定 區塊中,選擇一個不會與你現有虛擬網路衝突的 CIDR 範圍。
執行精靈中提供的 PowerShell 腳本,以啟用虛擬網路的整合與對等。
Important
使用私有存取時,單一虛擬網路一次只能支援一個活躍的遷移工作。 要同時執行多個工作,請為每個工作使用不同的虛擬網路。
在您的訂閱中註冊 Microsoft.DataMigration 資源提供者
要確保 Microsoft.DataMigration 資源提供者已在您的訂閱中註冊,您可以按照以下步驟進行:
Azure 入口網站
前往 Azure 入口網站,並進入你的訂閱系統。
在左側選單中,選擇「 資源提供者 」的 設定。
在上方的搜尋框搜尋 Microsoft.DataMigration 。
如果還沒註冊,選擇它並點選 註冊 按鈕。
Azure CLI
開啟 Azure Cloud Shell 或你的本地終端機。
執行下列命令以註冊資源提供者:
az provider register --namespace Microsoft.DataMigration
PowerShell
開啟 Azure Cloud Shell 或你本機的 PowerShell。
執行下列命令以註冊資源提供者:
Register-AzResourceProvider -ProviderNamespace "Microsoft.DataMigration"
FAQ
為什麼在 Azure DocumentDB 支援檢視時,選取集合畫面步驟中缺少檢視?
Azure DocumentDB 支援建立新的檢視。 然而,遷移擴充並不支援遷移現有視圖。
遷移完成後,你隨時可以重新建立視圖。
從 MongoDB 遷移到 Azure DocumentDB 時,哪些集合和資料庫會被跳過?
以下資料庫與集合被視為 MongoDB 內部的:
| 類別 | Description |
|---|---|
| 資料庫 | 管理員、本地、系統設定 |
| 集合 | 任何帶有前綴的集合 system. |
遷移工作是在我的機器上本地執行嗎?
VS Code 中的遷移精靈需要從你的本地機器連接到來源環境和目標環境的網路連線。 這種連結性用於列舉資料庫與收藏,並提交遷移工作。 工作提交後,你可以關閉 VS Code 或中斷與來源和目標環境的連接。
資料遷移完全由 Azure 資料移轉服務(DMS) 執行,這是一個Azure託管的服務,負責管理所有資料流動。 DMS 不依賴你的本地機器或 VS Code 來執行工作,所以提交工作後不需要本地連線。
遷移期間我可以重新命名資料庫和收藏嗎?
這個擴充功能不支援遷移時資料庫和收藏的重新命名。
我該如何設定我的來源伺服器防火牆以避免連線問題?
所需的網路配置取決於所選的連接模式:
- 公開模式: 你必須允許來源防火牆和目標防火牆中精靈中顯示的 IP 位址才能啟用通訊。
- 私人模式: 您必須啟用 虛擬網路整合 ,讓 DMS 伺服器能安全地與虛擬網路內的來源端點及目標端點通訊。
另請參考VS Code連接
我一次遷移可以遷移多少個資料庫和收藏?
你可以在同一次遷移中包含無限數量的收藏。
我可以同時執行多少移民工作?
使用公開存取時,你可以執行多個遷移工作。 然而,使用 私有存取時,單一虛擬網路一次只能支援 一個活躍工作。 要同時執行多個私有存取的工作,你需要為每個工作使用 不同的虛擬網路 。
這個擴充功能會產生什麼類型的日誌?
擴充功能會在預設的日誌目錄中記錄錯誤、警告及其他診斷日誌:
-
Windows -
C:\Users\<username>\.dmamongo\logs\ -
Linux -
~/.dmamongo/logs -
macOS -
/Users/<username>/.dmamongo/logs