Backup e ripristino dei dati

Questa pagina descrive come utilizzare la funzionalità di backup pianificati della modalità Datastore. Utilizza i backup per proteggere i dati dal danneggiamento a livello di applicazione o dall'eliminazione accidentale.

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 tutte le configurazioni di dati e indici in quel momento. Un backup non contiene policy Time to Live del database. Un backup si trova nella stessa posizione 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.

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

La creazione o la conservazione dei backup non influisce sul rendimento delle letture o scritture nel database live.

Costi

Quando utilizzi i backup, ti viene addebitato quanto segue:

  • La quantità di spazio di archiviazione utilizzata 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

Verifica che la fatturazione sia attivata per il tuo progetto Google Cloud . Scopri come verificare se la fatturazione è abilitata per un progetto.

Ruoli obbligatori

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

  • roles/datastore.owner: Accesso completo al database 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

Creare e gestire pianificazioni di backup

Gli esempi riportati di seguito mostrano come configurare una pianificazione di 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 giorno in cui viene eseguito il backup. I backup vengono eseguiti ogni giorno in orari diversi. Per le pianificazioni dei backup settimanali, puoi configurare il giorno della settimana in cui eseguire un backup.

Crea una pianificazione del backup

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

Crea una pianificazione di backup giornaliera

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

    Vai a Database

  2. Nell'elenco dei database, individua la riga relativa al database. Nella colonna Backup pianificati, fai clic su Visualizza backup o Modifica impostazioni, a seconda che esista o meno una pianificazione del backup.
  3. Fai clic su Modifica per modificare le impostazioni di ripristino di emergenza.
  4. Seleziona la casella di controllo Giornaliero, imposta il periodo di conservazione e poi fai clic su Salva.
gcloud
Per creare una pianificazione del backup per un database, utilizza il comando gcloud firestore backups schedules create. Per creare una pianificazione di backup giornaliera, imposta il flag --recurrence su daily:
gcloud 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 fino a 14 settimane (14w).
Interfaccia a riga di comando di Firebase
Per creare una pianificazione del backup per un database, utilizza il o il comando firebase firestore:databases:backups:schedules. Per creare una pianificazione di backup giornaliera, 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 fino a 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 alla risorsa per una risorsa Terraform di tipo google_firestore_database.
  • RETENTION_PERIOD_SECONDS: imposta questo valore in secondi, seguito da "s". Il valore massimo è 8467200s (14 settimane).

Crea una pianificazione di backup settimanale

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

    Vai a Database

  2. Nell'elenco dei database, individua la riga relativa al database. Nella colonna Backup pianificati, fai clic su Visualizza backup o Modifica impostazioni, a seconda che esista o meno una pianificazione del backup.
  3. Fai clic su Modifica per modificare le impostazioni di ripristino di emergenza.
  4. Seleziona la casella di controllo Settimanale, seleziona un giorno di backup, imposta il periodo di conservazione e poi fai clic su Salva.
gcloud
Per creare una pianificazione settimanale del backup, imposta il flag --recurrence su weekly:
gcloud 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 fino a 14 settimane (14w).
  • DAY: il giorno della settimana in cui eseguire il backup. Imposta uno dei seguenti valori:
    • SUN per domenica
    • MON per lunedì
    • TUE per martedì
    • WED per mercoledì
    • THU per giovedì
    • FRI per venerdì
    • SAT per sabato
Interfaccia a riga di comando di Firebase
Per creare una pianificazione settimanale del backup, imposta il flag --recurrence su WEEKLY:
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 fino a 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 settimanale dei backup, 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 alla risorsa per una risorsa Terraform di tipo google_firestore_database.
  • RETENTION_PERIOD_SECONDS: imposta questo 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

Elenco delle pianificazioni di backup

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

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

    Vai a Database

  2. Nell'elenco dei database, individua la riga relativa al database. Nella colonna Backup pianificati, fai clic su Visualizza backup o Modifica impostazioni, a seconda che esista o meno una pianificazione del backup.
  3. Viene visualizzata la pagina Ripristino di emergenza. Questa pagina descrive le pianificazioni di backup ed elenca i backup disponibili.
gcloud
Utilizza il comando gcloud firestore backups schedules list.
gcloud firestore backups schedules list \
--database='DATABASE_ID'
Sostituisci DATABASE_ID con l'ID del database. Utilizza '(default)' per il database predefinito.
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 di backup, utilizza uno dei seguenti metodi:

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

    Vai a Database

  2. Nell'elenco dei database, individua la riga relativa al database. Nella colonna Backup pianificati, fai clic su Visualizza backup o Modifica impostazioni, a seconda che esista o meno una pianificazione del backup.
  3. Viene visualizzata la pagina Ripristino di emergenza. Questa pagina descrive le pianificazioni di 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 di backup. Puoi visualizzare l'ID di ogni pianificazione di backup quando elenco tutte le pianificazioni di backup.

Aggiorna una pianificazione del backup

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

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

    Vai a Database

  2. Nell'elenco dei database, individua la riga relativa al database. Nella colonna Backup pianificati, fai clic su Visualizza backup o Modifica impostazioni.
  3. Fai clic su Modifica per modificare le impostazioni di ripristino di emergenza.
  4. Modifica le impostazioni della pianificazione del backup e poi fai clic su Salva.
gcloud
Utilizza il comando gcloud firestore backups schedules update:
gcloud firestore backups schedules update \
--database='DATABASE_ID' \
--backup-schedule=BACKUP_SCHEDULE_ID \
--retention=RETENTION_PERIOD
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 di backup. Puoi visualizzare l'ID di ogni pianificazione di backup quando elenco tutte le pianificazioni di backup.
  • RETENTION_PERIOD: imposta questo valore fino a 14 settimane (14w).
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 elenca tutte le pianificazioni di backup.
  • RETENTION_PERIOD: imposta questo valore fino a 14 settimane (14w).

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

Eliminare una pianificazione del backup

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

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

    Vai a Database

  2. Nell'elenco dei database, individua la riga relativa al database. Nella colonna Backup pianificati, fai clic su Visualizza backup o Modifica impostazioni, a seconda che esista o meno una pianificazione del backup.
  3. Fai clic su Modifica per modificare le impostazioni di ripristino di emergenza.
  4. Modifica le impostazioni della pianificazione del backup e poi fai clic su Salva.
gcloud
Utilizza il comando gcloud firestore backups schedules delete:
gcloud firestore backups schedules delete \
--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 di backup. Puoi visualizzare l'ID di ogni pianificazione di backup quando elenco tutte le pianificazioni di backup.
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 in base a questa pianificazione. Puoi attendere la scadenza dopo il periodo di conservazione oppure eliminare manualmente un backup. Per farlo, vedi Eliminare il backup.

Gestisci backup

Elenco dei backup

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

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

    Vai a Database

  2. Nell'elenco dei database, individua la riga relativa al database. Nella colonna Backup pianificati, fai clic su Visualizza backup o Modifica impostazioni, a seconda che esista o meno una pianificazione del backup.
  3. Fai clic su Modifica per modificare le impostazioni di ripristino di emergenza.
  4. Modifica le impostazioni della pianificazione del backup e poi fai clic su Salva.
gcloud
Utilizza il comando gcloud firestore backups list:
gcloud firestore backups list \
--format="table(name, database, state)"
Il flag --format="table(name, database, state)" formatta l'output in un formato più leggibile. Per elencare solo i backup di una posizione specifica, utilizza il flag --location:
gcloud firestore backups list \
--location=LOCATION \
--format="table(name, database, state)"
Sostituisci LOCATION con il nome di una località in modalità Datastore.
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 posizione specifica, utilizza il flag --location:
firebase firestore:backups:list \
--location=LOCATION
Sostituisci LOCATION con il nome di una località in modalità Datastore.

Descrivere un backup

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

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

    Vai a Database

  2. Nell'elenco dei database, individua la riga relativa al database. Nella colonna Backup pianificati, fai clic su Visualizza backup o Modifica impostazioni, a seconda che esista o meno una pianificazione del backup.
  3. Viene visualizzata la pagina Ripristino di emergenza. Questa pagina descrive le pianificazioni di backup ed elenca i backup disponibili.
gcloud
Utilizza il comando gcloud firestore backups describe:
gcloud firestore backups describe \
--location=LOCATION \
--backup=BACKUP_ID
Sostituisci quanto segue:
  • LOCATION: la posizione del database.
  • BACKUP_ID: l'ID di un backup. Puoi visualizzare l'ID di ogni backup quando elenco tutti i backup.
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 elenco tutti i backup.

Elimina backup

Per eliminare un backup, utilizza uno dei seguenti metodi.

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

    Vai a Database

  2. Nell'elenco dei database, individua la riga relativa al database. Nella colonna Backup pianificati, fai clic su Visualizza backup o Modifica impostazioni, a seconda che esista o meno una pianificazione del backup. Viene visualizzata la pagina Ripristino di emergenza. Questa pagina descrive le pianificazioni di backup ed elenca i backup disponibili.
  3. Nella tabella Backup, individua la riga di un backup e nella colonna Azioni, fai clic su Mostra altro(). Fai clic su Elimina.
  4. Conferma l'azione utilizzando il campo di testo e fai clic su Elimina.
gcloud
Utilizza il comando gcloud firestore backups delete:
gcloud firestore backups delete \
--location=LOCATION \
--backup=BACKUP_ID
Sostituisci quanto segue:
  • LOCATION: la posizione del database.
  • BACKUP_ID: l'ID di un backup. Puoi visualizzare l'ID di ogni backup quando elenco tutti i backup.
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 elenca tutti i backup.

Ripristinare i dati da un backup del database

Un'operazione di ripristino scrive i dati di un backup in un nuovo database in modalità Datastore.

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

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

    Vai a Database

  2. Nell'elenco dei database, individua la riga relativa al database. Nella colonna Backup pianificati, fai clic su Visualizza backup o Modifica impostazioni, a seconda che esista o meno una pianificazione del backup. Viene visualizzata la pagina Ripristino di emergenza. Questa pagina descrive le pianificazioni di backup ed elenca i backup disponibili.
  3. Nella tabella Backup, trova la riga di un backup e nella colonna Azioni, fai clic su Mostra altro(). Fai clic su Ripristina con Cloud Shell.
  4. Si apre il riquadro Cloud Shell con un comando gcloud CLI per 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 a breve nell'elenco dei database. L'operazione di ripristino richiederà un po' di tempo e deve essere completata prima che il database sia accessibile.

gcloud
Utilizza il comando gcloud firestore databases restore:
gcloud firestore databases restore \
--source-backup=projects/PROJECT_ID/locations/LOCATION/backups/BACKUP_ID \
--destination-database='DATABASE_ID \
--tags=[KEY=VALUE]'
Sostituisci quanto segue:
  • PROJECT_ID: il tuo ID progetto.
  • LOCATION: la posizione del backup del database e la posizione del nuovo database creato per i dati ripristinati.
  • BACKUP_ID: l'ID di un backup. Puoi visualizzare l'ID di ogni backup quando elenco tutti i backup.
  • DATABASE_ID: un ID database per il nuovo database. Non puoi utilizzare un ID database già in uso.
  • [KEY=VALUE]: un elenco facoltativo di coppie KEY=VALUE di tag da associare. Ad esempio:
    • --tags=123/environment=production,123/costCenter=marketing
    • --tags=tagKeys/333=tagValues/444
La modalità del database corrisponderà a quella del backup. L'output includerà i componenti metadata, name e response:
metadata:
  '@type': type.googleapis.com/google.firestore.admin.v1.RestoreDatabaseMetadata
  backup: projects/PROJECT_ID/locations/LOCATION/backups/BACKUP_ID
  database: projects/PROJECT_ID/databases/DATABASE_ID
  operationState: PROCESSING
  progressPercentage:
    completedWork: '20'
    estimatedWork: '100'
  startTime: '2023-12-06T14:20:17.398325Z'
name: projects/PROJECT_ID/databases/DATABASE_ID/operations/operation_uuid
response:
  '@type': type.googleapis.com/google.firestore.admin.v1.Database
  createTime: '2023-12-06T14:20:17.398325Z'
  name: projects/PROJECT_ID/databases/DATABASE_ID
  ...
Il campo metadata include un componente progressPercentage, che descrive in dettaglio lo stato di avanzamento stimato del ripristino finora, e un operationState che specifica lo stato generale del ripristino. Per recuperare nuovamente queste informazioni, utilizza gcloud firestore operations list:
gcloud firestore operations list --database=DATABASE_ID
oppure, utilizzando il campo name dell'output descritto sopra, con gcloud firestore operations describe:
gcloud firestore operations describe OPERATION_NAME
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 elenco tutti i backup.
  • DATABASE_ID: un ID database per il nuovo database. Non puoi utilizzare un ID database già in uso.
La modalità del database corrisponderà a quella del backup.