Backup e ripristino dei dati

Pertinente per Firestore Standard edition e Firestore Enterprise edition.

In questa pagina viene descritto come utilizzare la funzionalità di backup pianificati di Cloud Firestore. Utilizza i backup per proteggere i dati da danneggiamenti a livello di applicazione o da eliminazioni accidentali.

I backup consentono di configurare pianificazioni di backup per eseguire backup giornalieri o settimanali del database specificato. Puoi quindi utilizzare questi backup per ripristinare i dati in un nuovo database.

Informazioni sui backup

Un backup è una copia coerente del database in un determinato momento. Il backup contiene tutti i dati e le configurazioni degli indici in quel momento.

Un backup non contiene le policy di durata (TTL) del database. Un backup si trova nella stessa località del database di origine.

I backup hanno un periodo di conservazione configurabile e vengono archiviati fino alla scadenza del periodo di conservazione o fino a quando non li elimini. L'eliminazione del database di origine non comporta l'eliminazione automatica dei backup correlati.

Cloud Firestore archivia i metadati relativi ai backup e alle pianificazioni dei backup relativi a un database. Cloud Firestore conserva questi metadati finché tutti i backup del database non scadono o non vengono eliminati.

La creazione o la conservazione dei backup non influisce sulle prestazioni delle letture o delle scritture nel database attivo.

Costi

Quando utilizzi i backup, ti vengono addebitati i seguenti costi:

  • La quantità di spazio di archiviazione utilizzato da ogni backup.
  • Per un'operazione di ripristino, ti verranno addebitati costi in base alle dimensioni del backup.

Per ulteriori dettagli e tariffe esatte, consulta la pagina Prezzi.

Prima di iniziare

Questa funzionalità richiede il piano tariffario Blaze.

Ruoli obbligatori

Per ottenere le autorizzazioni necessarie per gestire i backup e le pianificazioni dei backup, chiedi all'amministratore di concederti uno o più dei seguenti ruoli Identity and Access Management:

  • roles/datastore.owner: accesso completo al database Cloud Firestore
  • roles/datastore.backupsAdmin: accesso in lettura e scrittura ai backup
  • roles/datastore.backupsViewer: accesso in lettura ai backup
  • roles/datastore.backupSchedulesAdmin: accesso in lettura e scrittura alle pianificazioni dei backup
  • roles/datastore.backupSchedulesViewer: accesso in lettura alle pianificazioni dei backup
  • roles/datastore.restoreAdmin: autorizzazioni per avviare le operazioni di ripristino

Crea e gestisci pianificazioni di backup

I seguenti esempi mostrano come configurare una pianificazione dei backup. Per ogni database, puoi configurare fino a una pianificazione di backup giornaliera e fino a una pianificazione di backup settimanale. Non puoi configurare più pianificazioni di backup settimanali per giorni diversi della settimana.

Non puoi configurare l'ora esatta del backup. I backup vengono eseguiti in orari diversi ogni giorno. Per le pianificazioni dei backup settimanali, puoi configurare il giorno della settimana in cui eseguire un backup.

Crea una pianificazione dei backup

Utilizza uno dei seguenti strumenti per creare una pianificazione dei backup.

Crea una pianificazione dei backup giornalieri

Console Google Cloud
  1. Nella console Google Cloud, vai alla pagina Database.

    Vai a Database

  2. Nell'elenco dei database, individua la riga corrispondente al database. Nella colonna Backup pianificati, fai clic su Visualizza backup o Modifica impostazioni, a seconda che esista o meno una pianificazione dei backup.
  3. Fai clic su Modifica per modificare le impostazioni di disaster recovery.
  4. Seleziona la casella di controllo Giornaliero, imposta il periodo di conservazione e poi fai clic su Salva.
Interfaccia a riga di comando di Firebase
Per creare una pianificazione dei backup per un database, utilizza il comando firebase firestore:databases:backups:schedules:create. Per creare una pianificazione dei backup giornalieri, imposta il flag --recurrence su DAILY:
firebase firestore:backups:schedules:create \
--database 'DATABASE_ID' \
--recurrence 'DAILY' \
--retention RETENTION_PERIOD

Sostituisci quanto segue:

  • DATABASE_ID: l'ID del database di cui eseguire il backup. Imposta su '(default)' per il database predefinito.
  • RETENTION_PERIOD: imposta questo valore su un massimo di 14 settimane (14w).
Terraform
Per creare una pianificazione dei backup giornalieri, crea una risorsa google_firestore_backup_schedule.
resource "google_firestore_backup_schedule" "daily-backup" {
  project  = PROJECT_ID
  database = DATABASE_ID

  retention = RETENTION_PERIOD_SECONDS

  daily_recurrence {}
}

Sostituisci quanto segue:

  • PROJECT_ID: l'ID del progetto.
  • DATABASE_ID: l'ID del database di cui eseguire il backup. Imposta su '(default)' per il database predefinito.
  • Puoi anche utilizzare un riferimento risorsa a una risorsa Terraform di tipo google_firestore_database.
  • RETENTION_PERIOD_SECONDS: imposta un valore in secondi, seguito da "s". Il valore massimo è 8467200s (14 settimane).

Crea una pianificazione dei backup settimanali

Console Google Cloud
  1. Nella console Google Cloud, vai alla pagina Database.

    Vai a Database

  2. Nell'elenco dei database, individua la riga corrispondente al database. Nella colonna Backup pianificati, fai clic su Visualizza backup o Modifica impostazioni, a seconda che esista o meno una pianificazione dei backup.
  3. Fai clic su Modifica per modificare le impostazioni di disaster recovery.
  4. Seleziona la casella di controllo Settimanale, seleziona un giorno di backup, imposta il periodo di conservazione e poi fai clic su Salva.
Interfaccia a riga di comando di Firebase
Per creare una pianificazione dei backup settimanali, imposta il flag --recurrence su WEEKLY e scegli --day-of-week:
firebase firestore:backups:schedules:create \
--database 'DATABASE_ID' \
--recurrence 'WEEKLY' \
--retention RETENTION_PERIOD
--day-of-week DAY
Sostituisci quanto segue:
  • DATABASE_ID: l'ID del database di cui eseguire il backup. Imposta su '(default)' per il database predefinito.
  • RETENTION_PERIOD: imposta questo valore su un massimo di 14 settimane (14w).
  • DAY: il giorno della settimana in cui eseguire il backup. Imposta uno dei seguenti valori:
    • SUNDAY per domenica
    • MONDAY per lunedì
    • TUESDAY per martedì
    • WEDNESDAY per mercoledì
    • THURSDAY per giovedì
    • FRIDAY per venerdì
    • SATURDAY per sabato
Terraform
Per creare una pianificazione dei backup settimanali, crea una risorsa google_firestore_backup_schedule.
resource "google_firestore_backup_schedule" "weekly-backup" {
  project  = PROJECT_ID
  database = DATABASE_ID

  retention = RETENTION_PERIOD_SECONDS

  weekly_recurrence {
    day = DAY
  }
}

Sostituisci quanto segue:

  • PROJECT_ID: l'ID del progetto.
  • DATABASE_ID: l'ID del database di cui eseguire il backup. Imposta su '(default)' per il database predefinito.
  • Puoi anche utilizzare un riferimento risorsa a una risorsa Terraform di tipo google_firestore_database.
  • RETENTION_PERIOD_SECONDS: imposta un valore in secondi, seguito da "s". Il valore massimo è 8467200s (14 settimane).
  • DAY: il giorno della settimana in cui eseguire il backup. Imposta uno dei seguenti valori:
    • SUNDAY per domenica
    • MONDAY per lunedì
    • TUESDAY per martedì
    • WEDNESDAY per mercoledì
    • THURSDAY per giovedì
    • FRIDAY per venerdì
    • SATURDAY per sabato

Elenca le pianificazioni di backup

Per elencare tutte le pianificazioni di backup di un database, utilizza uno dei seguenti metodi:

Console Google Cloud
  1. Nella console Google Cloud, vai alla pagina Database.

    Vai a Database

  2. Nell'elenco dei database, individua la riga corrispondente al database. Nella colonna Backup pianificati, fai clic su Visualizza backup o Modifica impostazioni, a seconda che esista o meno una pianificazione dei backup.
  3. Viene visualizzata la pagina Disaster recovery. Questa pagina descrive le pianificazioni dei backup ed elenca i backup disponibili.
Interfaccia a riga di comando di Firebase
Utilizza il comando firebase firestore:backups:schedules:list.
firebase firestore:backups:schedules:list \
--database 'DATABASE_ID'
Sostituisci DATABASE_ID con l'ID del database. Utilizza '(default)' per il database predefinito.

Descrivi la pianificazione del backup

Per recuperare informazioni su una pianificazione del backup, utilizza uno dei seguenti metodi:

Console Google Cloud
  1. Nella console Google Cloud, vai alla pagina Database.

    Vai a Database

  2. Nell'elenco dei database, individua la riga corrispondente al database. Nella colonna Backup pianificati, fai clic su Visualizza backup o Modifica impostazioni, a seconda che esista o meno una pianificazione dei backup.
  3. Viene visualizzata la pagina Disaster recovery. Questa pagina descrive le pianificazioni dei backup ed elenca i backup disponibili.
gcloud
Utilizza il comando gcloud firestore backups schedules describe:
gcloud firestore backups schedules describe \
--database='DATABASE_ID' \
--backup-schedule=BACKUP_SCHEDULE_ID
Sostituisci quanto segue:
  • DATABASE_ID: l'ID del database di cui eseguire il backup. Imposta su '(default)' per il database predefinito.
  • BACKUP_SCHEDULE_ID: l'ID di una pianificazione dei backup. Puoi visualizzare l'ID di ogni pianificazione di backup quando elenti tutte le pianificazioni di backup.

Aggiorna una pianificazione dei backup

Per aggiornare il periodo di conservazione di una pianificazione di backup, utilizza uno dei seguenti metodi:

Console Google Cloud
  1. Nella console Google Cloud, vai alla pagina Database.

    Vai a Database

  2. Nell'elenco dei database, individua la riga corrispondente al database. Nella colonna Backup pianificati, fai clic su Visualizza backup o Modifica impostazioni.
  3. Fai clic su Modifica per modificare le impostazioni di disaster recovery.
  4. Modifica le impostazioni della pianificazione del backup e poi fai clic su Salva.
Interfaccia a riga di comando di Firebase
Utilizza il comando firebase firestore:backups:schedules:update:
firebase firestore:backups:schedules:update \
BACKUP_SCHEDULE \
--retention RETENTION_PERIOD
Sostituisci quanto segue:
  • BACKUP_SCHEDULE: il nome completo della risorsa di una pianificazione di backup. Puoi visualizzare il nome di ogni pianificazione di backup quando elenti tutte le pianificazioni di backup.
  • RETENTION_PERIOD: imposta questo valore su un massimo di 14 settimane (14w).

Puoi aggiornare il periodo di conservazione di una pianificazione dei backup, ma non la sua ricorrenza. Se hai bisogno di una pianificazione dei backup con una ricorrenza diversa, elimina la pianificazione precedente se non è più necessaria e creane una nuova con la ricorrenza che preferisci.

Elimina una pianificazione del backup

Per eliminare una pianificazione dei backup, utilizza uno dei seguenti metodi:

Console Google Cloud
  1. Nella console Google Cloud, vai alla pagina Database.

    Vai a Database

  2. Nell'elenco dei database, individua la riga corrispondente al database. Nella colonna Backup pianificati, fai clic su Visualizza backup o Modifica impostazioni, a seconda che esista o meno una pianificazione dei backup.
  3. Fai clic su Modifica per modificare le impostazioni di disaster recovery.
  4. Modifica le impostazioni della pianificazione del backup e poi fai clic su Salva.
Interfaccia a riga di comando di Firebase
Utilizza il comando firebase firestore:backups:schedules:delete:
firebase firestore:backups:schedules:delete \
BACKUP_SCHEDULE
Sostituisci quanto segue:

Tieni presente che l'eliminazione di una pianificazione del backup non comporta l'eliminazione dei backup già creati da questa pianificazione. Puoi attendere che scadano dopo il periodo di conservazione oppure, per eliminare manualmente un backup, consulta Elimina backup.

Gestisci backup

Elenco dei backup

Per elencare i backup disponibili, utilizza uno dei seguenti metodi:

Console Google Cloud
  1. Nella console Google Cloud, vai alla pagina Database.

    Vai a Database

  2. Nell'elenco dei database, individua la riga corrispondente al database. Nella colonna Backup pianificati, fai clic su Visualizza backup o Modifica impostazioni, a seconda che esista o meno una pianificazione dei backup.
  3. Fai clic su Modifica per modificare le impostazioni di disaster recovery.
  4. Modifica le impostazioni della pianificazione del backup e poi fai clic su Salva.
Interfaccia a riga di comando di Firebase
Utilizza il comando firebase firestore:backups:list:
firebase firestore:backups:list
Per elencare solo i backup di una località specifica, utilizza il flag --location:
firebase firestore:backups:list \
--location=LOCATION
Sostituisci LOCATION con il nome di una località Cloud Firestore.

Descrivi un backup

Per visualizzare i dettagli di un backup, utilizza uno dei seguenti metodi:

Console Google Cloud
  1. Nella console Google Cloud, vai alla pagina Database.

    Vai a Database

  2. Nell'elenco dei database, individua la riga corrispondente al database. Nella colonna Backup pianificati, fai clic su Visualizza backup o Modifica impostazioni, a seconda che esista o meno una pianificazione dei backup.
  3. Viene visualizzata la pagina Disaster recovery. Questa pagina descrive le pianificazioni dei backup ed elenca i backup disponibili.
Interfaccia a riga di comando di Firebase
Utilizza il comando firebase firestore:backups:get:
firebase firestore:backups:get BACKUP
Sostituisci quanto segue:
  • BACKUP: il nome completo della risorsa di un backup. Puoi visualizzare il nome di ogni backup quando elenti tutti i backup.

Elimina backup

Per eliminare un backup, utilizza uno dei seguenti metodi.

Console Google Cloud
  1. Nella console Google Cloud, vai alla pagina Database.

    Vai a Database

  2. Nell'elenco dei database, individua la riga corrispondente al database. Nella colonna Backup pianificati, fai clic su Visualizza backup o Modifica impostazioni, a seconda che esista o meno una pianificazione dei backup. Viene visualizzata la pagina Disaster recovery. Questa pagina descrive le pianificazioni dei backup ed elenca i backup disponibili.
  3. Nella tabella Backup, individua la riga di un backup e, nella colonna Azioni, fai clic su Visualizza altro(). Fai clic su Elimina.
  4. Conferma l'azione utilizzando il campo di testo e fai clic su Elimina.
Interfaccia a riga di comando di Firebase
Utilizza il comando firebase firestore:backups:delete:
firebase firestore:backups:delete \
BACKUP
Sostituisci quanto segue:
  • BACKUP: il nome completo della risorsa di un backup. Puoi visualizzare il nome di ogni backup quando elenti tutti i backup.

Ripristina i dati da un backup del database

Un'operazione di ripristino scrive i dati di un backup in un nuovo database Cloud Firestore.

Per avviare un'operazione di ripristino, utilizza uno dei seguenti metodi:

Console Google Cloud
  1. Nella console Google Cloud, vai alla pagina Database.

    Vai a Database

  2. Nell'elenco dei database, individua la riga corrispondente al database. Nella colonna Backup pianificati, fai clic su Visualizza backup o Modifica impostazioni, a seconda che esista o meno una pianificazione dei backup. Viene visualizzata la pagina Disaster recovery. Questa pagina descrive le pianificazioni dei backup ed elenca i backup disponibili.
  3. Nella tabella Backup, trova la riga di un backup e nella colonna Azioni, fai clic su Visualizza altro(). Fai clic su Ripristina con Cloud Shell.
  4. Si apre il riquadro Cloud Shell con un comando gcloud CLI per eseguire il ripristino dal backup selezionato. Sostituisci ID_OF_NEW_DATABASE con un ID per il database ed esegui il comando.

    L'esecuzione del comando restituisce una risposta con ulteriori informazioni sull'operazione. Il database viene visualizzato nell'elenco dei database. L'operazione di ripristino richiederà un po' di tempo e deve essere completata prima che il database sia accessibile.

Interfaccia a riga di comando di Firebase
Utilizza il comando firebase firestore:databases:restore:
firebase firestore:databases:restore \
--backup 'BACKUP' \
--database 'DATABASE_ID'
Sostituisci quanto segue:
  • BACKUP: il nome completo della risorsa di un backup. Puoi visualizzare il nome di ogni backup quando elenti tutti i backup.
  • DATABASE_ID: un ID database per il nuovo database. Non puoi utilizzare un ID database già in uso.

Limitazioni

Un'operazione di ripristino non ripristina i dati di ricerca App Engine o le entità blob da un database (default). Questi dati sono validi solo per il database (default) e non saranno utili se esegui il ripristino da (default) a un database che non supporta questi dati, pertanto sono esclusi dai backup.

Cosa fare dopo il ripristino

Al termine del ripristino, devi procedere nel seguente modo:

  • Verifica che al nuovo database siano applicati i controlli IAM appropriati.

  • Se in precedenza hai utilizzato policy TTL, applicale nuovamente al nuovo database. Le policy TTL non sono incluse nei backup e non vengono applicate automaticamente ai database ripristinati.