從來源 MongoDB 資料庫匯入

本頁面說明遷移程序的第一階段,也就是使用 Datastream 串流擷取與 MongoDB 相容的來源資料庫內容,並將其轉移至 Cloud Storage 值區。

為串流建立 YAML 設定檔

除了常見的指令列標記外,建立串流還需要兩個 YAML 格式的設定檔:

  • mongo_source_config.yaml 檔案會設定要遷移的特定資源 (例如資料庫名稱)。Mongo 連線參數 (例如主機名稱、使用者名稱和密碼) 都是連線設定檔的屬性。不過,資料庫 (以及該資料庫中的任何特定集合) 是串流的屬性。

  • gcs_dst_config.yaml 檔案會設定 Cloud Storage 中的資料放置位置。Cloud Storage bucket 和 bucket 內的根路徑是連線設定檔的屬性。不過,資料格式和資料在 Cloud Storage 值區結構中的位置,是資料串流的屬性。

下列指令範例會建立這些檔案,並填入您先前設定的環境變數值。或者,您也可以在任何文字編輯器中建立這些檔案,然後手動替換值。

echo "$(cat <<EOF
includeObjects:
  databases:
  - database: ${MONGODB_DATABASE_NAME}
EOF
)" > mongo_source_config.yaml

echo "$(cat <<EOF
path: "/${GCS_BUCKET_SUB_PATH}"
avroFileFormat: {}
EOF
)" > gcs_dst_config.yaml

上一個範例會設定 $MONGODB_DATABASE_NAME 的完整內容,以供遷移。您也可以將遷移範圍限制在資料庫中的特定集合。舉例來說,如要只遷移「users」和「chats」集合,請使用下列指令:

includeObjects:
  databases:
  - database: ${MONGODB_DATABASE_NAME}
    collections:
      - collection: users
      - collection: chats

建立 Datastream 串流

接著,建立串流來連結來源和目的地:

資料串流標籤 json_canonical_mode=true 可確保 Datastream 正確處理含有非標準值 (例如 InfinityNaN) 的 MongoDB 文件事件。

gcloud datastream streams create "$DATASTREAM_NAME" \
--display-name="$DATASTREAM_NAME" \
--location="$LOCATION" \
--source="$SRC_CONNECTION_PROFILE_NAME" \
--destination="$DST_CONNECTION_PROFILE_NAME" \
--mongodb-source-config=./mongo_source_config.yaml \
--gcs-destination-config=./gcs_dst_config.yaml \
--labels="json_canonical_mode=true" \
--backfill-all

如要進一步瞭解如何監控 Datastream 資料串流建立作業,請參閱「疑難排解」。

啟用 Datastream 串流

最後,啟用新的資料串流。

串流開始從 MongoDB 來源提取資料並串流處理變更內容後,您可以在 Cloud Storage bucket 中觀察到新建立的目錄和檔案,路徑則是在連線設定檔和串流中設定。

如要啟用串流,請執行下列指令:

gcloud datastream streams update "$DATASTREAM_NAME" \
--location="$LOCATION" \
--state=RUNNING \
--update-mask=state

後續步驟

請繼續將資料寫入目的地資料庫