Eseguire la migrazione dalla versione Standard alla versione Enterprise

Per eseguire la migrazione dei dati da un database Firestore Standard a un database Firestore Enterprise, 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 che con Standard Edition.

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

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.

Esegui 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

Segui queste istruzioni per eseguire la migrazione dei dati con il modello firestore-to-firestore Dataflow.

Prima di iniziare

  1. Prima di iniziare 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 corrispondenza di un timestamp PITR. Se PITR è disattivato, il job non va a buon fine se viene eseguito per più di un'ora.

  2. Assegna i ruoli richiesti 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 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 (Identity and Access Management) Cloud Datastore Owner (roles/datastore.owner) nel progetto.
  2. Per concedere al job Dataflow l'accesso in lettura e scrittura ai tuoi database Cloud Firestore, assegna all'account di servizio worker Dataflow (ad esempio PROJECT_NUMBER-compute@) il ruolo IAM Utente Cloud Datastore (roles/datastore.user) nel tuo progetto.

    Per ulteriori informazioni sulla sicurezza di Dataflow, consulta Sicurezza e autorizzazioni di Dataflow.

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

1. Crea un nuovo database Firestore Enterprise Edition

Per eseguire la migrazione dei dati da un database della versione Standard a un database della versione Enterprise, devi prima creare il database di destinazione della versione Enterprise. Vedi Crea 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 presenti 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 specifico. Ti consigliamo di attivare il recupero point-in-time (PITR) nel database di origine. Se il PITR non è attivato, i dati scadono dopo un'ora e potrebbe non essere sufficiente per completare la migrazione dei dati. Il recupero point-in-time estende la conservazione dei dati a sette giorni.
  • La migrazione degli indici non viene eseguita.
  • Il job Dataflow non esegue la migrazione delle configurazioni del database come le policy di durata (TTL), i backup, il 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 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 progetto Google Cloud.
  • REGION_NAME: la posizione Google Cloud in cui vuoi eseguire il job Dataflow. Utilizza una posizione 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.

  • 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 Cloud Firestore di destinazione.

  • READ_TIME: il timestamp da cui leggere i dati dal database di origine. Impostato su un timestamp nel formato RFC 3339, con granularità al minuto, ad esempio 2026-05-15T16:31:00.00Z.

    Il timestamp valido meno recente dipende dalle impostazioni di recupero point-in-time (PITR). Consulta Recuperare l'ora della prima versione.

Esegui la migrazione dei gruppi di raccolte specificati

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 progetto Google Cloud.
  • REGION_NAME: la posizione Google Cloud in cui vuoi eseguire il job Dataflow. Utilizza una posizione 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.

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

  • COLLECTION_GROUP_IDS: un elenco separato da virgole degli ID dei gruppi di raccolta da migrare.

    Le sottoraccolte non sono incluse in modo ricorsivo. Ad esempio, se specifichi il gruppo di raccolta users, la migrazione non includerà una sottoraccolta messages in /users/userid/messages a meno che tu non specifichi anche il gruppo di raccolta 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 Cloud Firestore di destinazione.

  • READ_TIME: il timestamp da cui leggere i dati dal database di origine. Impostato su un timestamp nel formato RFC 3339, con granularità al minuto, ad esempio 2026-05-15T16:31:00.00Z.

    Il timestamp valido meno recente dipende dalle impostazioni di recupero point-in-time (PITR). Consulta Ottieni l'ora della prima versione.

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 questo problema:

Passaggi successivi