Nesta página, descrevemos como usar o Backup e restauração do Cloud Spanner com a interface de linha de comando gcloud.
Pré-requisitos
Os exemplos nesta página fazem as seguintes suposições:
Você já configurou o SDK do gcloud para uso com o Cloud Spanner. Se você estiver começando a usar o gcloud com o Cloud Spanner, consulte Primeiros passos com o Cloud Spanner usando o gcloud.
Você já configurou o gcloud com um projeto padrão. Exemplo:
gcloud config set core/project my-project
Você já tem uma instância chamada
test-instance
e um banco de dados chamadoexample-db
.
Criar backup
Para criar um backup chamado example-db-backup-6
e fazer com que ele expire em um ano:
gcloud spanner backups create example-db-backup-6 --instance=test-instance \
--database=example-db --retention-period=1y --async
Veja algumas observações de uso:
- Para definir a data de validade do backup, especifique a sinalização
--retention-period
ou--expiration-date
. Para informações sobre a sintaxe de data, consulte Tópico sobre datas e horas no gcloud. - O nome do backup precisa ser exclusivo na instância.
- O comando retorna imediatamente por causa da sinalização
--async
. Sem a sinalização, o comando aguardará a conclusão da operação de backup. - Especifique a sinalização
--help
para receber ajuda para qualquer comando.
Veja o resultado:
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.
Na próxima seção, usaremos a operação de backup para verificar o progresso do backup.
Para mais detalhes sobre esse comando, consulte "spanner backups create".
Mostrar progresso do backup
Para acompanhar o progresso de uma operação de backup, use cloud spanner operations describe:
gcloud spanner operations describe _auto_op_234567 \ --instance=test-instance --backup=example-db-backup-6
Esta é a saída:
done: true metadata: '@type': type.googleapis.com/google.spanner.admin.database.v1.CreateBackupMetadata database: projects/my-project/instances/test-instance/databases/example-db name: projects/my-project/instances/test-instance/backups/example-db-backup-6 progress: endTime: '2020-02-04T02:07:59.089820Z' progressPercent: 100 startTime: '2020-02-04T02:05:43.920377Z' name: projects/my-project/instances/test-instance/backups/example-db-backup-6/operations/_auto_op_234567 response: '@type': type.googleapis.com/google.spanner.admin.database.v1.Backup 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
Se você não tiver o nome da operação, encontre-o usando gcloud spanner operations list:
gcloud spanner operations list --instance=test-instance --type=BACKUP
Observações sobre o uso:
Para limitar a lista, especifique a sinalização
--filter
.- Por exemplo,
--filter="metadata.name:example-db"
lista apenas as operações de backup em um banco de dados específico. - Por exemplo,
--filter="error:*"
lista apenas as operações de backup que falharam.
Para informações sobre a sintaxe do filtro, consulte gcloud topic filtros. Para informações sobre como filtrar operações de backup, consulte o campo
filter
em ListBackupOperationsRequest.- Por exemplo,
A sinalização
--type
não diferencia maiúsculas de minúsculas.
Esta é a saída:
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
Restaurar um banco de dados a partir de um backup
Para restaurar um banco de dados:
gcloud spanner databases restore --async \
--destination-instance=test-instance --destination-database=example-db-restored \
--source-instance=test-instance --source-backup=example-db-backup-6
Observações sobre o uso:
- O comando retorna imediatamente por causa da sinalização
--async
. Sem a sinalização, o comando aguardará a conclusão da operação de restauração. - Se as instâncias de origem e de destino forem diferentes, elas precisarão ter a mesma configuração de instância.
- Se o banco de dados de destino já existir, a operação falhará.
Esta é a saída:
Restore database in progress. Operation name=projects/my-project/instances/test-instance/databases/example-db-restored-1/operations/_auto_op_bb8e360b256b04bf
Para mais detalhes sobre esse comando, consulte gcloud spanner databases restore.
Mostrar restauração e otimização do progresso
Para acompanhar o progresso de uma operação de restauração, use gcloud spanner operations describe:
gcloud spanner operations describe _auto_op_bb8e360b256b04bf \ --instance=test-instance --database=example-db-restored
Esta é a saída:
done: true metadata: '@type': type.googleapis.com/google.spanner.admin.database.v1.RestoreDatabaseMetadata backupInfo: backup: projects/my-project/instances/test-instance/backups/example-db-backup-6 createTime: '2020-02-03T23:48:06.259296Z' sourceDatabase: projects/my-project/instances/test-instance/databases/example-db name: projects/my-project/instances/test-instance/databases/example-db-restored optimizeDatabaseOperationName: projects/my-project/instances/test-instance/databases/example-db-restored/operations/_auto_op_7702f3f19fa99616 progress: endTime: '2020-02-04T02:40:56.424382Z' progressPercent: 100 startTime: '2020-02-04T02:35:30.683330Z' sourceType: BACKUP name: projects/my-project/instances/test-instance/databases/example-db-restored/operations/_auto_op_91ff1f270832a22b response: '@type': type.googleapis.com/google.spanner.admin.database.v1.Database createTime: '2020-02-04T02:35:30.683330Z' name: projects/my-project/instances/test-instance/databases/example-db-restored restoreInfo: backupInfo: backup: projects/my-project/instances/test-instance/backups/example-db-backup-6 createTime: '2020-02-03T23:48:06.259296Z' sourceDatabase: projects/my-project/instances/test-instance/databases/example-db sourceType: BACKUP state: READY_OPTIMIZING
A partir da saída, podemos ver que a operação de restauração está concluída e agora está no estado
READY_OPTIMIZING
, conforme descrito em Como a restauração funciona. Também recebemosoptimizeDatabaseOperationName
, que podemos usar para rastrear o progresso da operação de otimização.Para acompanhar o progresso da operação de otimização, use gcloud spanner operations describe:
gcloud-testing spanner operations describe _auto_op_7702f3f19fa99616 \ --instance=test-instance --database=example-db-restored
Esta é a saída:
done: true metadata: '@type': type.googleapis.com/google.spanner.admin.database.v1.OptimizeRestoredDatabaseMetadata name: projects/my-project/instances/test-instance/databases/example-db-restored progress: endTime: '2020-02-04T22:11:21.731739Z' progressPercent: 100 startTime: '2020-02-04T22:10:48.308090Z' name: projects/my-project/instances/test-instance/databases/example-db-restored/operations/_auto_op_7702f3f19fa99616 response: '@type': type.googleapis.com/google.spanner.admin.database.v1.Database createTime: '2020-02-04T22:03:34.282186Z' name: projects/my-project/instances/test-instance/databases/example-db-restored restoreInfo: backupInfo: backup: projects/my-project/instances/test-instance/backups/example-db-backup-6 createTime: '2020-02-03T23:48:06.259296Z' sourceDatabase: projects/my-project/instances/test-instance/databases/example-db sourceType: BACKUP state: READY
Se você não tiver o nome da operação de restauração ou otimização, encontre-a usando gcloud spanner operations list. Se o banco de dados restaurado não estiver na mesma instância do backup, especifique a instância de destino na sinalização
instance
:gcloud spanner operations list --instance=test-instance \ --type=DATABASE_RESTORE
Esta é a saída:
OPERATION_ID DONE @TYPE RESTORED_DATABASE SOURCE_BACKUP START_TIME END_TIME _auto_op_7702f3f19fa99616 True OptimizeRestoredDatabaseMetadata example-db-restored 2020-02-04T02:40:56.424382Z 2020-02-04T02:41:37.765157Z _auto_op_91ff1f270832a22b True RestoreDatabaseMetadata example-db-restored example-db-backup-6 2020-02-04T02:35:30.683330Z 2020-02-04T02:40:56.424382Z
Receber informações de backup
Para receber informações sobre um backup:
gcloud spanner backups describe example-db-backup-6 --instance=test-instance
Esta é a saída:
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
Para mais detalhes sobre esse comando, consulte gcloud spanner backups describe.
Listar backups
Para listar todos os backups em uma instância:
gcloud spanner backups list --instance=test-instance
Esta é a saída:
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
Para limitar a lista, especifique a sinalização --filter
. Por exemplo, --filter="state:creating"
lista apenas os backups que ainda estão sendo criados.
Para informações sobre a sintaxe do filtro, consulte gcloud topic filtros.
Para informações sobre como filtrar backups, consulte o campo filter
em ListBackupsRequest.
Para mais detalhes sobre esse comando, consulte gcloud spanner backups list.
Atualizar metadados de backup
Para atualizar a data de validade de um backup:
gcloud spanner backups update-metadata example-db-backup-6 \
--instance=test-instance --expiration-date=2020-05-05T00:00:00Z
Esta é a saída:
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
Para mais detalhes sobre esse comando, consulte gcloud spanner backups update-metadata.
Excluir backup
Para excluir um backup:
gcloud spanner backups delete example-db-backup-1 --instance=test-instance
Confirme a operação:
You are about to delete backup [example-db-backup-1]
Do you want to continue (Y/n)? Y
Deleted backup [example-db-backup-1].
Para mais detalhes sobre esse comando, consulte gcloud spanner backups delete.