Eseguire la migrazione dalla versione Standard alla versione Enterprise

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

  • Il firestore-to-firestore modello Dataflow. Il servizio Dataflow ti consente di creare pipeline di dati e il modello firestore-to-firestore crea una pipeline batch tra i database 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.

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 modello Dataflow firestore-to-firestore.

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. 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 i ruoli personalizzati o altri ruoli predefiniti:

  1. Per ottenere le autorizzazioni necessarie per creare un nuovo database e accedere ai dati di Firestore, chiedi all'amministratore di concederti il ruolo Cloud Datastore Owner (roles/datastore.owner) Identity and Access Management (IAM) per il tuo progetto.
  2. Per concedere al job Dataflow l'accesso in lettura e scrittura ai database Firestore, assegna all'account di servizio worker Dataflow (ad esempio, PROJECT_NUMBER-compute@developer.gserviceaccount.com) il ruolo Cloud Datastore User (roles/datastore.user) IAM per il 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 versione Enterprise

Per eseguire la migrazione dei dati da un database versione Standard a un database versione Enterprise, devi prima creare il database di destinazione versione Enterprise. 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 Dataflow firestore-to-firestore:

  • Il database di origine deve essere un database versione Standard.
  • La migrazione legge i dati in un momento di lettura specifico. Ti consigliamo 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.
  • La migrazione degli indici non viene eseguita.
  • Il job Dataflow non esegue la migrazione delle configurazioni del database, come le policy durata (TTL), 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 Google Cloud CLI.

Esegui 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: la Google 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 che contiene il database Firestore versione Standard. Google Cloud

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

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

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

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

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

Esegui 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: la Google 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 che contiene il database Firestore versione Standard. Google Cloud

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

  • COLLECTION_GROUP_IDS: un elenco separato da virgole degli ID dei gruppo 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 per il nuovo database Firestore. Google Cloud

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

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

    Il primo timestamp valido 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. La migrazione degli indici e di altre impostazioni del database non viene eseguita. 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