Spanner Omni ti consente di creare backup completi dei database on demand o utilizzando una pianificazione del backup. I backup archiviano tutti i dati di un database. Puoi ripristinare i backup quando errori dell'operatore o dell'applicazione causano il danneggiamento logico dei dati.
Panoramica del backup di Spanner Omni
I backup sono a disponibilità elevata e possono essere conservati per un massimo di un anno dalla data di creazione. Ogni backup ha un createTime e un versionTime associati. Il
createTime è il timestamp in cui 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 quando crei un backup on demand se rientra nel periodo di conservazione della versione del database.
Per i backup pianificati, versionTime è l'ora che scegli quando crei la pianificazione dei backup. Spanner Omni inizia a creare il backup
entro quattro ore dal versionTime, quindi il createTime rientra in questo
intervallo 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, l'versionTime è alle 07:00 UTC e il createTime è un timestamp all'interno della finestra di quattro ore tra le 07:00 UTC e le 11:00 UTC.
Funzionalità principali
I backup Spanner Omni garantiscono la coerenza dei dati, la replica esterna resiliente e la scadenza automatica.
Coerenza dei dati: i backup di un database Spanner Omni sono coerenti dal punto di vista transazionale ed esterno 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, quindi potrebbe esserci un ritardo tra il momento in cui un backup scade e il momento in cui viene effettivamente eliminato.
Unità di archiviazione esterna
L'archiviazione esterna rappresenta l'archiviazione remota al di fuori 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 posizioni di archiviazione per i tuoi backup.
Crea spazio di archiviazione esterno
Per creare l'archiviazione esterna 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
Per creare uno spazio di archiviazione esterno Cloud Storage, esegui questo comando:
spanner external-storages create EXTERNAL_STORAGE_ID \
--gcs-bucket-name=BUCKET_NAME
Crea 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 l'archiviazione esterna, assicurati prima che non siano presenti backup esistenti o in corso. Quindi, esegui questo comando:
spanner external-storages delete EXTERNAL_STORAGE_ID
Descrivi l'unità di archiviazione esterna
Per ottenere informazioni sullo spazio di archiviazione esterno, esegui il seguente comando:
spanner external-storages describe EXTERNAL_STORAGE_ID
Elenca l'unità di archiviazione esterna
Per ottenere un elenco dello spazio di archiviazione esterno, esegui questo comando:
spanner external-storages list
Descrittore del backup
Un descrittore di backup rappresenta i metadati e i percorsi dei file di backup dei 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 di 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 del
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 Spanner Omni non include le seguenti informazioni:
Qualsiasi modifica ai dati o allo schema dopo il giorno
versionTime.Criteri IAM (Identity and Access Management).
Modifica i record di dati dello stream. Sebbene lo schema delle modifiche in tempo reale sia archiviato, i dati delle modifiche in tempo reale devono essere trasmessi in streaming e utilizzati nello stesso momento in cui vengono apportate le modifiche che descrivono.
Per garantire la coerenza esterna del backup, Spanner Omni
blocca i contenuti del database alle ore 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 per un deployment:
| Azione | Ruolo IAM |
|---|---|
| Creare, visualizzare, aggiornare ed eliminare i backup | roles/spanner.backupAdmin |
| Creare e visualizzare 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 scadenza backup
Aggiorna la data di scadenza di un backup.
spanner backups update-metadata BACKUP_NAME \
--expiration-date=EXPIRATION_DATE
Importa backup
Se elimini accidentalmente un deployment, puoi importare i backup se non hai eliminato i file di backup dallo spazio di archiviazione esterno.
Crea uno spazio di archiviazione esterno nel nuovo deployment che utilizzi lo stesso bucket Cloud Storage o Amazon S3 del deployment originale.
spanner external-storages create EXTERNAL_STORAGE_ID \ --gcs-bucket-name=BUCKET_NAMEElenca i descrittori di backup nell'archivio esterno.
spanner external-storages backup-descriptors list EXTERNAL_STORAGE_IDSeleziona il descrittore del backup e importalo nel nuovo deployment.
spanner backups import BACKUP_NAME \ --external-storage EXTERNAL_STORAGE_ID \ --backup-descriptor BACKUP_DESCRIPTOR \ --retention-period 24h
Pianificazioni di backup
Spanner Omni consente di pianificare backup completi per i database. Puoi specificare la frequenza con cui Spanner Omni crea i backup nella pianificazione.
Una pianificazione del backup completo crea backup ogni 12 ore o più. I backup vengono avviati entro una finestra di 30 minuti dall'orario pianificato. Puoi avere un massimo di quattro pianificazioni di backup per database.
Gestione della pianificazione del backup
Per creare e gestire le pianificazioni dei backup, devi disporre delle seguenti autorizzazioni. Chiedi all'amministratore di concederti i seguenti ruoli IAM nel deployment:
Crea, visualizza, aggiorna ed elimina le pianificazioni dei backup:
roles/spanner.backupAdminCrea e visualizza le pianificazioni dei 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"
Recupera una pianificazione dei backup
Visualizza le informazioni su una pianificazione dei backup specifica.
spanner backup-schedules describe SCHEDULE_ID --database=DATABASE_ID
Elenco delle pianificazioni di backup
Elenca tutte le pianificazioni dei 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"
Eliminare una pianificazione del backup
Elimina una pianificazione del backup dal database.
spanner backup-schedules delete SCHEDULE_ID --database=DATABASE_ID
Imposta il criterio di controllo dell'accesso IAM
Imposta il criterio di controllo dell'accesso IAM per una pianificazione dei backup.
spanner backup-schedules set-iam-policy SCHEDULE_ID \
--database=DATABASE_ID \
policy.json
Recupera criterio di controllo dell'accesso IAM
Recupera il criterio 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
La dimensione di archiviazione di un backup può essere inferiore o superiore a quella 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. Differenze nel formato dei dati e nella compressione possono anche 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 del momento in cui crei il backup.
Per motivi simili, quando ripristini un database da un backup, lo spazio di archiviazione può essere superiore a quello del database. Ciò può verificarsi se un ampio set di dati è 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.
Nessuna formula prevede le dimensioni di un backup rispetto al database live. Per un database con un'alta velocità di scrittura (un database attivo), il backup è probabilmente più piccolo del database attivo. Tuttavia, in alcune situazioni, le dimensioni del backup possono essere maggiori.