Panoramica dei backup

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 modificati 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, nella stessa regione e nello stesso 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 che tu crei una pianificazione di backup con una frequenza di 0 7 * * * UTC o ogni giorno alle 07:00 UTC. Ciò significa che per ogni backup, il versionTime è impostato sulle ore 07:00 UTC e il createTime è un timestamp all'interno della finestra di quattro ore tra le ore 07:00 UTC e le ore 11:00 UTC.

Per saperne di più 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 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 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, vedi 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, nella stessa regione e nello stesso progetto del database di origine.

Un backup contiene le seguenti informazioni del database al 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 di pianificazione del backup (completo o incrementale) e la frequenza con cui Spanner crea i 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 del 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 solo Google-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 ha 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 più basso tra i seguenti:
      • retention_duration + 28 giorni
      • retention_duration + (creation_interval*14)
  • Copia di backup: quando copi un backup incrementale, Spanner copia anche tutti i backup precedenti della 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 della catena, anche se i backup copiati in precedenza esistono già nell'istanza di destinazione.

Per saperne di più sulla creazione di backup incrementali, consulta 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 durante la creazione dell'istanza 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.

La pianificazione di backup predefinita richiede 24 ore per diventare attiva e iniziare a creare backup.

Prima di eliminare un'istanza, devi eliminare tutti i backup al suo interno. Se crei ed elimini 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 predefiniti, 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 la versionTime 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 molto 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 pianificato completo Dimensione backup pianificato incrementale
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

Nell'arco di 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.

Confronto tra lo spazio di archiviazione di backup e lo spazio di archiviazione del database

Le dimensioni di archiviazione di un backup possono essere inferiori o superiori a quelle del database di origine al momento della creazione del backup.

Lo spazio di archiviazione di un backup può essere inferiore a quello del database perché il backup contiene una sola versione dei dati, mentre il database attivo può contenere più versioni dei dati a causa delle operazioni in corso. Anche le differenze nel formato dei dati e nella compressione possono comportare una dimensione del backup inferiore.

Al contrario, lo spazio di archiviazione di un backup può essere maggiore di quello del database, a seconda della situazione del database e del momento in cui esegui il backup.

Per motivi simili, quando ripristini un database da un backup, lo spazio di archiviazione del backup può essere maggiore di quello del database. Ciò può verificarsi se un grande insieme di dati è stato eliminato e compattato dopo l'esecuzione del backup. Pertanto, le dimensioni del backup dipendono dal momento in cui è stato eseguito il backup e dalle operazioni successive sul database.

Non esiste una formula per prevedere il rapporto esatto tra le dimensioni di un backup e il database attivo. Per un database con un elevato tasso di scrittura (un database attivo), il backup è probabilmente più piccolo del database attivo. Tuttavia, in alcune rare situazioni, le dimensioni del backup possono essere maggiori.

Come funziona la copia dei backup

Spanner ti consente di copiare un backup del tuo database Spanner da un'istanza a un'altra in un progetto o una regione diversa, per fornire funzionalità aggiuntive 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 progetto
  • INSTANCE_ID: l'ID istanza.
  • BACKUP_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 di backup ottimali in Spanner.

Prestazioni durante il backup

Quando esegue 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 potrebbe 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 della 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 nella 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
  • L'addebito 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. In questo modo, i costi di trasferimento dei dati vengono ridotti al minimo e viene garantita un'esperienza di backup rapida.

I backup vengono archiviati e fatturati separatamente. Lo spazio di archiviazione dei backup non influisce sulla fatturazione dello spazio di archiviazione del database o sui limiti di spazio di archiviazione del database. Per saperne di più, consulta anche Metriche di utilizzo dello spazio di archiviazione.

Per informazioni più complete sui costi di backup, consulta la pagina Prezzi di Spanner.

Passaggi successivi