Nesta página, descrevemos como gerenciar o ciclo de vida de um Spanner
operação de longa duração usando comandos gcloud spanner operations
e a
API REST de operações. Alguns procedimentos também podem ser
feitos no console do Google Cloud.
Operações de longa duração são chamadas de método que podem levar um tempo
considerável para serem concluídas. O Spanner cria operações de longa duração para
várias ações de instância, banco de dados e backup. Um exemplo é o método para
restaurar um banco de dados
projects.instances.databases.restore
Quando você restaura um banco de dados, o serviço do Spanner cria uma
operação de longa duração para acompanhar o progresso da restauração. Se a operação estiver demorando
mais do que o esperado, use gcloud
para verificar o progresso da
operação. Se a operação não estiver respondendo, use gcloud
para cancelar o
operação
O Spanner fornece APIs de operação que permitem verificar o progresso das operações de longa duração. Você também pode listar e cancelar operações de longa duração e excluir operações de instâncias de longa duração.
É possível verificar e gerenciar operações de longa duração com o seguinte:
- Bibliotecas de cliente do Spanner
- A ferramenta de linha de comando
gcloud
- O Console do Google Cloud
Comandos da API REST para gerenciamento de operações
Gerencie as operações de longa duração do Spanner usando os seguintes métodos REST:
Ação | Operações de banco de dados de longa duração | Operações de instância de longa duração |
---|---|---|
Cancelar uma operação de longa duração | cancel |
cancel |
Excluir uma operação de longa duração | Sem suporte | delete |
Verificar o progresso de uma operação de longa duração | get |
get |
Listar operações de longa duração | list |
list |
Para informações sobre o uso do REST com o Spanner, consulte Primeiros passos com o Spanner usando o REST.
Operações de instância
Veja a seguir as operações de instâncias de longa duração.
Verificar o andamento de uma operação de instância de longa duração
Usar projects.instances.operations.get
para verificar o progresso de uma operação de instância de longa duração.
Como exemplo, esta é uma resposta de projects.instances.create
:
{
"name": "projects/test01/instances/test-instance/operations/_auto_1492721321097206",
"metadata": {
"@type": "type.googleapis.com/google.spanner.admin.instance.v1.CreateInstanceMetadata",
"instance": {
"name": "projects/<VAR>PROJECT-ID</VAR>/instances/test-instance",
"config": "projects/<VAR>PROJECT-ID</VAR>/instanceConfigs/regional-us-central1",
"displayName": "Test Instance",
"nodeCount": 1,
"state": "READY"
},
"startTime": "2017-04-24T22:45:41.130854Z"
}
}
O valor name
na parte de cima da resposta mostra a política do Spanner
serviço criou uma operação de instância de longa duração chamada
projects/test01/instances/test-instance/operations/_auto_1492721321097206
.
Para verificar o progresso da operação de instância de longa duração:
- Acesse
projects.instances.operations.get
. Para name, insira o nome da operação de instância de longa duração, conforme mostrado na resposta para
projects.instances.create
ouprojects.instances.patch
. Exemplo:projects/PROJECT-ID/instances/INSTANCE-NAME/operations/OPERATION-ID
Substitua:
- PROJECT-ID: o ID do projeto;
- INSTANCE-NAME: o nome da instância.
- OPERATION-ID: o ID de operações.
Para recuperar o nome da operação de instância, liste as operações de instância de longa duração.
Clique em Executar. Quando uma operação é concluída, o campo
done
é definido comotrue
.
Para receber atualizações contínuas, invoque repetidamente o
projects.instances.databases.operations.get
até que a operação seja
feito. Use um recuo entre cada solicitação. Por exemplo, faça uma solicitação a cada 10
segundos.
Listar operações de instância de longa duração
Use projects.instances.operations.list
para listar operações de instância de longa duração.
- Navegue até
projects.instances.operations.list
. Para o nome, insira:
projects/PROJECT-ID/instances/INSTANCE-NAME/operationsOPERATION-ID
Substitua:
- PROJECT-ID: o ID do projeto;
- INSTANCE-NAME: o nome da instância.
- OPERATION-ID: o ID das operações.
Clique em Executar. A resposta contém uma lista de operações de longa duração.
Cancelar uma operação de instância de longa duração
Usar projects.instances.operations.cancel
para cancelar uma operação de instância de longa duração.
- Acesse
projects.instances.operations.cancel
. Para name, insira o nome da operação de instância de longa duração, como mostrado na resposta da operação de instância de longa duração.
projects/PROJECT-ID/instances/INSTANCE-NAME/operations/OPERATION-ID
Substitua:
- PROJECT-ID: o ID do projeto;
- INSTANCE-NAME: o nome da instância.
- OPERATION-ID: o ID de operações.
Também é possível recuperar o nome da operação de instância listando as operações de instância de longa duração.
Clique em Executar.
Excluir uma operação de instância de longa duração
Use projects.instances.operations.delete
para excluir uma operação de instância de longa duração.
- Clique em
projects.instances.operations.delete
. Para name, insira o nome da operação de instância de longa duração, como mostrado na resposta da operação de instância de longa duração.
projects/<VAR>PROJECT-ID</VAR>/instances/<VAR>INSTANCE-NAME</VAR>/operations/<VAR>OPERATION-ID</VAR>
Substitua:
- PROJECT-ID: o ID do projeto;
- INSTANCE-NAME: o nome da instância.
- OPERATION-ID: o ID de operações.
Também é possível recuperar o nome da operação de instância listando as operações de instância de longa duração.
Acesse Executar. A operação foi excluída.
Operações de banco de dados
Veja abaixo as operações de banco de dados de longa duração.
projects.instances.databases.create
projects.instances.databases.restore
projects.instances.databases.updateDdl
projects.instances.databaseOperations.list
Verificar o progresso de uma operação de banco de dados de longa duração
Usar projects.instances.databases.operations.get
para verificar o progresso de uma operação de banco de dados de longa duração.
Por exemplo, veja a seguir uma resposta
projects.instances.databases.create
:
{
"name": "projects/test01/instances/test-instance/databases/example-db/operations/_auto_1492721321097206",
"metadata": {
"@type": "type.googleapis.com/google.spanner.admin.database.v1.CreateDatabaseMetadata",
"database": "projects/test01/instances/test-instance/databases/example-db"
}
}
O valor name
na parte de cima da resposta mostra que o serviço do Spanner
criou uma operação de banco de dados de longa duração chamada
projects/test01/instances/test-instance/databases/example-db/operations/_auto_1492721321097206
.
Para verificar o progresso da operação do banco de dados de longa duração:
Para name, insira o nome da operação de banco de dados de longa duração, conforme mostrado na resposta para
projects.instances.databases.create
ouprojects.instances.databases.updateDdl
.projects/PROJECT-ID/instances/INSTANCE-NAME/databases/example-db/operations/OPERATION-ID
Substitua:
- PROJECT-ID: o ID do projeto;
- INSTANCE-NAME: o nome da instância.
- OPERATION-ID: o ID de operações.
Também é possível recuperar o nome da operação do banco de dados listando operações de banco de dados de longa duração.
Clique em Executar. Quando uma operação é concluída, o campo
done
é definido comotrue
.
Para receber atualizações contínuas, invoque o
método projects.instances.databases.operations.get
repetidamente até que a operação seja
concluída. Use um recuo entre cada solicitação. Por exemplo, faça uma solicitação a cada 10
segundos.
Listar operações de banco de dados de longa duração
Use projects.instances.databases.operations.list
para listar operações de banco de dados de longa duração.
- Acesse
projects.instances.databases.operations.list
. Para o nome, insira:
projects/PROJECT-ID/instances/INSTANCE-NAME/databases/example-db/OPERATION-ID
Substitua:
- PROJECT-ID: o ID do projeto;
- INSTANCE-NAME: o nome da instância.
- OPERATION-ID: o ID das operações.
Clique em Executar. A resposta contém uma lista de operações de longa duração.
Cancelar uma operação de banco de dados de longa duração
Usar projects.instances.databases.operations.cancel
para cancelar uma operação
de banco de dados de longa duração.
- Navegue até
projects.instances.databases.operations.cancel
. Para name, insira o nome da operação do banco de dados de longa duração, como mostrado na resposta de operação do banco de dados de longa duração.
projects/PROJECT-ID/instances/INSTANCE-NAME/databases/example-db/OPERATION-ID
Substitua:
- PROJECT-ID: o ID do projeto;
- INSTANCE-NAME: o nome da instância.
- OPERATION-ID: o ID das operações.
Também é possível recuperar o nome da operação do banco de dados listando operações de banco de dados de longa duração.
Clique em Executar.
Operações de atualização de esquema
Veja a seguir operações de atualização de esquema de longa duração.
Verificar o progresso de uma operação de atualização de esquema de longa duração
Console
No menu de navegação do Spanner, selecione a guia Operações. O A página Operações mostra uma lista de operações em execução.
Encontre a operação de esquema na lista. Se ainda estiver em execução, o progresso na coluna Horário de término mostra a porcentagem da operação que está concluída, conforme mostrado na imagem a seguir:
gcloud
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=DATABASE_UPDATE_DDL
Substitua:
- INSTANCE-NAME: o nome da instância do Spanner.
- DATABASE-NAME: o nome da instância.
- DATABASE-NAME: o nome do banco de dados.
Execute
gcloud spanner operations describe
:gcloud spanner operations describe OPERATION-ID \ --instance=INSTANCE-NAME \ --database=DATABASE-NAME
Substitua:
- OPERATION-ID: o ID da operação que você quer para verificar.
- INSTANCE-NAME: o nome da instância do Spanner.
- DATABASE-NAME: o nome do banco de dados do Spanner.
A seção
progress
na saída mostra a porcentagem da operação que foi concluída. A saída será assim: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 ...
REST v1
Consiga o ID da operação:
gcloud spanner operations list \ --instance=INSTANCE-NAME \ --database=DATABASE-NAME \ --type=DATABASE_UPDATE_DDL
Substitua:
- INSTANCE-NAME: o nome da instância do Spanner.
- DATABASE-NAME: o nome do banco de dados.
Antes de usar os dados da solicitação abaixo, faça as substituições a seguir:
- PROJECT-ID: o ID do projeto.
- INSTANCE-ID: o ID da instância
- DATABASE-ID: o ID do banco de dados.
- OPERATION-ID: o ID da operação.
Método HTTP e URL:
GET https://spanner.googleapis.com/v1/projects/PROJECT-ID/instances/INSTANCE-ID/databases/DATABASE-ID/operations/OPERATION-ID
Para enviar a solicitação, expanda uma destas opções:
Você receberá uma resposta JSON semelhante a esta:
{ ... "progress": [ { "progressPercent": 100, "startTime": "2023-05-27T00:52:27.366688Z", "endTime": "2023-05-27T00:52:30.184845Z" }, { "progressPercent": 100, "startTime": "2023-05-27T00:52:30.184845Z", "endTime": "2023-05-27T00:52:40.750959Z" } ], ... "done": true, "response": { "@type": "type.googleapis.com/google.protobuf.Empty" } }
Se a operação demorar muito, será possível cancelá-la. Para mais informações, consulte Cancelar uma operação de atualização de esquema de longa duração.
Listar operações de atualização de esquema de longa duração
gcloud
gcloud spanner operations list \ --instance=INSTANCE-NAME \ --database=DATABASE-NAME \ --type=DATABASE_UPDATE_DDL
Substitua:
- INSTANCE-NAME: o nome da instância do Spanner.
- DATABASE-NAME: o nome do banco de dados.
A saída será assim:
OPERATION-ID STATEMENTS DONE @TYPE
_auto_op_123456 CREATE INDEX SingersByFirstLastName ON Singers(FirstName, LastName) False UpdateDatabaseDdlMetadata
_auto_op_234567 CREATE INDEX SongsBySingerAlbumSongName ON Songs(SingerId, AlbumId, SongName), INTERLEAVE IN Albums True CreateDatabaseMetadata
Cancelar uma operação de atualização de esquema de longa duração
gcloud
Consiga o ID da operação:
gcloud spanner operations list \ --instance=INSTANCE-NAME \ --database=DATABASE-NAME \ --type=DATABASE_UPDATE_DDL
Substitua:
- INSTANCE-NAME: o nome da instância do Spanner.
- DATABASE-NAME: o nome do banco de dados.
Use
gcloud spanner operations cancel
para cancelar uma operação de atualização de esquema de longa duração.gcloud spanner operations cancel OPERATION-ID \ --instance=INSTANCE-NAME
Substitua:
- OPERATION-ID: o ID da operação que você quer para verificar.
- INSTANCE-NAME: o nome da instância do Spanner.
REST V1
Use projects.instances.databases.operations.cancel
para cancelar uma operação de atualização de esquema de longa duração.
Consiga o ID da operação:
gcloud spanner operations list \ --instance=INSTANCE-NAME \ --database=DATABASE-NAME \ --type=DATABASE_UPDATE_DDL
Substitua:
- INSTANCE-NAME: o nome da instância do Spanner.
- DATABASE-NAME: o nome do banco de dados.
Em nome, insira o nome da operação de atualização do esquema de longa duração como: como mostrado na resposta da operação de atualização de esquema de longa duração.
projects/PROJECT-ID/instances/INSTANCE-NAME/databases/example-db/operations/OPERATION-ID
Substitua:
- PROJECT-ID: o ID do projeto;
- INSTANCE-NAME: o nome da instância.
- OPERATION-ID: o ID de operações.
Também é possível recuperar o nome da operação de atualização de esquema listando as operações de instância de longa execução.
Clique em Executar. A operação é interrompida.
Operações de backup e restauração
Veja a seguir as operações de backup de longa duração.
Verificar o progresso de uma operação de backup ou restauração de longa duração
Console
Backup
No menu de navegação do Spanner, selecione a guia Operações. O A página Operações mostra uma lista das operações em execução no momento.
Encontre a operação de esquema na lista. Se ainda estiver em execução, o progresso na coluna Horário de término mostra a porcentagem da operação que está concluída, conforme mostrado na imagem a seguir:
Restaurar
Para verificar o progresso da operação de restauração, consulte o indicador de progresso que aparece durante a restauração, conforme mostrado na imagem a seguir:
Se a operação demorar muito, você pode cancelá-la. Para mais informações, consulte Cancelar uma operação de instância de longa duração.
gcloud
Use gcloud spanner operations describe
para verificar o progresso de uma operação de backup ou restauração.
Consiga o ID da operação:
gcloud spanner operations list \ --instance=INSTANCE-NAME \ --database=DATABASE-NAME \ --type=TYPE
Substitua:
- INSTANCE-NAME: o nome da instância do Spanner.
- DATABASE-NAME: o nome do banco de dados.
- TYPE: o tipo da operação. Os valores possíveis são
BACKUP
eDATABASE_RESTORE
.
Execute
gcloud spanner operations describe
:gcloud spanner operations describe OPERATION-ID \ --instance=INSTANCE-NAME \ --database=DATABASE-NAME
Substitua:
- OPERATION-ID: o ID da operação que você quer verificar.
- INSTANCE-NAME: o nome da instância do Spanner.
- DATABASE-NAME: o nome do banco de dados do Spanner.
A seção
progress
na saída mostra a porcentagem da operação que foi concluída. A saída será assim: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 ...
REST v1
Consiga o ID da operação:
gcloud spanner operations list
--instance=INSTANCE-NAME
--database=DATABASE-NAME
--type=DATABASE_UPDATE_DDL
Substitua:
- INSTANCE-NAME: o nome da instância do Spanner.
- DATABASE-NAME: o nome do banco de dados.
Antes de usar os dados da solicitação abaixo, faça as substituições a seguir:
- PROJECT-ID: o ID do projeto.
- INSTANCE-ID: o ID da instância
- DATABASE-ID: o ID do banco de dados.
- OPERATION-ID: o ID da operação.
Método HTTP e URL:
GET https://spanner.googleapis.com/v1/projects/PROJECT-ID/instances/INSTANCE-ID/databases/DATABASE-ID/operations/OPERATION-ID
Para enviar a solicitação, expanda uma destas opções:
Você receberá uma resposta JSON semelhante a esta:
{ ... "progress": [ { "progressPercent": 100, "startTime": "2023-05-27T00:52:27.366688Z", "endTime": "2023-05-27T00:52:30.184845Z" }, { "progressPercent": 100, "startTime": "2023-05-27T00:52:30.184845Z", "endTime": "2023-05-27T00:52:40.750959Z" } ], ... "done": true, "response": { "@type": "type.googleapis.com/google.protobuf.Empty" } }
Se a operação demorar muito, você pode cancelá-la. Para mais informações, consulte Cancelar uma operação de backup de longa duração.
Listar operações de backup ou restauração de longa duração
Usar projects.instances.backups.operations.list
para listar as operações em um único backup ou projects.instances.backupOperations.list
para listar todas as operações de backup na instância.
Para o nome, insira:
projects/PROJECT-ID/instances/INSTANCE-NAME/backups/BACKUP-NAME/OPERATION-ID
Substitua:
- PROJECT-ID: o ID do projeto;
- INSTANCE-NAME: o nome da instância.
- BACKUP-NAME: o nome do backup.
- OPERATION-ID: o ID das operações.
Clique em Executar. A resposta contém uma lista de operações de longa duração.
Cancelar uma operação de backup de longa duração
Use projects.instances.backups.operations.cancel
para cancelar uma operação de backup de longa duração.
Em name, insira o nome da operação de backup de longa duração, conforme mostrado na resposta dessa operação.
projects/PROJECT-ID/instances/INSTANCE-NAME/backups/BACKUP-NAME/operations/OPERATION-ID
Substitua:
- PROJECT-ID: o ID do projeto;
- INSTANCE-NAME: o nome da instância.
- BACKUP-NAME: o nome do backup.
- OPERATION-ID: o ID das operações.
Também é possível recuperar o nome da operação de backup listando operações de backup de longa duração.
Clique em Executar.