Backup Spanner Omni

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 versionTime del 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:

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 esempio gcp-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:

  1. 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_NAME
    
  2. Elenca i descrittori di backup nello spazio di archiviazione esterno:

    spanner external-storages backup-descriptors list EXTERNAL_STORAGE_ID
    
  3. Importa i metadati di backup nel nuovo deployment:

    spanner backups import BACKUP_NAME \
      --external-storage=EXTERNAL_STORAGE_ID \
      --backup-descriptor=BACKUP_DESCRIPTOR \
      --retention-period=RETENTION_PERIOD
    

    Sostituisci 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 esempio 24h o 30d.

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.backupAdmin

  • Crea 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.

Passaggi successivi