Questa pagina descrive come utilizzare la funzionalità di backup pianificati in modalità Datastore. Utilizza i backup per proteggere i dati da danni a livello di applicazione o dall'eliminazione accidentale dei dati.
I backup consentono di configurare pianificazioni dei backup in modo da 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 i criteri di durata 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 elimini il backup. L'eliminazione del database di origine non elimina automaticamente i backup correlati.
Firestore archivia i metadati relativi ai backup e alle pianificazioni di backup relativi a un database. Firestore conserva questi metadati fino alla scadenza o all'eliminazione di tutti i backup per il database.
La creazione o la conservazione dei backup non influisce sulle prestazioni delle operazioni di lettura o scrittura nel database in tempo reale.
Costi
Quando utilizzi i backup, ti viene addebitato quanto segue:
- La quantità di spazio di archiviazione utilizzato da ogni backup.
- Per un'operazione di ripristino, l'addebito avviene in base alle dimensioni del backup.
Per ulteriori dettagli e le 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 dei backup, chiedi all'amministratore di concederti uno o più dei seguenti ruoli di Identity and Access Management:
roles/datastore.owner
: accesso completo al database FirestoreAnche i seguenti ruoli sono disponibili, ma non sono visibili nella console Google Cloud. Utilizza Google Cloud CLI per assegnare questi ruoli:
roles/datastore.backupsAdmin
: accesso in lettura e scrittura ai backuproles/datastore.backupsViewer
: accesso in lettura ai backuproles/datastore.backupSchedulesAdmin
: accesso in lettura e scrittura alle pianificazioni dei backuproles/datastore.backupSchedulesViewer
: accesso in lettura alle pianificazioni dei backuproles/datastore.restoreAdmin
: autorizzazioni per avviare operazioni di ripristino
Crea e gestisci pianificazioni dei backup
Gli esempi riportati di seguito mostrano come configurare una pianificazione del backup. Per ogni database, puoi configurare fino a una pianificazione del backup giornaliera e fino a una pianificazione del backup settimanale. Non puoi configurare più pianificazioni di backup settimanali per giorni della settimana diversi.
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 per eseguire il backup.
Crea una pianificazione del backup
Per creare una pianificazione del backup per un database, utilizza il comando gcloud alpha firestore backups schedules create
o il comando firebase firestore:databases:backups:schedules
.
Crea una pianificazione del backup giornaliero
gcloud
Per creare una pianificazione del backup giornaliero, 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. Imposta su
'(default)'
per il database predefinito. - RETENTION_PERIOD: imposta questo valore su un valore massimo di 14 settimane (
14w
).
interfaccia a riga di comando di Firebase
Per creare una pianificazione del backup giornaliero, 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 valore massimo di 14 settimane (
14w
).
Terraform
Per creare una pianificazione del backup giornaliero, crea una risorsagoogle_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 - RETENTION_PERIOD_SECONDS: imposta questo valore su un valore espresso in secondi, seguito da "s". Il valore massimo è
8467200s
(14 settimane).
google_firestore_database
.
Crea una pianificazione del backup settimanale
gcloud
Per creare una pianificazione del 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=DAYSostituisci 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 valore massimo di 14 settimane (
14w
). - DAY: il giorno della settimana in cui eseguire il backup. Imposta uno dei seguenti valori:
SUN
per domenicaMON
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 del backup settimanale, imposta il flag--recurrence
su WEEKLY
:
firebase firestore:backups:schedules:create \ --database 'DATABASE_ID' \ --recurrence 'WEEKLY' \ --retention RETENTION_PERIOD --day-of-week DAYSostituisci 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 valore massimo di 14 settimane (
14w
). - DAY: il giorno della settimana in cui eseguire il backup. Imposta uno dei seguenti valori:
SUNDAY
per domenicaMONDAY
per lunedìTUESDAY
per martedìWEDNESDAY
per mercoledìTHURSDAY
per giovedìFRIDAY
per venerdìSATURDAY
per sabato
Terraform
Per creare una pianificazione del backup settimanale, crea una risorsagoogle_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 - RETENTION_PERIOD_SECONDS: imposta questo valore su un valore espresso 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 domenicaMONDAY
per lunedìTUESDAY
per martedìWEDNESDAY
per mercoledìTHURSDAY
per giovedìFRIDAY
per venerdìSATURDAY
per sabato
google_firestore_database
.
Elenca pianificazioni dei backup
Per elencare tutte le pianificazioni dei backup per un database, utilizza uno dei seguenti metodi:
gcloud
Utilizza il comandogcloud alpha firestore backups schedules list
.
gcloud alpha firestore backups schedules list \ --database='DATABASE_ID'Sostituisci DATABASE_ID con l'ID del database. Utilizza
'(default)'
come database predefinito.
interfaccia a riga di comando di Firebase
Usa il comandofirebase firestore:backups:schedules:list
.
firebase firestore:backups:schedules:list \ --database 'DATABASE_ID'Sostituisci DATABASE_ID con l'ID del database. Utilizza
'(default)'
come database predefinito.
Descrivi la pianificazione del backup
Per recuperare informazioni su una pianificazione del backup, utilizza uno dei seguenti metodi:
gcloud
Utilizza il comandogcloud alpha firestore backups schedules describe
:
gcloud alpha firestore backups schedules describe \ --database='DATABASE_ID' \ --backup-schedule=BACKUP_SCHEDULE_IDSostituisci 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 del backup. Puoi visualizzare l'ID di ogni pianificazione del backup quando elenchi tutte le pianificazioni dei backup.
Aggiorna una pianificazione del backup
Per aggiornare il periodo di conservazione di una pianificazione di backup, utilizza uno dei seguenti metodi:
gcloud
Utilizza il comandogcloud alpha firestore backups schedules update
:
gcloud alpha firestore backups schedules update \ --database='DATABASE_ID' \ --backup-schedule=BACKUP_SCHEDULE_ID \ --retention=RETENTION_PERIODSostituisci 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 del backup. Puoi visualizzare l'ID di ogni pianificazione del backup quando elenchi tutte le pianificazioni dei backup.
- RETENTION_PERIOD: imposta questo valore su un valore massimo di 14 settimane (
14w
).
interfaccia a riga di comando di Firebase
Utilizza il comandofirebase firestore:backups:schedules:update
:
firebase firestore:backups:schedules:update \ BACKUP_SCHEDULE \ --retention RETENTION_PERIODSostituisci quanto segue:
- BACKUP_SCHEDULE: il nome completo della risorsa di una pianificazione del backup. Puoi visualizzare il nome di ogni pianificazione del backup quando elenchi tutte le pianificazioni dei backup.
- RETENTION_PERIOD: imposta questo valore su un valore massimo di 14 settimane (
14w
).
Puoi aggiornare il periodo di conservazione di una pianificazione del backup, ma non puoi aggiornarne la ricorrenza. Se hai bisogno di una pianificazione del backup con una ricorrenza diversa, elimina la pianificazione del backup precedente se non è più necessaria e crea una nuova pianificazione del backup con la ricorrenza desiderata.
Elimina una pianificazione del backup
Per eliminare una pianificazione del backup, utilizza uno dei seguenti metodi:
gcloud
Utilizza il comandogcloud alpha firestore backups schedules delete
:
gcloud alpha firestore backups schedules delete \ --database='DATABASE_ID' \ --backup-schedule=BACKUP_SCHEDULE_IDSostituisci 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 del backup. Puoi visualizzare l'ID di ogni pianificazione del backup quando elenchi tutte le pianificazioni dei backup.
interfaccia a riga di comando di Firebase
Utilizza il comandofirebase firestore:backups:schedules:delete
:
firebase firestore:backups:schedules:delete \ BACKUP_SCHEDULESostituisci quanto segue:
- BACKUP_SCHEDULE: il nome completo della risorsa di una pianificazione del backup. Puoi visualizzare il nome di ogni pianificazione del backup quando elenchi tutte le pianificazioni dei backup.
Tieni presente che l'eliminazione di una pianificazione del backup non comporterà 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 Eliminare il backup.
Gestisci backup
Elenco dei backup
Per elencare i backup disponibili, utilizza uno dei seguenti metodi:
gcloud
Usa il comandogcloud alpha firestore backups list
:
gcloud alpha 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 da una località specifica, utilizza il flag --location
:
gcloud alpha 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 comandofirebase firestore:backups:list
:
firebase firestore:backups:listPer elencare solo i backup da una località specifica, utilizza il flag
--location
:
firebase firestore:backups:list \ --location=LOCATIONSostituisci
LOCATION
con il nome di una posizione in modalità Datastore.
Descrivi un backup
Per visualizzare i dettagli di un backup, utilizza uno dei seguenti metodi:
gcloud
Utilizza il comandogcloud alpha firestore backups describe
:
gcloud alpha firestore backups describe \ --location=LOCATION \ --backup=BACKUP_IDSostituisci quanto segue:
- LOCATION: la posizione del database.
- BACKUP_ID: l'ID di un backup. Puoi visualizzare l'ID di ogni backup quando elenchi tutti i backup.
interfaccia a riga di comando di Firebase
Utilizza il comandofirebase firestore:backups:get
:
firebase firestore:backups:get BACKUPSostituisci quanto segue:
- BACKUP: il nome completo della risorsa di un backup. Puoi visualizzare il nome di ciascun backup nell'elenco di tutti i backup.
Elimina backup
gcloud
Utilizza il comandogcloud alpha firestore backups delete
:
gcloud alpha firestore backups delete \ --location=LOCATION \ --backup=BACKUP_IDSostituisci quanto segue:
- LOCATION: la posizione del database.
- BACKUP_ID: l'ID di un backup. Puoi visualizzare l'ID di ogni backup quando elenchi tutti i backup.
interfaccia a riga di comando di Firebase
Utilizza il comandofirebase firestore:backups:delete
:
firebase firestore:backups:delete \ BACKUPSostituisci quanto segue:
- BACKUP: il nome completo della risorsa di un backup. Puoi visualizzare il nome di ogni backup quando elenchi tutti i backup.
Ripristina dati da un backup del database
Un'operazione di ripristino scrive i dati da un backup in un nuovo database in modalità Datastore.
Per avviare un'operazione di ripristino, utilizza uno dei seguenti metodi:
gcloud
Utilizza il comandogcloud alpha firestore databases restore
:
gcloud alpha firestore databases restore \ --source-backup=projects/PROJECT_ID/locations/LOCATION/backups/BACKUP_ID \ --destination-database='DATABASE_ID'Sostituisci quanto segue:
- PROJECT_ID: l'ID del tuo progetto.
- LOCATION: la posizione del backup del database e quella del nuovo database creato per i dati ripristinati.
- BACKUP_ID: l'ID di un backup. Puoi visualizzare l'ID di ogni backup quando elenchi tutti i backup.
- DATABASE_ID: un ID per il nuovo database. Non puoi utilizzare un ID database già in uso.
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 indica in dettaglio l'avanzamento stimato del ripristino fino a questo momento, e un operationState
che specifica lo stato complessivo del ripristino.
Per recuperare di nuovo queste informazioni, usa gcloud firestore operations list
:
gcloud firestore operations list --database=DATABASE_IDoppure, 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 comandofirebase 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 ciascun backup nell'elenco di tutti i backup.
- DATABASE_ID: un ID per il nuovo database. Non puoi utilizzare un ID database già in uso.