Eseguire la migrazione dalla versione Standard alla versione Enterprise

Per eseguire la migrazione dei dati da un database Firestore Standard Edition a un database Firestore Enterprise Edition, ti consigliamo di utilizzare una delle seguenti opzioni:

  • Le funzionalità di importazione ed esportazione. I file di dati di un'operazione di importazione sono compatibili sia con Enterprise Edition sia con Standard Edition.

  • Il modello firestore-to-firestore Dataflow. Il servizio Dataflow ti consente di creare pipeline di dati e il firestore-to-firestore modello crea una pipeline batch tra i Cloud Firestore database.

L'importazione e l'esportazione sono l'opzione più semplice da eseguire con meno opzioni di configurazione.

Il modello Dataflow è più personalizzabile. Puoi estendere il codice del modello per eseguire migrazioni parziali o trasformare i dati. Puoi anche controllare il numero e le dimensioni dei worker.

Entrambe le opzioni supportano le migrazioni tra progetti e regioni.

Eseguire la migrazione dei dati con l'esportazione e l'importazione

Per eseguire la migrazione dei dati con le operazioni di esportazione e importazione, consulta Esportare e importare dati. Per spostare i dati in un database in un altro progetto, consulta Spostare i dati tra progetti.

Eseguire la migrazione dei dati con il modello Dataflow

Utilizza le seguenti istruzioni per eseguire la migrazione dei dati con il firestore-to-firestore Dataflow modello.

Prima di iniziare

  1. Prima di avviare la migrazione dei dati, assicurati che il recupero point-in-time (PITR) sia abilitato nel database di origine. Il job Dataflow utilizza PITR per leggere i dati in un timestamp PITR. Se PITR è disabilitato, il job non riesce se viene eseguito per più di un'ora.

  2. Per utilizzare questo modello, devi abilitare l'API datastore.googleapis.com.

  3. Assegna i ruoli obbligatori descritti nella sezione successiva.

Ruoli obbligatori

Per eseguire la migrazione dei dati da un database a un altro, assegna i seguenti ruoli. Potresti anche riuscire a ottenere le autorizzazioni richieste tramite i ruoli personalizzati o altri ruoli predefiniti:

  1. Per ottenere le autorizzazioni necessarie per creare un nuovo database e accedere ai dati Cloud Firestore, chiedi all'amministratore di concederti il ruolo IAM Proprietario di Cloud Datastore (roles/datastore.owner) nel tuo progetto.
  2. Per concedere al job Dataflow l'accesso in lettura e scrittura ai database Cloud Firestore, assegna all'account di servizio worker Dataflow (ad esempio, PROJECT_NUMBER-compute@) il ruolo IAM Utente di Cloud Datastore (roles/datastore.user) nel tuo progetto.

    Per saperne di più sulla sicurezza di Dataflow, consulta Sicurezza e autorizzazioni di Dataflow.

Per saperne di più sulla concessione dei ruoli IAM, consulta Gestire l'accesso a progetti, cartelle e organizzazioni.

1. Crea un nuovo database Firestore Enterprise Edition

Per eseguire la migrazione dei dati da un database Standard Edition a un database Enterprise Edition, devi prima creare il database di destinazione Enterprise Edition. Consulta Creare un database.

2. Esegui il modello Dataflow firestore-to-firestore

Configura ed esegui il job Dataflow con il modello firestore-to-firestore. I modelli supportano la migrazione dell'intero database o solo di gruppi di raccolte specifici.

Limitazioni

Tieni presente le seguenti limitazioni per il modello firestore-to-firestore Dataflow:

  • Il database di origine deve essere un database Standard Edition.
  • La migrazione legge i dati in un momento di lettura specifico. Ti suggeriamo di abilitare il recupero point-in-time (PITR) nel database di origine. Se PITR non è abilitato, i dati scadono dopo un'ora e questo potrebbe non essere sufficiente per completare la migrazione dei dati. PITR estende la conservazione dei dati a sette giorni.
  • Gli indici non vengono migrati.
  • Il job Dataflow non esegue la migrazione delle configurazioni del database, come le policy TTL (Time to Live), i backup, PITR e le chiavi di crittografia gestite dal cliente (CMEK).

    Devi configurare queste impostazioni nel nuovo database. Per migliorare la velocità della migrazione dei dati, attendi il completamento della migrazione per configurare TTL, backup e PITR nel database di destinazione.

Gli esempi seguenti mostrano come eseguire il modello utilizzando il Google Cloud CLI.

Eseguire la migrazione di tutti i dati

Per eseguire la migrazione di tutti i dati, utilizza il seguente comando:

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"

Sostituisci quanto segue:

  • JOB_NAME: un nome per il job.
  • PROJECT: l'ID del tuo Google Cloud progetto.
  • REGION_NAME: laGoogle Cloud località in cui vuoi eseguire il job Dataflow. Utilizza una località vicina ai tuoi database.
  • VERSION: la versione del modello che vuoi utilizzare. Puoi utilizzare i seguenti valori:

  • SOURCE_PROJECT_ID: l'ID del progetto di origine Google Cloud che contiene il database Firestore Standard Edition.

  • SOURCE_DATABASE_ID: l'ID del database Cloud Firestore di origine.

  • DESTINATION_PROJECT_ID: l'ID del progetto di destinazione Google Cloud per il nuovo database Cloud Firestore.

  • DESTINATION_DATABASE_ID: l'ID del database di destinazione Cloud Firestore.

  • READ_TIME: il timestamp per leggere i dati dal database di origine. Imposta un timestamp nel formato RFC 3339, con una granularità di minuti, ad esempio 2026-05-15T16:31:00.00Z.

    Il timestamp valido più recente dipende dalle impostazioni di recupero point-in-time (PITR) . Consulta Ottenere l'ora della versione più recente.

Eseguire la migrazione di gruppi di raccolte specifici

Per eseguire la migrazione solo di determinati gruppi di raccolte, utilizza il seguente comando:

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"

Sostituisci quanto segue:

  • JOB_NAME: un nome per il job.
  • PROJECT: l'ID del tuo Google Cloud progetto.
  • REGION_NAME: laGoogle Cloud località in cui vuoi eseguire il job Dataflow. Utilizza una località vicina ai tuoi database.
  • VERSION: la versione del modello che vuoi utilizzare. Puoi utilizzare i seguenti valori:

  • SOURCE_PROJECT_ID: l'ID del progetto Google Cloud di origine che contiene il database Firestore Standard Edition.

  • SOURCE_DATABASE_ID: l'ID del database Cloud Firestore di origine.

  • COLLECTION_GROUP_IDS: un elenco separato da virgole degli ID dei gruppi di raccolte di cui eseguire la migrazione.

    Le sottoraccolte non sono incluse in modo ricorsivo. Ad esempio, se specifichi il gruppo di raccolte users, la migrazione non includerà una sottoraccolta messages in /users/userid/messages, a meno che tu non specifichi anche il gruppo di raccolte messages.

  • DESTINATION_PROJECT_ID: l'ID del progetto di destinazione Google Cloud per il nuovo database Cloud Firestore.

  • DESTINATION_DATABASE_ID: l'ID del database di destinazione Cloud Firestore.

  • READ_TIME: il timestamp per leggere i dati dal database di origine. Imposta un timestamp nel formato RFC 3339, con una granularità di minuti, ad esempio 2026-05-15T16:31:00.00Z.

    Il timestamp valido più recente dipende dalle impostazioni di recupero point-in-time (PITR) . Consulta Ottenere l'ora della versione più recente.

3. Configura il database

Il job firestore-to-firestore esegue la migrazione solo dei dati. Gli indici e le altre impostazioni del database non vengono migrati. Oltre alla migrazione dei dati, valuta la possibilità di configurare quanto segue nel nuovo database:

Dopo aver configurato il database, puoi continuare a testare l'app con il nuovo database. Per una migrazione completa, aggiorna le applicazioni in modo che utilizzino il nuovo database.

Risoluzione dei problemi

Per i database di grandi dimensioni, il job potrebbe non riuscire se legge troppi dati contemporaneamente. Per risolvere il problema:

Passaggi successivi