Questo documento fornisce una panoramica dei backup di Spanner e delle pianificazioni dei backup.
Spanner ti consente di creare backup completi dei database on demand e backup completi o incrementali utilizzando una pianificazione di backup. I backup completi memorizzano tutti i dati di un database, mentre i backup incrementali contengono solo i dati che sono cambiati rispetto a un backup precedente.
Puoi ripristinare i backup quando errori dell'operatore o dell'applicazione causano il danneggiamento logico dei dati.
I backup sono a disponibilità elevata, criptati e possono essere conservati per un massimo di un anno dalla data di creazione. Quando crei un backup, questo si trova nella stessa istanza, regione e progetto del database di origine. Se devi ripristinare il backup in una regione o in un progetto diverso per motivi di conformità o continuità operativa, puoi copiarlo in un'istanza in una regione o in un progetto separato.
Ogni backup ha un createTime
e un versionTime
associati. Il createTime
è il
timestamp in cui Spanner inizia a creare il backup.
Il versionTime
è il timestamp in cui vengono acquisiti i contenuti del database
nel backup. Il backup contiene una visualizzazione coerente del database al momento del
versionTime
.
Per i backup on demand, createTime
e versionTime
sono uguali per
impostazione predefinita. Se necessario, puoi specificare un versionTime
precedente durante la creazione
di un backup on demand se rientra nel
periodo di conservazione delle versioni
del database.
Per i backup pianificati, versionTime
è l'ora che scegli quando crei la pianificazione dei backup. Spanner inizia a creare il backup entro quattro ore
dall'versionTime
, quindi l'createTime
rientra in questo intervallo di quattro ore.
A differenza dei backup on demand, Spanner inizia a creare
il backup quando riceve la richiesta.
Ad esempio, supponiamo di creare una pianificazione di backup con una frequenza di
0 7 * * * UTC
o
ogni giorno alle 07:00 UTC. Ciò significa che per ogni backup, versionTime
è impostato sulle ore 07:00 UTC e createTime
è un timestamp all'interno
della finestra di quattro ore tra le ore 07:00 UTC e le ore 11:00 UTC.
Per ulteriori informazioni sull'utilizzo di createTime
e versionTime
tramite l'API,
consulta il riferimento API di backup.
Funzionalità principali
Coerenza dei dati: i backup di un database Spanner sono coerenti dal punto di vista transazionale ed esterno al momento della
versionTime
del backup.Replica: i backup si trovano nella stessa istanza del database di origine e vengono replicati nelle stesse località geografiche. Per le istanze regionali, il backup viene archiviato in ciascuna delle tre zone di lettura e scrittura. Per le istanze dual-region e multiregionali, il backup viene archiviato in tutte le zone che contengono una replica di lettura/scrittura o di sola lettura. Se devi archiviare il backup del tuo database in una regione o un progetto diverso, puoi copiare il backup completato dall'istanza di origine a un'istanza di destinazione che si trova in una regione o un progetto diverso. Per ulteriori informazioni, consulta la sezione Copiare un backup.
Scadenza automatica: tutti i backup hanno una data di scadenza specificata dall'utente che determina quando vengono eliminati automaticamente. Spanner elimina i backup scaduti in modo asincrono, quindi potrebbe verificarsi un ritardo tra la scadenza di un backup e la sua effettiva eliminazione.
Creazione del backup
Quando crei un backup, questo si trova nella stessa istanza, regione e progetto del database di origine.
Un backup contiene le seguenti informazioni del database al momento del
versionTime
del backup:
- Un backup completo contiene tutti i dati. Un backup incrementale contiene solo i dati modificati rispetto a un backup precedente.
- Informazioni sullo schema, inclusi nomi delle tabelle, campi, tipi di dati, indici secondari, modifiche in tempo reale e relazioni tra queste entità.
- Tutte le opzioni del database impostate con il comando
ALTER DATABASE SET OPTIONS
.
Un backup di Spanner non include le seguenti informazioni:
- Eventuali modifiche ai dati o allo schema dopo il
versionTime
. - Norme Identity and Access Management (IAM).
- Modifica i record di dati dello stream. Sebbene lo schema degli modifiche in tempo reale venga archiviato, i dati degli stream di modifiche devono essere trasmessi in streaming e utilizzati quasi contemporaneamente alle modifiche che descrivono.
Per garantire la coerenza esterna del backup, Spanner blocca
i contenuti del database a
versionTime
.
In questo modo, il sistema di garbage collection
non rimuove i valori dei dati pertinenti per la durata dell'operazione di backup. Quindi, ogni zona di lettura/scrittura e di sola lettura nell'istanza inizia
a copiare i dati in parallelo. Se una zona non è temporaneamente disponibile, il backup
non viene completato finché la zona non torna online. I backup sono
ripristinabili non appena l'operazione viene completata. Per le istanze multiregionali, tutte le zone di lettura/scrittura e di sola lettura in tutte le regioni devono completare le repliche di backup prima che il backup venga contrassegnato come ripristinabile.
Pianificazioni di backup
Spanner consente di pianificare backup completi o incrementali per i database. Un backup incrementale contiene solo i dati modificati rispetto a un backup precedente, mentre i backup completi memorizzano l'intero contenuto del database. Puoi specificare il tipo (completo o incrementale) e la frequenza di pianificazione del backup per Spanner per creare backup.
Una pianificazione del backup completo può creare un backup ogni 12 ore o più. Una pianificazione del backup incrementale può creare un backup ogni 4 ore o più.
Spanner offre backup incrementali per il tuo database tramite una pianificazione dei backup. Non puoi creare un backup incrementale on demand.
La creazione del backup inizia entro un intervallo di quattro ore dall'orario pianificato. Puoi avere un massimo di quattro pianificazioni di backup per database.
Backup incrementali
I backup incrementali formano catene tra i backup completi. Il primo backup creato da una pianificazione di backup incrementale è un backup completo. I backup consecutivi creati nella catena sono backup incrementali, ognuno dei quali contiene solo i dati modificati rispetto al backup precedente della catena.
Spanner consente fino a 13 backup incrementali per catena, oltre al backup completo iniziale. Una catena
è identificata dal valore incrementalBackupChainId
corrispondente.
Quando una catena raggiunge la lunghezza massima,
Spanner crea una nuova catena, a partire dal backup completo
iniziale.
In alcuni scenari, Spanner potrebbe creare una nuova catena prima che si verifichi la lunghezza massima della catena. Di seguito sono riportati alcuni scenari:
- Il backup completo meno recente è stato eseguito 28 o più giorni fa.
- Il backup più recente della catena viene eliminato.
- La pianificazione del backup incrementale viene modificata.
Ecco alcuni fattori che possono aiutarti a decidere se utilizzare i backup incrementali:
Crittografia: i backup incrementali supportano la crittografia utilizzando soloGoogle-owned and Google-managed encryption keys , anche se il database è criptato da una chiave di crittografia gestita dal cliente (CMEK).
Ripristino: il ripristino di un backup incrementale potrebbe richiedere più tempo rispetto al ripristino di un backup completo contenente gli stessi dati.
Eliminazione: se elimini un backup in una catena o se scade, Spanner potrebbe comunque conservarlo per supportare i backup più recenti nella catena, se esistenti. Spanner ha bisogno di tutti i backup precedenti della catena per ripristinare un backup incrementale. Per eliminare tutti i dati in una catena di backup, inclusi quelli scaduti o eliminati, elimina tutti i backup nella catena.
Conservazione: ogni pianificazione del backup prevede i seguenti termini che forniscono informazioni sulla pianificazione:
creation_interval
: rappresenta la frequenza di pianificazione specificata per la pianificazione di backup.retention_duration
: indica per quanto tempo vengono conservati i backup creati dalla pianificazione. Per una determinata catena, il backup completo meno recente viene conservato oltre la data di scadenza originale se è necessario per supportare i backup più recenti della catena. La durata totale della conservazione del backup completo è al massimo il valore inferiore tra i seguenti:retention_duration
+ 28 giorniretention_duration
+ (creation_interval
*14)
Copia di backup: quando copi un backup incrementale, Spanner copia anche tutti i backup precedenti nella catena necessari per ripristinare il backup copiato. Se l'istanza di destinazione contiene già una catena di backup che termina con un backup precedente copiato dalla stessa catena di origine, Spanner evita di creare copie ridondanti dei backup esistenti. Spanner copia solo il backup incrementale e tutti i backup precedenti non presenti nella catena di destinazione e li aggiunge alla catena esistente. Spanner ti addebita i costi in base allo spazio di archiviazione totale utilizzato.
Ad esempio, se configuri una pianificazione del backup incrementale giornaliero e copi l'ultimo backup ogni giorno, l'istanza di destinazione mantiene una catena di backup che rispecchia la catena di origine. Spanner non duplica i backup copiati in precedenza all'interno della catena durante le operazioni di copia successive.
Anche se Spanner mira a evitare copie ridondanti, in rare situazioni potrebbe essere necessario copiare tutti i backup precedenti nella catena, anche se i backup copiati in precedenza esistono già nell'istanza di destinazione.
Per saperne di più sulla creazione di backup incrementali, vedi Creare e gestire pianificazioni di backup.
Pianificazioni dei backup predefinite
Quando crei una nuova istanza Spanner, puoi specificare se vuoi che Spanner crei una pianificazione del backup predefinita per ogni nuovo database nell'istanza. La pianificazione del backup predefinita crea un backup completo ogni 24 ore. Questi backup hanno un periodo di conservazione di 7 giorni. Puoi modificare o eliminare la pianificazione del backup predefinita una volta creata.
Le pianificazioni di backup predefinite vengono attivate automaticamente per tutte le nuove istanze. Puoi attivare o disattivare le pianificazioni dei backup predefiniti in un'istanza quando la crei o modificandola in un secondo momento.
Puoi abilitare le pianificazioni dei backup predefiniti per le istanze esistenti. Tuttavia, le pianificazioni di backup predefinite non si applicano ai database esistenti nell'istanza. Le pianificazioni di backup predefinite si applicano solo ai nuovi database nell'istanza.
L'attivazione della pianificazione di backup predefinita richiede 24 ore prima di iniziare a creare i backup.
Prima di eliminare un'istanza, devi eliminare tutti i backup al suo interno. Se stai creando ed eliminando istanze a scopo di test, puoi eliminare la nuova istanza entro 24 ore per evitare di eliminare manualmente i relativi backup.
Per istruzioni su come attivare o disattivare le pianificazioni dei backup predefinite, vedi Modificare il tipo di pianificazione del backup predefinita.
Costi di archiviazione per backup completi e incrementali
Ogni backup di Spanner ha i seguenti campi che offrono informazioni sul consumo di spazio di archiviazione:
exclusiveSizeBytes
: mostra il numero di byte richiesti dal backup. Questa dimensione rappresenta quella fatturabile del backup.freeableSizeBytes
: mostra il numero di byte rilasciati se elimini il backup.oldestVersionTime
: mostra laversionTime
del backup completo meno recente nella catena, anche se il backup è scaduto. Puoi utilizzare questo campo per capire quali dati vengono archiviati.
I backup incrementali possono farti risparmiare sui costi di archiviazione. Un backup incrementale potrebbe
avere un campo exclusiveSizeBytes
significativamente più piccolo di un backup completo, in quanto deve memorizzare solo le
modifiche apportate dal backup precedente della catena.
L'aggiunta di questo valore di campo per ogni backup nella catena
riflette il numero totale di byte utilizzati dai
backup nella catena.
Un backup incrementale dipende da tutti i backup precedenti della stessa catena
per il ripristino.
Ciò significa che, se esiste un backup incrementale più recente, i dati di tutti i backup precedenti nella catena non possono essere eliminati dal sistema e il campo freeableSizeBytes
per tutti i backup precedenti nella stessa catena è zero.
Supponiamo di aver creato una pianificazione di backup completo e una pianificazione di backup incrementale per un database di 100 GB che aumenta di 10 GB al giorno. La tabella seguente mostra i possibili costi di archiviazione per queste pianificazioni di backup:
Giorno | Dimensione del backup completo pianificato | Dimensione backup incrementale pianificato |
---|---|---|
1 | 100 GB | 100 GB |
2 | 110 GB | 10 GB |
3 | 120 GB | 10 GB |
4 | 130 GB | 10 GB |
5 | 140 GB | 10 GB |
In 5 giorni, la pianificazione del backup completo utilizza 600 GB di spazio di archiviazione, mentre la pianificazione del backup incrementale utilizza circa 140 GB di spazio di archiviazione.
Per una pianificazione del backup incrementale, la dimensione del backup completo è la somma delle dimensioni
di tutti i backup della catena, fino a quel backup, e si riflette nel campo
sizeBytes
.
Come funziona la copia dei backup
Spanner ti consente di copiare un backup del tuo database Spanner da un'istanza a un'altra istanza in un progetto o una regione diversa, per fornire ulteriori funzionalità di protezione e conformità dei dati.
Non puoi copiare un backup se la regione di destinazione o di origine Google Cloud non è disponibile. Per proteggere i tuoi dati in caso di interruzione del servizio in una regione, devi copiare periodicamente i backup in una località al di fuori della regione interessata.
Il backup copiato ha le stesse funzionalità chiave del backup originale. Inoltre, puoi ripristinare un backup copiato nella stessa istanza del backup copiato per supportare casi d'uso di backup e ripristino tra regioni e progetti.
Dove vengono archiviati i backup di Spanner
I backup sono risorse in Spanner. Ogni risorsa di backup è organizzata nella stessa istanza del database di origine nella gerarchia delle risorse e ha un percorso della risorsa che utilizza il seguente formato:
projects/PROJECT_ID/instances/INSTANCE_ID/backups/BACKUP_NAME
Sostituisci quanto segue:
PROJECT_ID
: l'ID progettoINSTANCE_ID
: l'ID istanzaBACKUP_NAME
: il nome del backup.
Un backup continua a esistere anche dopo l'eliminazione del database di origine, ma non può sopravvivere all'istanza padre. Per evitare l'eliminazione accidentale dei backup, non puoi eliminare un'istanza Spanner se contiene backup. Se vuoi eliminare l'istanza, ti consigliamo di ripristinare il backup, quindi esportare il database ripristinato prima di eliminare il backup e l'istanza.
Crittografia
I backup di Spanner, come i database, vengono criptati daGoogle-owned and Google-managed encryption keys o da chiavi di crittografia gestite dal cliente (CMEK). Per impostazione predefinita, un backup utilizza la stessa configurazione di crittografia del database, ma puoi sostituire questo comportamento specificando una configurazione di crittografia diversa durante la creazione del backup. Se il backup è abilitato per CMEK, viene criptato utilizzando la versione principale della chiave KMS al momento della creazione del backup. Una volta creato il backup, la chiave e la relativa versione non possono essere modificate, anche se la chiave KMS viene ruotata. Per ulteriori informazioni, consulta Creare un backup abilitato per CMEK.
Un backup copiato utilizza la stessa configurazione di crittografia, ovvero Google-owned and Google-managed encryption keys o chiavi di crittografia gestite dal cliente (CMEK), come crittografia del backup di origine. Puoi ignorare questo comportamento specificando una configurazione di crittografia diversa durante la copia del backup. Se vuoi che il backup copiato venga criptato con CMEK durante la copia tra regioni, specifica la chiave Cloud KMS corrispondente alla regione di destinazione.
Puoi specificare la configurazione della crittografia quando crei o modifichi la pianificazione del backup. Se vuoi che la pianificazione del backup crei backup crittografati con chiavi CMEK, devi specificare il percorso della chiave.
I backup incrementali supportano la crittografia utilizzando solo Google-owned and Google-managed encryption keys, anche se il database è criptato da una chiave CMEK.
Prestazioni
Questa sezione descrive le prestazioni ottimali del backup in Spanner.
Prestazioni durante il backup
Quando esegui un backup, Spanner crea un job di backup per copiare i dati direttamente dal database all'archiviazione di backup e dimensiona questo job in base alle dimensioni del database. Questo job di backup non utilizza le risorse della CPU allocate all'istanza del database, pertanto non influisce sulle prestazioni dell'istanza. Inoltre, il carico di calcolo sull'istanza del database non influisce sulla velocità dell'operazione di backup. Per monitorare l'avanzamento e il completamento di un'operazione di backup, consulta Mostrare l'avanzamento del backup.
In genere, la maggior parte dei backup richiede 1-4 ore. Alcuni backup potrebbero richiedere più tempo a causa delle dimensioni o perché è presente una coda interna per le risorse. Se un backup richiede più tempo del solito quando non sono cambiati altri fattori, potrebbe essere dovuto a un ritardo nella pianificazione dell'attività di backup in una zona. A volte l'operazione può richiedere fino a 30 minuti. Ti consigliamo di non annullare e riavviare il backup, poiché è probabile che si verifichi lo stesso ritardo di pianificazione con la nuova operazione di backup.
Rendimento durante la copia di un backup
Il tempo necessario per copiare un backup dipende da fattori quali le dimensioni del backup di origine e la regione di destinazione scelta per il backup copiato. In genere, la maggior parte delle copie viene completata in 1-4 ore. Alcune copie potrebbero richiedere più tempo a seconda delle dimensioni del backup e della regione di destinazione. La copia di un backup non ha implicazioni sulle prestazioni dell'istanza o del database di origine. Puoi creare più copie simultanee del backup di origine in istanze di regioni diverse senza alcuna implicazione per il rendimento.
Quando copi un backup incrementale, Spanner copia anche tutti i backup precedenti nella catena necessari per ripristinare il backup copiato. Per migliorare le prestazioni, Spanner copia tutti i backup contemporaneamente anziché in sequenza. Spanner tenta anche di evitare di copiare i backup precedenti nella stessa catena, se possibile. Per ulteriori informazioni, consulta Backup incrementali.
Eliminare un backup
Quando elimini un backup incrementale, potresti non recuperare spazio di archiviazione se
sono presenti backup incrementali più recenti nella stessa catena.
I backup incrementali più recenti dipendono dai dati presenti nel backup incrementale eliminato e dai backup precedenti della catena. Spanner conserva i dati e rilascia lo spazio di archiviazione solo quando scadono tutti i backup incrementali più recenti. Il campo freeableSizeBytes
mostra la quantità di spazio di archiviazione che puoi
recuperare se elimini il backup.
Prezzi
La fatturazione si basa sulla quantità di spazio di archiviazione utilizzato dai backup per unità di tempo. La fatturazione inizia dopo il completamento dell'operazione di backup e continua fino all'eliminazione del backup. Un backup completato viene fatturato per un minimo di 24 ore. Se crei un backup e lo elimini subito dopo il completamento, ti vengono comunque addebitate 24 ore.
Una copia di un backup è soggetta agli stessi costi di archiviazione di un backup originale. Se crei una copia tra due istanze che occupano regioni diverse, si applicano i costi di trasferimento dei dati in uscita.
Ad esempio, se copi la configurazione dell'istanza multiregionale di origine nam7
nella configurazione dell'istanza multiregionale di destinazione nam-eur-asia3
, vengono applicati i seguenti addebiti:
- Nessun addebito per la regione
us-central1
sovrapposta - Nessun addebito per la regione testimone
us-central2
- Il costo per il trasferimento di dati tra continenti viene applicato due volte: una volta per ogni nuovo continente (Europa e Asia).
- Il costo per il trasferimento di dati tra regioni all'interno dello stesso continente viene applicato una volta
per
us-east1
- Il costo per il trasferimento di dati tra regioni all'interno dello stesso continente viene applicato una volta in Europa
Spanner ottimizza il processo di copia per ridurre al minimo il numero di trasferimenti tra regioni. Ciò consente di ridurre al minimo i costi di trasferimento dei dati e di fornire un'esperienza di backup con copia rapida.
I backup vengono archiviati e fatturati separatamente. Lo spazio di archiviazione dei backup non influisce sulla fatturazione dello spazio di archiviazione del database né sui limiti di spazio di archiviazione del database. Per ulteriori informazioni, vedi anche Metriche di utilizzo dello spazio di archiviazione.
Per informazioni più complete sui costi di backup, consulta i prezzi di Spanner.
Passaggi successivi
Per creare backup, consulta Creare backup.
Per gestire i backup, consulta Gestire i backup.