Spanner Omni ti consente di creare backup completi dei database on demand o utilizzando una pianificazione dei backup. I backup archiviano tutti i dati di un database. Puoi ripristinare i backup quando gli errori dell'operatore o dell'applicazione causano il danneggiamento logico dei dati.
Panoramica dei backup di Spanner Omni
I backup sono ad alta affidabilità e possono essere conservati per un massimo di un anno dalla data di creazione. A ogni backup sono associati un createTime e un versionTime. createTime è il timestamp di quando Spanner Omni inizia a creare il backup. versionTime è il timestamp in cui il backup acquisisce i contenuti del database. Il backup contiene una visualizzazione coerente del database al momento
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 del backup. Spanner Omni inizia a creare il backup entro quattro ore da versionTime, quindi createTime rientra in questa finestra di quattro ore. A differenza dei backup on demand, in cui Spanner Omni 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 (ogni giorno alle 07:00 UTC). Ciò significa che per ogni backup, versionTime è alle 07:00 UTC e createTime è un timestamp compreso nella finestra di quattro ore tra le 07:00 UTC e le 11:00 UTC.
I backup di Spanner Omni possono essere ripristinati solo nei deployment di Spanner Omni. Non puoi ripristinare un backup di Spanner gestito in Spanner Omni o un backup di Spanner Omni in Spanner gestito. Per trasferire i dati tra Spanner e Spanner Omni, utilizza i flussi di modifiche in tempo reale o esporta e importa i file Avro. Per saperne di più, consulta Replica i dati da Spanner a Spanner Omni e Importa ed esporta i dati.
Funzionalità principali
I backup di Spanner Omni offrono coerenza dei dati, replica esterna resiliente e scadenza automatica.
Coerenza dei dati: i backup di un database Spanner Omni sono coerenti dal punto di vista transazionale e con coerenza esterna al
versionTimedel backup.Replica: i file di backup vengono archiviati in un sistema di archiviazione esterno, al di fuori del deployment di Spanner Omni.
Scadenza automatica: tutti i backup hanno una data di scadenza specificata dall'utente che determina quando vengono eliminati. Spanner Omni elimina i backup scaduti in modo asincrono, pertanto potrebbe esserci un ritardo tra la scadenza di un backup e la sua effettiva eliminazione.
Unità di archiviazione esterna
Lo spazio di archiviazione esterno rappresenta lo spazio di archiviazione remoto che si trova all'esterno del deployment di Spanner Omni. Puoi configurare Amazon Simple Storage Service (Amazon S3), Cloud Storage o qualsiasi spazio di archiviazione compatibile con Amazon S3 come spazio di archiviazione esterno. Spanner Omni archivia i file di backup in questo spazio di archiviazione esterno.
Gestione dell'unità di archiviazione esterna
Gestisci lo spazio di archiviazione esterno creando, eliminando ed elencando le località di archiviazione per i tuoi backup.
Crea spazio di archiviazione esterno
Per creare lo spazio di archiviazione esterno Amazon S3, esegui questo comando:
spanner external-storages create EXTERNAL_STORAGE_ID \
--s3-bucket-name=BUCKET_NAME \
--s3-region=AWS_REGION \
--s3-assume-role-arn=ASSUME_ROLE_ARN
Crea spazio di archiviazione esterno Cloud Storage
Prima di configurare lo spazio di archiviazione esterno di Cloud Storage, assicurati di avere questi elementi:
- Un bucket Cloud Storage di destinazione nel tuo progetto Google Cloud .
- Un service account Google Cloud a cui è stato concesso il ruolo IAM (Identity and Access Management) Storage Object Admin (
roles/storage.objectAdmin) sul bucket di destinazione. Per saperne di più, consulta Ruoli IAM per Cloud Storage. - Credenziali di autenticazione configurate nel tuo ambiente Spanner Omni, ad esempio un file della chiave del account di servizio o credenziali scambiate tramite la federazione delle identità per i workload. Per saperne di più sull'autenticazione da ambienti esterni, consulta Configura la federazione delle identità per i workload con le VM AWS e Configura la federazione delle identità per i workload con Kubernetes.
Per registrare il bucket Cloud Storage come spazio di archiviazione esterno, esegui questo comando:
spanner external-storages create EXTERNAL_STORAGE_ID \
--gcs-bucket-name=BUCKET_NAME
Sostituisci quanto segue:
EXTERNAL_STORAGE_ID: un identificatore univoco per la configurazione dello spazio di archiviazione esterno, ad esempiogcp-gcs-backup-target.BUCKET_NAME: il nome del bucket Cloud Storage di destinazione.
Crea uno spazio di archiviazione esterno compatibile con Amazon S3
Per creare uno spazio di archiviazione esterno compatibile con Amazon S3, esegui questo comando:
spanner external-storages create EXTERNAL_STORAGE_ID \
--s3-compatible-bucket-name=BUCKET_NAME \
--s3-compatible-endpoint=ENDPOINT \
--s3-compatible-credential-file-path=FILE
Elimina spazio di archiviazione esterno
Per eliminare lo spazio di archiviazione esterno, assicurati innanzitutto che non siano presenti backup esistenti o in corso. Quindi, esegui il comando seguente:
spanner external-storages delete EXTERNAL_STORAGE_ID
Descrivi lo spazio di archiviazione esterno
Per ottenere informazioni sullo spazio di archiviazione esterno, esegui questo comando:
spanner external-storages describe EXTERNAL_STORAGE_ID
Elenca unità di archiviazione esterna
Per ottenere un elenco dello spazio di archiviazione esterno, esegui questo comando:
spanner external-storages list
Descrittore di backup
Un descrittore di backup rappresenta i metadati e i percorsi dei file di backup completati archiviati in uno spazio di archiviazione esterno.
spanner external-storages backup-descriptors list EXTERNAL_STORAGE_ID
Informazioni sul backup
Quando crei un backup, i metadati del backup vengono archiviati in Spanner Omni e i file di backup risiedono nello spazio di archiviazione esterno.
Un backup contiene le seguenti informazioni del database al momento
versionTime del backup:
Un backup completo contiene tutti i dati.
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 Omni non include le seguenti informazioni:
Eventuali modifiche ai dati o allo schema dopo il giorno
versionTime.Policy IAM.
Record di dati delle modifiche in tempo reale. Sebbene lo schema delle modifiche in tempo reale venga archiviato, i dati delle modifiche in tempo reale devono essere trasmessi in streaming e utilizzati all'incirca nello stesso momento delle modifiche che descrivono.
Per garantire la coerenza esterna del backup, Spanner Omni
blocca i contenuti del database in versionTime. In questo modo, il sistema di garbage collection non rimuove i valori dei dati pertinenti per la durata dell'operazione di backup.
Gestione dei backup
Per creare backup, devi disporre delle seguenti autorizzazioni. Chiedi all'amministratore di concederti i seguenti ruoli IAM su un deployment:
| Azione | Ruolo IAM |
|---|---|
| Creare, visualizzare, aggiornare ed eliminare i backup | roles/spanner.backupAdmin |
| Crea e visualizza i backup | roles/spanner.backupWriter |
Crea backup
Crea un backup on demand.
spanner backups create BACKUP_NAME \
--database=DATABASE_ID \
--retention-period=RETENTION_PERIOD \
--async
Elimina backup
Elimina i metadati e i file di backup.
spanner backups delete BACKUP_NAME
Descrivi il backup
Recupera le informazioni su un backup.
spanner backups describe BACKUP_NAME
Elenco dei backup
Elenca i backup Spanner Omni esistenti nel deployment.
spanner backups list
Aggiorna la scadenza del backup
Aggiorna la data di scadenza di un backup.
spanner backups update-metadata BACKUP_NAME \
--expiration-date=EXPIRATION_DATE
Importa backup
Per recuperare un database in un altro deployment Spanner Omni, ad esempio per il recupero tra deployment Spanner Omni o se elimini il deployment originale, puoi importare i backup se i file di backup rimangono nello spazio di archiviazione esterno:
Crea uno spazio di archiviazione esterno nel nuovo deployment che utilizzi lo stesso bucket Amazon S3 o bucket Cloud Storage del deployment originale, ad esempio:
spanner external-storages create EXTERNAL_STORAGE_ID \ --gcs-bucket-name=BUCKET_NAMEElenca i descrittori di backup nello spazio di archiviazione esterno:
spanner external-storages backup-descriptors list EXTERNAL_STORAGE_IDImporta i metadati di backup nel nuovo deployment:
spanner backups import BACKUP_NAME \ --external-storage=EXTERNAL_STORAGE_ID \ --backup-descriptor=BACKUP_DESCRIPTOR \ --retention-period=RETENTION_PERIODSostituisci quanto segue:
BACKUP_NAME: un nome per il backup importato.EXTERNAL_STORAGE_ID: l'ID della configurazione dello spazio di archiviazione esterno.BACKUP_DESCRIPTOR: l'ID descrittore restituito nel passaggio precedente.RETENTION_PERIOD: la durata di conservazione del backup, ad esempio24ho30d.
Dopo aver importato i metadati del backup, puoi ripristinare il backup in un nuovo database nel deployment. Per saperne di più, consulta Ripristina un backup di Spanner Omni.
Pianificazioni di backup
Spanner Omni ti consente di pianificare backup completi per i database. Puoi specificare la frequenza con cui Spanner Omni crea i backup nella pianificazione.
Una pianificazione dei backup completi crea backup ogni 12 ore o più. I backup vengono avviati entro un intervallo di 30 minuti dall'orario pianificato. Puoi avere un massimo di quattro pianificazioni di backup per database.
Gestione della pianificazione dei backup
Per creare e gestire le pianificazioni dei backup, devi disporre delle seguenti autorizzazioni. Chiedi all'amministratore di concederti i seguenti ruoli IAM sul deployment:
Crea, visualizza, aggiorna ed elimina le pianificazioni dei backup:
roles/spanner.backupAdminCrea e visualizza le pianificazioni di backup:
roles/spanner.backupWriter
Crea pianificazione del backup
Crea una nuova pianificazione dei backup per il database Spanner Omni.
spanner backup-schedules create SCHEDULE_ID \
--database=DATABASE_ID \
--retention-duration=RETENTION_DURATION \
--cron="CRONTAB_EXPRESSION"
Ottieni una pianificazione dei backup
Ottieni informazioni su una pianificazione di backup specifica.
spanner backup-schedules describe SCHEDULE_ID --database=DATABASE_ID
Elenca le pianificazioni di backup
Elenca tutte le pianificazioni di backup per un determinato database.
spanner backup-schedules list --database=DATABASE_ID
Aggiorna una pianificazione dei backup
Aggiorna le proprietà di una pianificazione di backup esistente.
spanner backup-schedules update SCHEDULE_ID \
--database=DATABASE_ID \
--retention-duration=RETENTION_DURATION \
--cron="CRONTAB_EXPRESSION"
Elimina una pianificazione del backup
Elimina una pianificazione di backup dal database.
spanner backup-schedules delete SCHEDULE_ID --database=DATABASE_ID
Imposta la policy di controllo dell'accesso IAM
Imposta la policy di controllo dell'accesso IAM per una pianificazione dei backup.
spanner backup-schedules set-iam-policy SCHEDULE_ID \
--database=DATABASE_ID \
policy.json
Ottieni la policy di controllo dell'accesso IAM
Recupera la policy di controllo dell'accesso IAM per una pianificazione dei backup.
spanner backup-schedules get-iam-policy SCHEDULE_ID --database=DATABASE_ID
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 alle dimensioni di archiviazione del database di origine al momento della creazione.
Lo spazio di archiviazione di un backup può essere inferiore a quello del database perché un backup contiene una sola versione dei dati, mentre il database attivo può contenere più versioni 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 dello stato del database e di quando crei il backup.
Per motivi simili, quando ripristini un database da un backup, lo spazio di archiviazione può essere maggiore di quello del database. Ciò potrebbe verificarsi se un set di dati di grandi dimensioni è stato eliminato e compattato dopo la creazione del backup. Pertanto, le dimensioni del backup dipendono dal momento in cui è stato creato e dalle operazioni successive sul database.
Non esiste una formula per prevedere le dimensioni di un backup rispetto al database attivo. Per un database con un tasso elevato di scritture (un database caldo), è probabile che il backup sia più piccolo del database attivo. Tuttavia, in alcune situazioni, le dimensioni del backup possono essere maggiori.