Nesta página, descrevemos como usar o backup e restauração do Spanner com a Google Cloud CLI.
Pré-requisitos
Os exemplos nesta página fazem as seguintes suposições:
Você já configurou a CLI gcloud para uso com o Spanner. Se você é iniciante no uso da Google Cloud CLI com o Spanner, consulte Primeiros passos com o Spanner usando a Google Cloud CLI.
Você configurou a Google Cloud CLI 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 que ele expire em um ano,
use gcloud spanner backups create
:
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 datas , consulte gcloud topic datetimes. - 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 vai aguardar a conclusão da operação de backup. Especifique a sinalização
--help
para receber ajuda para qualquer comando.A resposta será semelhante a:
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.
Para verificar o andamento de uma operação de backup, consulte Verificar o progresso da operação.
Copiar um backup
Para copiar um backup para uma instância diferente no mesmo projeto:
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
Para copiar um backup para uma instância diferente em um projeto diferente:
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
Observações de uso:
- Se você optar por copiar o backup para uma instância diferente no mesmo projeto,
crie uma nova instância (ou tenha uma pronta) para o backup copiado.
No exemplo anterior,
backup-instance
é usado. Não é possível criar uma nova instância como parte da operação de cópia de backup. - Se você optar por copiar o backup para um projeto diferente, será necessário ter outro
projeto com a própria instância pronto para o backup copiado. No exemplo
anterior,
backup-project
é usado. Não é possível criar um novo projeto como parte da operação de cópia de backup. - O prazo de validade do backup precisa ser de pelo menos seis horas a partir do momento em que a
solicitação de cópia atual é processada e no máximo 366 dias após o
create_time
do backup de origem.
A resposta será semelhante a:
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'
Para verificar o progresso de uma operação de cópia, consulte Verificar o progresso da operação.
Restaurar um banco de dados a partir de um backup
Para restaurar um banco de dados, use 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
Observações de 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á.
A resposta será semelhante a:
Restore database in progress. Operation name=projects/my-project/instances/test-instance/databases/example-db-restored-1/operations/_auto_op_bb8e360b256b04bf
Para acompanhar o progresso de uma operação de restauração, consulte Verificar o progresso da operação.
Verificar o progresso da operação
Use gcloud spanner operations describe
para verificar o progresso de uma operação.
Consiga o ID da operação:
gcloud spanner operations list --instance=INSTANCE-NAME \ --database=DATABASE-NAME --type=BACKUP
Substitua:
- INSTANCE-NAME pelo nome da instância do Spanner.
- DATABASE-NAME pelo nome do banco de dados.
Observações de uso:
Para limitar a lista, especifique a sinalização
--filter
. Exemplo:--filter="metadata.name:example-db"
lista apenas as operações em um banco de dados específico.--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.A sinalização
--type
não diferencia maiúsculas de minúsculas.
A resposta será semelhante a:
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 ```
Execute
gcloud spanner operations describe
:gcloud spanner operations describe OPERATION-ID \ --instance=INSTANCE-NAME \ --backup=BACKUP-NAME \
Substitua:
- OPERATION-ID: o ID da operação que você quer verificar.
- INSTANCE-NAME: o nome da instância do Spanner.
- BACKUP-NAME: o nome do backup do Spanner.
A seção
progress
na saída mostra a porcentagem da operação concluída. A resposta será semelhante a: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 a operação demorar muito, será possível cancelá-la. Para mais informações, consulte Cancelar uma operação de backup de longa duração.
Receber informações de backup
Para receber informações sobre um backup:
gcloud spanner backups describe example-db-backup-6 --instance=test-instance
A resposta será semelhante a:
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
A resposta será semelhante a:
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
A resposta será semelhante a:
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
.