從 Standard 版遷移至 Enterprise 版

如要將資料從 Firestore Standard 版資料庫遷移至 Firestore Enterprise 版資料庫,建議使用下列任一選項:

  • 匯入及匯出功能。匯入作業產生的資料檔案與 Enterprise 版和 Standard 版都相容。

  • firestore-to-firestore Dataflow 範本。 Dataflow 服務可讓您建構資料管道,而 firestore-to-firestore 範本則會在 Cloud Firestore 資料庫之間建立批次管道。

匯入及匯出是較簡單的選項,設定選項較少。

Dataflow 範本的自訂程度更高。您可以擴充範本程式碼,執行部分遷移作業或轉換資料。你也可以控制工作人員人數和大小。

這兩種選項都支援跨專案和區域的遷移作業。

透過匯出及匯入功能遷移資料

如要透過匯出及匯入作業遷移資料,請參閱「匯出及匯入資料」。如要將資料移至其他專案的資料庫,請參閱「在專案之間移動資料」。

使用 Dataflow範本遷移資料

請按照下列操作說明,使用 firestore-to-firestore Dataflow 範本遷移資料。

事前準備

  1. 開始遷移資料前,請務必在來源資料庫上啟用時間點復原 (PITR) 功能。Dataflow 工作會使用 PITR,在 PITR 時間戳記讀取資料。如果 PITR 遭停用,且工作執行時間超過一小時,工作就會失敗。

  2. 指派下一節所述的必要角色。

必要的角色

如要將資料從一個資料庫遷移至另一個資料庫,請指派下列角色。您或許也能透過自訂角色或其他預先定義的角色,取得必要權限:

  1. 如要取得建立新資料庫及存取 Cloud Firestore 資料所需的權限,請要求管理員在專案中授予您「Cloud Datastore 擁有者」(roles/datastore.owner) Identity and Access Management (IAM) 角色。
  2. 如要授予 Dataflow 工作者服務帳戶 (例如 PROJECT_NUMBER-compute@) 專案的 Cloud Datastore 使用者 (roles/datastore.user) 身分與存取權管理角色,請為 Dataflow 工作者服務帳戶指派該角色,讓工作可以讀取及寫入 Cloud Firestore 資料庫。

    如要進一步瞭解 Dataflow 安全性,請參閱「Dataflow 安全性和權限」。

如要進一步瞭解如何授予 IAM 角色,請參閱「管理專案、資料夾和機構的存取權」。

1. 建立新的 Firestore Enterprise 版資料庫

如要將資料從 Standard 版資料庫遷移至 Enterprise 版資料庫,請先建立 Enterprise 版目的地資料庫。請參閱「建立資料庫」。

2. 執行 Dataflow firestore-to-firestore 範本

使用 firestore-to-firestore 範本設定及執行 Dataflow 工作。範本支援遷移整個資料庫,或只遷移指定的集合群組。

限制

請注意 firestore-to-firestore Dataflow 範本的下列限制:

  • 來源資料庫必須是 Standard 版資料庫。
  • 遷移作業會在特定讀取時間讀取資料。建議您在來源資料庫中啟用時間點復原 (PITR) 功能。如果未啟用 PITR,資料會在 1 小時後過期,這可能不足以完成資料遷移。PITR 會將資料保留時間延長至七天。
  • 不會遷移索引。
  • Dataflow 工作不會遷移資料庫設定,例如存留時間 (TTL) 政策、備份、PITR 和客戶自行管理的加密金鑰 (CMEK)。

    您必須在新資料庫中設定這些設定。為提高資料遷移速度,請等到遷移完成後,再設定目的地資料庫的 TTL、備份和 PITR。

下列範例說明如何使用 Google Cloud CLI 執行範本。

遷移所有資料

如要遷移所有資料,請使用下列指令:

gcloud dataflow flex-template run "JOB_NAME" \
  --project "PROJECT" \
  --template-file-gcs-location gs://dataflow-templates-REGION_NAME/VERSION/flex/Cloud_Firestore_to_Firestore \
  --region REGION_NAME \
  --parameters "sourceProjectId=SOURCE_PROJECT_ID" \
  --parameters "sourceDatabaseId=SOURCE_DATABASE_ID" \
  --parameters "destinationProjectId=DESTINATION_PROJECT_ID" \
  --parameters "destinationDatabaseId=DESTINATION_DATABASE_ID" \
  --parameters "readTime=READ_TIME"

更改下列內容:

  • JOB_NAME:作業名稱。
  • PROJECTGoogle Cloud專案的 ID。
  • REGION_NAME:您要執行 Dataflow 工作的Google Cloud 位置。使用靠近資料庫的位置。
  • VERSION:您要使用的範本版本。您可以使用下列值:

  • SOURCE_PROJECT_ID:來源專案的 ID,其中包含 Firestore Standard 版資料庫。Google Cloud

  • SOURCE_DATABASE_ID:來源 Cloud Firestore 資料庫的 ID。

  • DESTINATION_PROJECT_ID:新Cloud Firestore資料庫的目的地Google Cloud專案 ID。

  • DESTINATION_DATABASE_ID:目的地 Cloud Firestore 資料庫的 ID。

  • READ_TIME:要從來源資料庫讀取資料的時間戳記。設為 RFC 3339 格式的時間戳記,精確度可達分鐘,例如 2026-05-15T16:31:00.00Z

    最早的有效時間戳記取決於時間點復原 (PITR) 設定。請參閱「取得最早版本時間」。

遷移特定集合群組

如要只遷移特定集合群組,請使用下列指令:

gcloud dataflow jobs run "JOB_NAME" \
  --project "PROJECT" \
  --gcs-location gs://dataflow-templates-REGION_NAME/VERSION/Cloud_Firestore_to_Firestore \
  --region REGION_NAME \
  --parameters "sourceProjectId=SOURCE_PROJECT_ID" \
  --parameters "sourceDatabaseId=SOURCE_DATABASE_ID" \
  --parameters "collectionGroupIds=COLLECTION_GROUP_IDS" \
  --parameters "destinationProjectId=DESTINATION_PROJECT_ID" \
  --parameters "destinationDatabaseId=DESTINATION_DATABASE_ID" \
  --parameters "readTime=READ_TIME"

更改下列內容:

  • JOB_NAME:作業名稱。
  • PROJECTGoogle Cloud專案的 ID。
  • REGION_NAME:您要執行 Dataflow 工作的Google Cloud 位置。使用靠近資料庫的位置。
  • VERSION:您要使用的範本版本。您可以使用下列值:

  • SOURCE_PROJECT_ID:來源 Google Cloud 專案的 ID,其中包含 Firestore Standard 版資料庫。

  • SOURCE_DATABASE_ID:來源 Cloud Firestore 資料庫的 ID。

  • COLLECTION_GROUP_IDS:以半形逗號分隔的集合群組 ID 清單,用於遷移。

    系統不會以遞迴方式納入子集合。舉例來說,如果您指定 users 集合群組,除非您也指定 messages 集合群組,否則遷移作業不會包含 /users/userid/messagesmessages 子集合。

  • DESTINATION_PROJECT_ID:新Cloud Firestore資料庫的目的地Google Cloud專案 ID。

  • DESTINATION_DATABASE_ID:目的地 Cloud Firestore 資料庫的 ID。

  • READ_TIME:從來源資料庫讀取資料的時間戳記。設為 RFC 3339 格式的時間戳記,精確度可達分鐘,例如 2026-05-15T16:31:00.00Z

    最早的有效時間戳記取決於時間點復原 (PITR) 設定。請參閱「取得最早版本時間」。

3. 設定資料庫

firestore-to-firestore 工作只會遷移資料。 索引和其他資料庫設定不會遷移。除了遷移資料,您也可以考慮在新資料庫中設定下列項目:

設定資料庫後,您可以使用新資料庫繼續測試應用程式。如要完成遷移作業,請更新應用程式以使用新資料庫。

疑難排解

如果資料庫很大,作業一次讀取太多資料,可能會失敗。解決方式:

後續步驟