Questa pagina descrive come utilizzare il backup e il ripristino di Spanner con Google Cloud CLI.
Prerequisiti
Gli esempi in questa pagina fanno i seguenti presupposti:
Hai già configurato l'interfaccia a riga di comando gcloud CLI per l'utilizzo con Spanner. Se non hai mai utilizzato Google Cloud CLI con Spanner, consulta la guida introduttiva a Spanner con Google Cloud CLI.
Hai configurato Google Cloud CLI con un progetto predefinito. Ad esempio:
gcloud config set core/project my-project
Hai un'istanza denominata
test-instance
e un database denominatoexample-db
.
Crea backup
Per creare un backup denominato example-db-backup-6
e fare in modo che scada dopo 1 anno,
utilizza gcloud spanner backups create
:
gcloud spanner backups create example-db-backup-6 --instance=test-instance \
--database=example-db --retention-period=1y --async
Di seguito sono riportate alcune note sull'utilizzo:
- Per impostare la data di scadenza del backup, specifica il flag
--retention-period
o--expiration-date
. Per informazioni sulla sintassi delle date , consulta gcloud topic datetimes. - Il nome del backup deve essere univoco nell'istanza.
- Il comando viene restituito immediatamente a causa del flag
--async
. Senza il flag, il comando attende il completamento dell'operazione di backup. Specifica il flag
--help
per ricevere assistenza per qualsiasi comando.L'output è simile al seguente:
Create request issued for: [example-db-backup-6] Check operation [projects/my-project/instances/test-instance/backups/example-db-backup-6/operations/_auto_op_234567] for status.
Per verificare l'avanzamento di un'operazione di backup, consulta Controllare l'avanzamento dell'operazione.
Copiare un backup
Per copiare un backup in un'istanza diversa nello stesso progetto:
gcloud spanner backups copy \
--source-instance=test-instance \
--source-backup=example-db \
--destination-instance=backup-instance \
--destination-backup=copied-backup \
--expiration-date=2022-03-30T10:49:41Z
Per copiare un backup in un'istanza diversa di un altro progetto:
gcloud spanner backups copy \
--source-backup=projects/my-project/instances/test-instance/backups/example-db \
--destination-backup=projects/backup-project/instances/backup-instance-eu/backups/copied-backup \
--expiration-date=2022-03-30T10:49:41Z
Note sull'utilizzo:
- Se scegli di copiare il backup in un'istanza diversa nello stesso progetto, devi creare una nuova istanza (o averne una pronta) per il backup copiato.
Nell'esempio precedente, viene utilizzato
backup-instance
. Non puoi creare una nuova istanza nell'ambito dell'operazione di copia di backup. - Se scegli di copiare il backup in un altro progetto, devi avere un altro progetto con la propria istanza pronta per il backup copiato. Nell'esempio precedente, viene utilizzato
backup-project
. Non puoi creare un nuovo progetto nell'ambito dell'operazione di copia di backup. - La scadenza del backup deve essere di almeno 6 ore dopo l'elaborazione della richiesta di copia corrente e di massimo 366 giorni dopo il giorno
create_time
del backup di origine.
L'output è simile al seguente:
createTime: '2022-03-29T22:06:05.905823Z'
database: projects/my-project/instances/test-instance/databases/example-db
databaseDialect: GOOGLE_STANDARD_SQL
encryptionInfo:
encryptionType: GOOGLE_DEFAULT_ENCRYPTION
expireTime: '2022-03-30T10:49:41Z'
maxExpireTime: '2023-03-17T20:46:33.479336Z'
name: projects/backup-project/instances/backup-instance-eu/backups/copied-backup
sizeBytes: '7957667'
state: READY
versionTime: '2022-03-16T20:46:33.479336Z'
Per verificare l'avanzamento di un'operazione di copia, consulta Controllare l'avanzamento dell'operazione.
Ripristina un database da un backup
Per ripristinare un database, utilizza gcloud spanner databases restore
:
gcloud spanner databases restore --async \
--destination-instance=test-instance --destination-database=example-db-restored \
--source-instance=test-instance --source-backup=example-db-backup-6
Note sull'utilizzo:
- Il comando viene restituito immediatamente a causa del flag
--async
. Senza il flag, il comando attende il completamento dell'operazione di ripristino. - Se le istanze di origine e di destinazione sono diverse, devono avere la stessa configurazione dell'istanza.
- Se il database di destinazione esiste già, l'operazione non andrà a buon fine.
L'output è simile al seguente:
Restore database in progress. Operation name=projects/my-project/instances/test-instance/databases/example-db-restored-1/operations/_auto_op_bb8e360b256b04bf
Per monitorare l'avanzamento di un'operazione di ripristino, vedi Controllare l'avanzamento dell'operazione.
Controlla l'avanzamento dell'operazione
Utilizza gcloud spanner operations describe
per verificare l'avanzamento di un'operazione.
Recupera l'ID operazione:
gcloud spanner operations list --instance=INSTANCE-NAME \ --database=DATABASE-NAME --type=BACKUP
Sostituisci quanto segue:
- INSTANCE-NAME con il nome dell'istanza Spanner.
- DATABASE-NAME con il nome del database.
Note sull'utilizzo:
Per limitare l'elenco, specifica il flag
--filter
. Ad esempio:--filter="metadata.name:example-db"
elenca solo le operazioni su un database specifico.- In
--filter="error:*"
sono elencate solo le operazioni di backup non riuscite.
Per informazioni sulla sintassi dei filtri, consulta la pagina relativa ai filtri degli argomenti gcloud. Per informazioni su come filtrare le operazioni di backup, consulta il campo
filter
in ListBackupOperationsRequest.Il flag
--type
non è sensibile alle maiuscole.
L'output è simile al seguente:
OPERATION_ID DONE @TYPE BACKUP SOURCE_DATABASE START_TIME END_TIME _auto_op_123456 True CreateBackupMetadata example-db-backup-7 example-db 2020-02-04T02:12:38.075515Z 2020-02-04T02:22:40.581170Z _auto_op_234567 True CreateBackupMetadata example-db-backup-6 example-db 2020-02-04T02:05:43.920377Z 2020-02-04T02:07:59.089820Z ```
Esecuzione
gcloud spanner operations describe
:gcloud spanner operations describe OPERATION-ID \ --instance=INSTANCE-NAME \ --backup=BACKUP-NAME \
Sostituisci quanto segue:
- OPERATION-ID: l'ID dell'operazione che vuoi controllare.
- INSTANCE-NAME: nome dell'istanza Spanner.
- BACKUP-NAME: il nome del backup di Spanner.
La sezione
progress
nell'output mostra la percentuale dell'operazione completata. L'output è simile al seguente:done: true metadata: ... progress: - endTime: '2022-03-01T00:28:06.691403Z' progressPercent: 100 startTime: '2022-03-01T00:28:04.221401Z' - endTime: '2022-03-01T00:28:17.624588Z' startTime: '2022-03-01T00:28:06.691403Z' progressPercent: 100 ...
Se l'operazione richiede troppo tempo, puoi annullarla. Per maggiori informazioni, consulta Annullare un'operazione di backup a lunga esecuzione.
Recuperare informazioni di backup
Per ottenere informazioni su un backup:
gcloud spanner backups describe example-db-backup-6 --instance=test-instance
L'output è simile al seguente:
createTime: '2020-02-04T02:05:43.920377Z'
database: projects/my-project/instances/test-instance/databases/example-db
expireTime: '2021-02-04T02:05:43.268327Z'
name: projects/my-project/instances/test-instance/backups/example-db-backup-6
sizeBytes: '1000000000'
state: READY
Per maggiori dettagli su questo comando, vedi gcloud spanner backups describe
.
Elenco dei backup
Per elencare tutti i backup in un'istanza:
gcloud spanner backups list --instance=test-instance
L'output è simile al seguente:
BACKUP SOURCE_DATABASE CREATION_TIME EXPIRATION_TIME STATE BACKUP_SIZE_IN_BYTES IN_USE_BY
example-db-backup-6 example-db 2020-02-04T02:05:43.920377Z 2021-02-04T02:05:43.268327Z CREATING
example-db-backup-4 example-db 2020-02-04T01:21:20.873839Z 2021-02-04T01:21:20.530151Z READY 32
example-db-backup-3 example-db 2020-02-03T23:59:18.936433Z 2021-02-03T23:59:18.203083Z READY 32
example-db-backup-5 example-db 2020-02-03T23:48:06.259296Z 2021-02-03T23:48:05.830937Z READY 32
example-db-backup-2 example-db 2020-01-30T19:49:00.616338Z 2021-01-30T19:49:00.283917Z READY 32
example-db-backup-1 example-db 2020-01-30T19:47:09.492551Z 2021-01-30T19:47:09.097804Z READY 32
Per limitare l'elenco, specifica il flag --filter
. Ad esempio
--filter="state:creating"
elenca solo i backup ancora in fase di creazione.
Per informazioni sulla sintassi dei filtri, consulta la pagina relativa ai filtri degli argomenti gcloud.
Per informazioni su come filtrare i backup, consulta il campo filter
in ListBackupsRequest.
Per maggiori dettagli su questo comando, vedi gcloud spanner backups list
.
Aggiorna metadati di backup
Per aggiornare la data di scadenza di un backup:
gcloud spanner backups update-metadata example-db-backup-6 \
--instance=test-instance --expiration-date=2020-05-05T00:00:00Z
L'output è simile al seguente:
createTime: '2020-02-04T02:05:43.920377Z'
database: projects/my-project/instances/test-instance/databases/example-db
expireTime: '2020-05-05T00:00:00Z'
name: projects/my-project/instances/test-instance/backups/example-db-backup-6
sizeBytes: '1000000000'
state: READY
Per maggiori dettagli su questo comando, consulta
gcloud spanner backups update-metadata
.
Elimina backup
Per eliminare un backup:
gcloud spanner backups delete example-db-backup-1 --instance=test-instance
Devi confermare l'operazione:
You are about to delete backup [example-db-backup-1]
Do you want to continue (Y/n)? Y
Deleted backup [example-db-backup-1].
Per maggiori dettagli su questo comando, vedi gcloud spanner backups delete
.