遷移至與 MongoDB 相容的 Firestore
本指南將逐步說明如何將與 MongoDB 相容的來源資料庫,遷移至與 MongoDB 相容的 Firestore 資料庫,並將停機時間降到最低。
關於遷移程序
遷移程序分為下列階段:
- 準備:建立遷移作業所需的資源,並設定環境變數,以便在遷移程序後續階段執行指令。 
- 從 MongoDB 相容來源資料庫匯入:您可以使用 Datastream 服務擷取 MongoDB 相容來源資料庫的內容,然後將內容傳輸到 Cloud Storage 值區。 
- 將資料寫入與 MongoDB 相容的 Firestore 資料庫:您可以使用 Dataflow 服務,將資料從 Cloud Storage 值區轉移到與 MongoDB 相容的 Firestore 資料庫。 - 這個 Dataflow 管道會與從 MongoDB 相容來源資料庫提取資料的 Datastream 串流同時執行。 
- 將流量遷移至 Firestore:在適當的程序點,將應用程式讀取和寫入流量遷移至與 MongoDB 相容的 Firestore 資料庫,並停止遷移管道。 
下圖概略說明遷移程序:
資料轉移期間,與 MongoDB 相容的來源資料庫會維持服務狀態:
- Datastream 程序會擷取靜態資料和變更事件。
- 您必須關閉來源資料庫的寫入流量,因此會有短暫的局部無法使用時間。在這段期間,其餘變更事件會複製到 Firestore。 
- 複製作業完成後,與 MongoDB 相容的 Firestore 資料庫就能成為應用程式工作負載的新事實來源。所有讀取和寫入流量都可以導向新的資料庫。 
詳細遷移步驟
本節將詳細說明遷移作業。
Datastream 服務會在來源和目的地之間建立串流。在本例中,來源是目前的 MongoDB 相容部署作業,目的地則是 Cloud Storage。這項程序包含下列步驟:
- 為 MongoDB 來源建立來源 Datastream 連線設定檔。具體操作說明取決於 MongoDB 相容來源的類型和部署方式。 
- 建立 Cloud Storage bucket,接收來自 MongoDB 相容來源資料庫的資料和變更事件。 
- 建立目的地 Datastream 連線設定檔,使用這個 Cloud Storage bucket。 
- 建立並啟動 Datastream 串流,將來源連線設定檔連結至目的地連線設定檔。 
- 啟動 Dataflow 管道,開始將擷取的資料注入與 MongoDB 相容的 Firestore 資料庫。 
- 監控串流 找出遷移程序中的重要里程碑,判斷資料轉移期間是否發生任何錯誤。 
- 在適當時間停止寫入流量至來源資料庫。將所有資料 (包括最近的變更) 複製到與 MongoDB 相容的 Firestore 資料庫後,請將讀取流量重新導向至新目的地。 
- 啟用寫入流量 至與 MongoDB 相容的 Firestore 資料庫。 
程式碼範例簡介
本指南中的程式碼範例應依序執行。本指南假設您已預先設定所有環境變數,藉此設定環境。接著,您會執行遷移作業所需的指令,這些指令會使用已設定的環境變數。建議您採用這種做法。由於許多指令會使用相同的環境變數,因此您可以降低在遷移程序不同階段中發生錯誤的機率。
或者,您也可以將指令範例中的變數,換成您為對應環境變數設定的值。
限制
開始之前,請先瞭解與 MongoDB 相容的 Firestore 和 MongoDB 之間的差異。 請特別留意下列事項:
如果您的資料不符合上述類別的限制:
- 建議您在開始遷移程序前,先解決資料集中的這些情況。 
- 如果選擇繼續操作而不進行變更,受限制影響的文件將無法寫入 Firestore,且會遭到擱置。 您可以決定如何處理這些文件。如果轉換為支援的類型、值或大小,即可重新處理。 
Datastream 必須符合下列規定:
- Datastream 支援的 MongoDB 最低主要版本為 4.0。部分子版本支援的最低修補程式版本如下: - 4.0.21
- 4.2.10
- 4.4.2
 
- MongoDB 叢集必須支援變更串流。如要啟用 Change Streams,MongoDB 部署作業必須設定為副本集或已 shard 的叢集。 
後續步驟
請繼續設定要遷移的資源。