Eseguire un ripristino in loco

Pertinente per Firestore Standard edition e Firestore Enterprise edition.

Questa pagina descrive come ripristinare i dati di un backup in un database con lo stesso nome del database di origine del backup. Prima di leggere questa pagina, devi acquisire familiarità con l'articolo Esegui il backup e il ripristino dei dati.

Ripristino in loco

Un ripristino in loco consente di ripristinare un database da un backup nel database di origine che ha creato il backup mentre il database originale esiste ancora. Un ripristino in loco ti aiuta a evitare di dover reindirizzare il traffico o creare un database con un nome diverso.

Un'operazione di ripristino deve utilizzare un database di destinazione che non esiste già. Tuttavia, puoi simulare un ripristino in loco eliminando il database di origine e ripristinandolo da un backup in un nuovo database con lo stesso nome del database di origine.

Esegui un ripristino in loco

Per eseguire un ripristino in loco, segui questi passaggi:

  1. Identifica il backup da utilizzare per l'operazione di ripristino.
  2. Elimina il database esistente.
  3. Utilizza il backup e l'ID del database eliminato per completare l'operazione di ripristino.
Attenzione: se la tua app utilizza una libreria client Cloud Firestore in modalità Datastore e i tuoi client utilizzano una cache offline, un ripristino in loco potrebbe trasferire le scritture nel database ripristinato anziché ignorarle. Questa situazione può verificarsi se il client connesso al database eliminato va offline e, mentre è offline, la cache accumula scritture nel momento in cui esegui un ripristino in loco.

Prima di iniziare

Ti consigliamo di completare i seguenti passaggi prima di avviare il processo di ripristino in loco.

Recupera e copia la configurazione dell'indice del database. Utilizza la configurazione dell'indice per ricreare gli indici dopo aver completato l'operazione di ripristino in loco. Utilizza i seguenti comandi per recuperare la configurazione dell'indice del tuo database:

  • Utilizza gcloud firestore indexes composite list per recuperare un elenco di indici composti:

        gcloud firestore indexes composite list --database=DATABASE_ID
    

    Sostituisci DATABASE_ID con l'ID del tuo database.

  • Utilizza gcloud firestore indexes fields list per recuperare un elenco di esenzioni dell'indice a campo singolo (integrato).

        gcloud firestore indexes fields list --database=DATABASE_ID
    

Esegui un ripristino in loco

Completa i seguenti passaggi per eseguire un'operazione di ripristino in loco. Questo processo richiede un tempo di inattività tra il momento in cui elimini il database e il completamento dell'operazione di ripristino.

Una volta avviata un'operazione di ripristino, non puoi annullarla e devi attendere il suo completamento. L'operazione di ripristino occupa immediatamente l'ID database utilizzato nell'operazione.

  1. Utilizza il comando gcloud firestore backups list per identificare il backup da utilizzare per l'operazione di ripristino e prendi nota del nome della risorsa. Il nome della risorsa utilizza il seguente formato:

        projects/PROJECT_ID/locations/LOCATION/backups/BACKUP_ID
    
  2. Utilizza il comando gcloud firestore databases delete per eliminare il database esistente:

        gcloud firestore databases delete --database='DATABASE_ID'
    

    Sostituisci DATABASE_ID con l'ID del database.

  3. Attendi almeno 5 minuti dopo l'eliminazione del database affinché l'ID database torni disponibile. Avvia un'operazione di ripristino utilizzando il comando gcloud firestore databases restore:

    gcloud firestore databases restore \
    --source-backup=projects/PROJECT_ID/locations/LOCATION/backups/BACKUP_ID \
    --destination-database='DATABASE_ID'
    

    Sostituisci DATABASE_ID con l'ID del database.

Passaggi successivi