將流量遷移至 Firestore
本頁說明遷移程序的最後階段,也就是監控遷移作業,並決定何時切換流量,盡量減少應用程式的停機時間。
步驟如下:
- 判斷資料移轉期間是否發生任何錯誤。請注意,目前資料類型和文件大小有已知限制。
- 判斷何時適合停止寫入來源資料庫的流量。
- 判斷所有資料 (包括近期變更事件) 何時複製到與 MongoDB 相容的 Firestore 資料庫。此時,您可以安全地將讀取流量重新導向至新目的地。
- 確認所有應用程式工作負載都只從 Firestore 讀取資料後,即可安全地啟用與 MongoDB 相容的 Firestore 資料庫,並將寫入流量導向該資料庫。
查看遷移完成里程碑
如要按照本節的操作說明進行,必須在 Google Cloud 控制台中存取 Dataflow。
前往 Google Cloud 控制台的「Dataflow」頁面:
來源資料庫正在接收所有讀取和寫入流量
啟動 Datastream 和 Dataflow 管道後,來源資料庫應會繼續接收讀取和寫入流量。您可以根據下列里程碑,判斷遷移作業何時可以進入下一個步驟:
Dataflow 管道的「交易寫入事件」步驟不再處理資料積壓,輸送量降至與來源資料庫的有效流量相符的低穩定狀態:
Datastream「監控」分頁中的資料更新頻率至少會與來源資料庫的即時流量相近:
資料轉移達到穩定狀態後,請繼續下一個步驟。
停止將寫入流量傳送到來源資料庫
確認 Datastream 串流已完成大量回填,且 Dataflow 範本只會以穩定速度為來源資料庫的即時變更執行交易寫入作業後,即可開始轉換程序。這個程序需要短暫停機,才能將所有剩餘流量複製到與 MongoDB 相容的目標 Firestore 資料庫。
停止所有寫入流量,以免影響 MongoDB 相容的來源資料庫。視應用程式需求和功能而定,您可能想繼續允許讀取來源資料庫的流量。
監控 Datastream 輸送量和記錄,以及 Dataflow 輸送量、資料延遲和記錄,確保最後的寫入流量已處理完畢。
檢查無效信件佇列。 判斷遷移期間是否有任何文件無法寫入目的地資料庫,並決定是否要繼續遷移。
將讀取流量遷移至 Firestore
所有待處理的變更串流事件都複製到 Firestore 後,兩個資料庫就會包含完全相同的資料。現在可以轉移讀取流量,然後再轉移寫入流量。
如果您在上一個步驟中選擇允許讀取流量存取與 MongoDB 相容的來源資料庫:
- 轉移讀取流量。
- 請確認所有原本連線至 MongoDB 相容來源資料庫的服務,都已更新為從與 MongoDB 相容的 Firestore 資料庫執行讀取作業。
將寫入流量遷移至 Firestore
完成上一個步驟後,即可安全地將應用程式的寫入流量直接重新導向至 Firestore。
停止遷移管道
遷移作業現已完成。現在可以停止 Datastream 串流和 Dataflow 工作。
暫停 Datastream 串流:
gcloud datastream streams update "$DATASTREAM_NAME" \
--location="$LOCATION" \
--state=PAUSED \
--update-mask=state
如要關閉 Dataflow 管道,請執行下列指令:
列出所有目前的工作:
gcloud dataflow jobs list --region="$LOCATION"
輸出內容會產生 Dataflow 工作清單。
在工作清單中,找出時間戳記與您在
DATAFLOW_START_TIME
環境變數中指定的時間戳記相符的NAME
值。格式:
dataflow-mongodb-to-firestore-DATAFLOW_START_TIME
。 範例:dataflow-mongodb-to-firestore-20250514173638
。取得對應的
JOB_ID
。例如:2025-05-14_17_36_39-10772223470853954680
。針對這個工作 ID 執行排空指令:
gcloud dataflow jobs drain \ JOB_ID \ --region="$LOCATION"
範例:
gcloud dataflow jobs drain \ 2025-05-14_17_36_39-10772223470853954680 \ --region="$LOCATION"
後續步驟
如需疑難排解提示,請參閱「遷移疑難排解」。