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-firestoremodello Dataflow. Il servizio Dataflow ti consente di creare pipeline di dati e il modellofirestore-to-firestorecrea 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
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.
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:
- 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. -
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:latestper utilizzare la versione più recente del modello, disponibile nella cartazione principale non datata nel bucket: gs://dataflow-templates-REGION_NAME/latest/- il nome della versione, ad esempio
2023-09-12-00_RC00, per utilizzare una versione specifica di modello, che si trova nidificata nella rispettiva cartella principale datata nel bucket— gs://dataflow-templates-REGION_NAME/
SOURCE_PROJECT_ID: l'ID del progetto di origine che contiene il database Firestore versione Standard. Google CloudSOURCE_DATABASE_ID: l'ID del database Firestore di origine.DESTINATION_PROJECT_ID: l'ID del progetto di destinazione per il nuovo database Firestore. Google CloudDESTINATION_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 esempio2026-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:latestper utilizzare la versione più recente del modello, disponibile nella cartella principale non datata nel bucket: gs://dataflow-templates-REGION_NAME/latest/- il nome della versione, ad esempio
2023-09-12-00_RC00, per utilizzare una versione specifica di modello, che si trova nidificata nella rispettiva cartella principale datata nel bucket— gs://dataflow-templates-REGION_NAME/
SOURCE_PROJECT_ID: l'ID del progetto di origine che contiene il database Firestore versione Standard. Google CloudSOURCE_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 sottoraccoltamessagesin/users/userid/messages, a meno che tu non specifichi anche il gruppo di raccoltemessages.DESTINATION_PROJECT_ID: l'ID del progetto di destinazione per il nuovo database Firestore. Google CloudDESTINATION_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 esempio2026-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:
Indici: i database Firestore versione Enterprise non richiedono rigorosamente gli indici per eseguire le query e non creano indici automatici per impostazione predefinita. Consulta quanto segue per creare indici per le tue query:
- Panoramica degli indici di Firestore versione Enterprise.
- Ottimizzare il rendimento delle query con gli indici.
- Puoi utilizzare l'interfaccia a riga di comando di Firebase per esportare gli indici ed eseguirne il deployment nel nuovo database.
- Utilizza Query Insights per identificare le query che puoi ottimizzare con un indice.
TTL: crea policy TTL.
Backup: configura i backup.
PITR: abilita PITR.
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:
Aumenta il
maxNumWorkersvalore.
Passaggi successivi
- Scopri di più sull'esecuzione di query sui dati con le operazioni della pipeline.
- Scopri come ottimizzare le query in Firestore versione Enterprise.
- Scopri come scalare un database versione Enterprise.