遷移至與 MongoDB 相容的 Firestore

本指南將逐步說明如何將與 MongoDB 相容的來源資料庫,遷移至與 MongoDB 相容的 Firestore 資料庫,並將停機時間降到最低。

關於遷移程序

遷移程序分為下列階段:

  1. 準備:建立遷移作業所需的資源,並設定環境變數,以便在遷移程序的後續階段執行指令。

  2. 從 MongoDB 相容來源資料庫匯入:您可以使用 Datastream 服務擷取 MongoDB 相容來源資料庫的內容,然後將內容傳輸到 Cloud Storage 值區。

  3. 將資料寫入與 MongoDB 相容的 Firestore 資料庫:您可以使用 Dataflow 服務,將資料從 Cloud Storage 值區轉移到與 MongoDB 相容的 Firestore 資料庫。

    這個 Dataflow 管道會與從 MongoDB 相容來源資料庫提取資料的 Datastream 串流同時執行。

  4. 將流量遷移至 Firestore:在適當的程序點,將應用程式讀取和寫入流量遷移至與 MongoDB 相容的 Firestore 資料庫,並停止遷移管道。

下圖概略說明遷移程序:

串流資料遷移架構

資料傳輸期間,與 MongoDB 相容的來源資料庫會維持服務狀態:

  • Datastream 程序會擷取靜態資料和變更事件。
  • 您必須關閉來源資料庫的寫入流量,因此會有短暫的局部無法使用時間。在此期間,其餘變更事件會複製到 Firestore。

  • 複製作業完成後,與 MongoDB 相容的 Firestore 資料庫就能成為應用程式工作負載的新事實來源。所有讀取和寫入流量都可以導向新的資料庫。

詳細的遷移步驟

本節將詳細說明遷移作業。

Datastream 服務會在來源和目的地之間建立串流。在本例中,來源是目前的 MongoDB 相容部署作業,目的地則是 Cloud Storage。這項程序包含下列步驟:

  1. 為 MongoDB 來源建立來源 Datastream 連線設定檔。具體操作說明取決於 MongoDB 相容來源的類型和部署方式。

  2. 建立 Cloud Storage bucket,接收來自 MongoDB 相容來源資料庫的資料和變更事件。

  3. 建立目的地 Datastream 連線設定檔,使用這個 Cloud Storage bucket。

  4. 建立並啟動 Datastream 串流,將來源連線設定檔連結至目的地連線設定檔。

  5. 啟動 Dataflow 管道,開始將擷取的資料注入與 MongoDB 相容的 Firestore 資料庫。

  6. 監控串流 找出遷移程序中的重要里程碑,判斷資料轉移期間是否發生任何錯誤。

  7. 在適當時間停止寫入流量至來源資料庫。將所有資料 (包括近期變更) 複製到與 MongoDB 相容的 Firestore 資料庫後,請將讀取流量重新導向至新目的地。

  8. 啟用寫入流量 至與 MongoDB 相容的 Firestore 資料庫。

程式碼範例簡介

本指南中的程式碼範例應依序執行。本指南假設您已預先設定所有環境變數,藉此設定環境。接著,您會執行遷移作業所需的指令,這些指令會使用已設定的環境變數。建議您採用這種做法。由於許多指令使用相同的環境變數,因此您可以降低在遷移程序不同階段中發生錯誤的機率。

或者,您也可以將指令範例中的變數,換成您為對應環境變數設定的值。

限制

與 MongoDB 相容的 Firestore 有下列限制:

  • Firestore 不支援下列 BSON 類型:

    • 未定義
    • DBPointer
    • JavaScript
    • 符號
  • Firestore 對 _id 欄位有下列限制:

    • 文件 _id 欄位支援 ObjectID、Long 和 String。
    • 系統不支援 0L 做為 _id
  • Firestore 的文件大小上限為 4MB。

如果您的資料符合下列任一條件:

  • 建議您在開始遷移程序前,先解決資料集中的這些情況。

  • 如果選擇繼續操作而不進行變更,受限制影響的文件將無法寫入 Firestore,且會遭到擱置。 您可以決定如何處理這些文件。如果轉換為支援的類型、值或大小,即可重新處理。

Datastream 必須符合下列規定:

  • Datastream 支援的 MongoDB 最低主要版本為 4.0。部分子版本有支援的最低修補程式版本:

    • 4.0.21
    • 4.2.10
    • 4.4.2
  • MongoDB 叢集必須支援變更串流。如要啟用 Change Streams,MongoDB 部署作業必須設定為副本集已 shard 的叢集

後續步驟

請繼續設定要遷移的資源