Eseguire il backup e ripristinare i dati

Questa pagina descrive come utilizzare la funzionalità di backup pianificati di Cloud Firestore. Utilizza i backup per proteggere i tuoi dati dal danneggiamento dei dati a livello di applicazione o dall'eliminazione accidentale dei dati.

I backup consentono di configurare le pianificazioni di backup per eseguire backup giornalieri o settimanali del database specificato. È quindi possibile 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 il tempo del database per attivare le policy . Un backup risiede 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 all'eliminazione del backup. L'eliminazione del database di origine non elimina automaticamente i backup correlati.

Cloud Firestore archivia metadati relativi ai backup e pianificazioni di backup relative a un database. Cloud Firestore conserva questi metadati fino alla scadenza o all'eliminazione di tutti i backup del database.

La creazione o la conservazione dei backup non influisce sulle prestazioni di lettura o scrittura nel database attivo.

Costi

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

  • La quantità di spazio di archiviazione utilizzata da ciascun backup.
  • Per un'operazione di ripristino, il costo viene addebitato in base alla dimensione del backup.

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

Prima di iniziare

Questa funzionalità richiede il piano tariffario Blaze .

Ruoli richiesti

Per ottenere le autorizzazioni necessarie per gestire i backup e le pianificazioni di backup, chiedi al tuo amministratore di concederti uno o più dei seguenti ruoli di gestione delle identità e degli accessi:

  • roles/datastore.owner : accesso completo al database Cloud Firestore
  • Sono disponibili anche i seguenti ruoli, ma non sono visibili nella console di Google Cloud Platform. Utilizza la CLI di Google Cloud per assegnare questi ruoli:

    • 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 di backup
    • roles/datastore.backupSchedulesViewer : accesso in lettura alle pianificazioni di backup
    • roles/datastore.restoreAdmin : autorizzazioni per avviare operazioni di ripristino

Creare e gestire pianificazioni di backup

Gli esempi seguenti dimostrano come impostare una pianificazione di backup. Per ciascun database è possibile configurare fino a una pianificazione di backup giornaliera e fino a una pianificazione di backup settimanale. Non è possibile configurare più pianificazioni di backup settimanali per diversi giorni della settimana.

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

Creare una pianificazione di backup

Per creare una pianificazione di backup per un database, utilizzare il comando gcloud alpha firestore backups schedules create .

Creare un programma di backup giornaliero

Per creare una pianificazione di backup giornaliera, imposta il flag --recurrence su daily :

gcloud alpha 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. Impostato su (default) per il database predefinito.
  • RETENTION_PERIOD : per una ricorrenza di backup daily , impostarlo su un valore fino a 7 giorni ( 7d ). Se imposti una ricorrenza di backup weekly , impostala su un valore massimo di 14 settimane ( 14w ).

Creare un programma di backup settimanale

Per creare una pianificazione di backup settimanale, imposta il flag --recurrence su weekly :

gcloud alpha 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. Impostato su (default) per il database predefinito.
  • RETENTION_PERIOD : per una ricorrenza di backup weekly , impostarlo su un valore fino a 14 settimane ( 14w ).
  • DAY : il giorno della settimana in cui eseguire il backup. Impostato su uno dei seguenti:
    • SUN per la domenica
    • MON per lunedì
    • TUE per martedì
    • WED per mercoledì
    • THU per giovedì
    • FRI per venerdì
    • SAT per sabato

Elenca le pianificazioni di backup

Per elencare tutte le pianificazioni di backup per un database, utilizzare il comando gcloud alpha firestore backups schedules list . Questo comando restituisce informazioni su tutte le pianificazioni di backup.

gcloud alpha firestore backups schedules list \
--database='DATABASE_ID'

Sostituisci DATABASE_ID con l'ID del database. Utilizzare (default) per il database predefinito.

Descrivere la pianificazione del backup

Per recuperare informazioni su una pianificazione di backup, utilizzare il comando gcloud alpha firestore backups schedules describe :

gcloud alpha 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. Impostato su (default) per il database predefinito.
  • BACKUP_SCHEDULE_ID : l'ID di una pianificazione di backup. È possibile visualizzare l'ID di ciascuna pianificazione di backup quando si elencano tutte le pianificazioni di backup .

Aggiorna una pianificazione di backup

Per aggiornare il periodo di conservazione di una pianificazione di backup, utilizzare il comando gcloud alpha firestore backups schedules update :

gcloud alpha 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. Impostato su (default) per il database predefinito.
  • BACKUP_SCHEDULE_ID : l'ID di una pianificazione di backup. È possibile visualizzare l'ID di ciascuna pianificazione di backup quando si elencano tutte le pianificazioni di backup .
  • RETENTION_PERIOD : se imposti una ricorrenza di backup daily , impostala su un valore fino a 7 giorni ( 7d ). Se imposti una ricorrenza di backup weekly , impostala su un valore massimo di 14 settimane ( 14w ).

Elimina una pianificazione di backup

Per eliminare una pianificazione di backup, utilizzare il comando gcloud alpha firestore backups schedules delete :

gcloud alpha 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. Impostato su (default) per il database predefinito.
  • BACKUP_SCHEDULE_ID : l'ID di una pianificazione di backup. È possibile visualizzare l'ID di ciascuna pianificazione di backup quando si elencano tutte le pianificazioni di backup .

Tieni presente che l'eliminazione di una pianificazione di backup non eliminerà i backup già creati da questa pianificazione. Puoi attendere che scadano dopo il periodo di conservazione oppure eliminare manualmente un backup, vedi Elimina backup .

Gestisci i backup

Elenca i backup

Per elencare i backup disponibili, utilizza il comando gcloud alpha firestore backups list :

gcloud alpha firestore backups list \
--format="table(name, database, state)"

Il --format="table(name, database, state)" formatta l'output in un formato più leggibile.

Per elencare solo i backup da una posizione specifica, utilizzare il flag --location :

gcloud alpha firestore backups list \
--location=LOCATION \
--format="table(name, database, state)"

Sostituisci LOCATION con il nome di una posizione Cloud Firestore.

Descrivi un backup

Per visualizzare i dettagli su un backup, utilizza il comando gcloud alpha firestore backups describe :

gcloud alpha firestore backups describe \
--location=LOCATION \
--backup=BACKUP_ID
  • LOCATION : la posizione del database.
  • BACKUP_ID : l'ID di un backup. È possibile visualizzare l'ID di ciascun backup quando si elencano tutti i backup .

Elimina backup

Per eliminare un backup, utilizza il comando gcloud alpha firestore backups delete :

gcloud alpha firestore backups delete \
--location=LOCATION \
--backup=BACKUP_ID
  • LOCATION : la posizione del database.
  • BACKUP_ID : l'ID di un backup. È possibile visualizzare l'ID di ciascun backup quando si elencano tutti i backup .

Ripristinare i dati da un backup del database

Un'operazione di ripristino scrive i dati da un backup in un nuovo database Cloud Firestore. Per iniziare un'operazione di ripristino, utilizzare il comando gcloud alpha firestore databases restore :

gcloud alpha firestore databases restore \
--source-backup=projects/PROJECT_ID/locations/LOCATION/backups/BACKUP_ID \
--destination-database='DATABASE_ID'
  • 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. È possibile visualizzare l'ID di ciascun backup quando si elencano tutti i backup .
  • DATABASE_ID : un ID database per il nuovo database. Non è possibile utilizzare un ID database già in uso.

L'output includerà metadata , name e componenti 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 l'avanzamento stimato del ripristino fino a quel momento, 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 dall'output descritto sopra, con gcloud firestore operations describe :

gcloud firestore operations describe OPERATION_NAME