Esta página descreve como gerir o ciclo de vida de uma operação de longa duração do Spanner através de comandos gcloud spanner operations
e da API REST de operações. Alguns procedimentos também podem ser realizados na Google Cloud consola.
As operações de longa duração são chamadas de métodos que podem demorar um período de tempo considerável a serem concluídas. O Spanner cria operações de longa duração para várias ações de instâncias, bases de dados e cópias de segurança. Um exemplo é o método para
restaurar uma base de dados,
projects.instances.databases.restore
.
Quando restaura uma base de dados, o serviço Spanner cria uma operação de longa duração para acompanhar o progresso do restauro. Se a operação estiver a demorar mais do que o esperado, pode usar gcloud
para verificar o progresso da operação. Se a operação não estiver a responder, pode usar gcloud
para cancelar a operação.
O Spanner fornece APIs de operações que lhe permitem verificar o progresso de operações de execução prolongada. Também pode listar e cancelar operações de longa duração, bem como eliminar operações de longa duração de instâncias.
Pode verificar e gerir operações de longa duração com o seguinte:
- Bibliotecas de cliente do Spanner
- A ferramenta de linha de comandos
gcloud
- A Google Cloud consola
Comandos da API REST para gestão de operações
Faça a gestão das suas operações de longa duração do Spanner através dos seguintes métodos REST:
Ação | Operações de base de dados de longa duração | Operações de instâncias de longa duração |
---|---|---|
Cancele uma operação de longa duração | cancel |
cancel |
Elimine uma operação de longa duração | Não suportado | delete |
Verifique o progresso de uma operação de longa duração | get |
get |
Apresente operações de longa duração | list |
list |
Para informações sobre a utilização de REST com o Spanner, consulte o artigo Começar a usar o Spanner com REST.
Operações da instância
Seguem-se as operações de instância de longa duração.
Verifique o progresso de uma operação de instância de longa duração
Use projects.instances.operations.get
para verificar o progresso de uma operação de instância de execução prolongada.
Por 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 superior da resposta mostra que o serviço Spanner criou uma operação de instância de execução prolongada denominada projects/test01/instances/test-instance/operations/_auto_1492721321097206
.
Para verificar o progresso da operação de instância de longa duração:
- Navegar para
projects.instances.operations.get
. Para name, introduza o nome da operação de instância de longa duração, conforme mostrado na resposta a
projects.instances.create
ouprojects.instances.patch
. Por exemplo:projects/PROJECT-ID/instances/INSTANCE-NAME/operations/OPERATION-ID
Substitua o seguinte:
- PROJECT-ID: o ID do projeto.
- INSTANCE-NAME: o nome da instância.
- OPERATION-ID: o ID das operações.
Pode obter o nome da operação da instância listando as operações de longa duração da instância.
Clique em Executar. Quando uma operação é concluída, o campo
done
é definido comotrue
.
Para receber atualizações contínuas, invoque repetidamente o método projects.instances.databases.operations.get
até que a operação esteja concluída. Use uma retirada entre cada pedido. Por exemplo, faça um pedido a cada 10 segundos.
Apresente as operações de instâncias de longa duração
Use projects.instances.operations.list
para apresentar uma lista de operações de instâncias de longa duração.
- Navegar para
projects.instances.operations.list
. Para name, introduza:
projects/PROJECT-ID/instances/INSTANCE-NAME/operationsOPERATION-ID
Substitua o seguinte:
- 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.
Cancele uma operação de instância de longa duração
Use projects.instances.operations.cancel
para cancelar uma operação de instância de execução prolongada.
- Navegar para
projects.instances.operations.cancel
. Para name, introduza o nome da operação de instância de longa duração, conforme apresentado na resposta da operação de instância de longa duração.
projects/PROJECT-ID/instances/INSTANCE-NAME/operations/OPERATION-ID
Substitua o seguinte:
- PROJECT-ID: o ID do projeto.
- INSTANCE-NAME: o nome da instância.
- OPERATION-ID: o ID das operações.
Também pode obter o nome da operação da instância listando as operações de instância de longa duração.
Clique em Executar.
Elimine uma operação de instância de longa duração
Use projects.instances.operations.delete
para eliminar uma operação de instância de execução prolongada.
- Clique em
projects.instances.operations.delete
. Para name, introduza o nome da operação de instância de longa duração, conforme apresentado 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 o seguinte:
- PROJECT-ID: o ID do projeto.
- INSTANCE-NAME: o nome da instância.
- OPERATION-ID: o ID das operações.
Também pode obter o nome da operação da instância listando as operações de instância de longa duração.
Navegue para Executar. A operação é eliminada.
Operações de base de dados
Seguem-se as operações de base de dados de longa duração.
projects.instances.databases.create
projects.instances.databases.restore
projects.instances.databases.updateDdl
projects.instances.databaseOperations.list
Verifique o progresso de uma operação de base de dados de execução prolongada
Use projects.instances.databases.operations.get
para verificar o progresso de uma operação de base de dados de execução prolongada.
Por exemplo, a seguinte é uma resposta de
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 superior da resposta mostra que o serviço Spanner criou uma operação de base de dados de execução prolongada denominada projects/test01/instances/test-instance/databases/example-db/operations/_auto_1492721321097206
.
Para verificar o progresso da operação de base de dados de execução prolongada:
Navegar para
projects.instances.databases.operations.get
.Para name, introduza o nome da operação de base de dados de longa duração, conforme apresentado na resposta a
projects.instances.databases.create
ouprojects.instances.databases.updateDdl
.projects/PROJECT-ID/instances/INSTANCE-NAME/databases/example-db/operations/OPERATION-ID
Substitua o seguinte:
- PROJECT-ID: o ID do projeto.
- INSTANCE-NAME: o nome da instância.
- OPERATION-ID: o ID das operações.
Também pode obter o nome da operação da base de dados listando as operações de longa duração da base de dados.
Clique em Executar. Quando uma operação é concluída, o campo
done
é definido comotrue
.
Para receber atualizações contínuas, invoque repetidamente o método projects.instances.databases.operations.get
até que a operação esteja concluída. Use uma retirada entre cada pedido. Por exemplo, faça um pedido a cada 10 segundos.
Apresente operações de base de dados de longa duração
Use projects.instances.databases.operations.list
para apresentar uma lista de operações de base de dados de execução prolongada.
- Navegar para
projects.instances.databases.operations.list
. Para name, introduza:
projects/PROJECT-ID/instances/INSTANCE-NAME/databases/example-db/OPERATION-ID
Substitua o seguinte:
- 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.
Cancele uma operação de base de dados de execução prolongada
Use projects.instances.databases.operations.cancel
para cancelar uma operação de base de dados de execução prolongada.
- Navegar para
projects.instances.databases.operations.cancel
. Para name, introduza o nome da operação de base de dados de longa duração, conforme apresentado na resposta da operação de base de dados de longa duração.
projects/PROJECT-ID/instances/INSTANCE-NAME/databases/example-db/OPERATION-ID
Substitua o seguinte:
- PROJECT-ID: o ID do projeto.
- INSTANCE-NAME: o nome da instância.
- OPERATION-ID: o ID das operações.
Também pode obter o nome da operação da base de dados listando as operações de longa duração da base de dados.
Clique em Executar.
Operações de atualização do esquema
Seguem-se as operações de atualização do esquema de execução prolongada.
Verifique o progresso de uma operação de atualização do esquema de execução prolongada
Consola
No menu de navegação do Spanner, selecione o separador Operações. 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, a barra de progresso na coluna Hora de fim mostra a percentagem da operação que está concluída, conforme apresentado na imagem seguinte:
gcloud
Use gcloud spanner operations describe
para verificar o progresso de uma operação.
Obtenha o ID da operação:
gcloud spanner operations list \ --instance=INSTANCE-NAME \ --database=DATABASE-NAME \ --type=DATABASE_UPDATE_DDL
Substitua o seguinte:
- INSTANCE-NAME: o nome da instância do Spanner.
- DATABASE-NAME: o nome da instância.
- DATABASE-NAME: o nome da base de dados.
Corrida
gcloud spanner operations describe
:gcloud spanner operations describe OPERATION-ID \ --instance=INSTANCE-NAME \ --database=DATABASE-NAME
Substitua o seguinte:
- OPERATION-ID: o ID da operação que quer verificar.
- INSTANCE-NAME: o nome da instância do Spanner.
- DATABASE-NAME: o nome da base de dados do Spanner.
A secção
progress
na saída mostra a percentagem da operação concluída. O resultado tem um aspeto semelhante ao seguinte: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
Obtenha o ID da operação:
gcloud spanner operations list \ --instance=INSTANCE-NAME \ --database=DATABASE-NAME \ --type=DATABASE_UPDATE_DDL
Substitua o seguinte:
- INSTANCE-NAME: o nome da instância do Spanner.
- DATABASE-NAME: o nome da base de dados.
Antes de usar qualquer um dos dados do pedido, faça as seguintes substituições:
- PROJECT-ID: o ID do projeto.
- INSTANCE-ID: o ID da instância.
- DATABASE-ID: o ID da base 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 o seu pedido, expanda uma destas opções:
Deve receber uma resposta JSON semelhante à seguinte:
{ ... "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 demasiado tempo, pode cancelá-la. Para mais informações, consulte o artigo Cancele uma operação de atualização do esquema de longa duração.
Apresente operações de atualização do esquema de longa duração
gcloud
gcloud spanner operations list \ --instance=INSTANCE-NAME \ --database=DATABASE-NAME \ --type=DATABASE_UPDATE_DDL
Substitua o seguinte:
- INSTANCE-NAME: o nome da instância do Spanner.
- DATABASE-NAME: o nome da base de dados.
O resultado tem um aspeto semelhante ao seguinte:
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
Cancele uma operação de atualização do esquema de execução prolongada
gcloud
Obtenha o ID da operação:
gcloud spanner operations list \ --instance=INSTANCE-NAME \ --database=DATABASE-NAME \ --type=DATABASE_UPDATE_DDL
Substitua o seguinte:
- INSTANCE-NAME: o nome da instância do Spanner.
- DATABASE-NAME: o nome da base de dados.
Use o comando
gcloud spanner operations cancel
para cancelar uma operação de atualização do esquema de execução prolongada.gcloud spanner operations cancel OPERATION-ID \ --instance=INSTANCE-NAME
Substitua o seguinte:
- OPERATION-ID: o ID da operação que quer 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 do esquema de execução prolongada.
Obtenha o ID da operação:
gcloud spanner operations list \ --instance=INSTANCE-NAME \ --database=DATABASE-NAME \ --type=DATABASE_UPDATE_DDL
Substitua o seguinte:
- INSTANCE-NAME: o nome da instância do Spanner.
- DATABASE-NAME: o nome da base de dados.
Navegar para
projects.instances.databases.operations.cancel
.Para name, introduza o nome da operação de atualização do esquema de longa duração, conforme mostrado na resposta da operação de atualização do esquema de longa duração.
projects/PROJECT-ID/instances/INSTANCE-NAME/databases/example-db/operations/OPERATION-ID
Substitua o seguinte:
- PROJECT-ID: o ID do projeto.
- INSTANCE-NAME: o nome da instância.
- OPERATION-ID: o ID das operações.
Também pode obter o nome da operação de atualização do esquema listando as operações de instância de longa duração.
Clique em Executar. A operação deixa de ser executada.
Operações de cópia de segurança e restauro
Seguem-se as operações de cópia de segurança de longa duração.
Verifique o progresso de uma operação de restauro ou de cópia de segurança de longa duração
Consola
Cópia de segurança
No menu de navegação do Spanner, selecione o separador Operações. 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, a barra de progresso na coluna Hora de fim mostra a percentagem da operação que está concluída, conforme apresentado na imagem seguinte:
Restaurar
Para verificar o progresso da operação de restauro, consulte o indicador de progresso apresentado durante o restauro, conforme mostrado na seguinte imagem:
Se a operação demorar demasiado tempo, pode cancelá-la. Para mais informações, consulte o artigo Cancele uma operação de instância de execução prolongada.
gcloud
Use gcloud spanner operations describe
para verificar o progresso de uma operação de restauro ou de cópia de segurança.
Obtenha o ID da operação:
gcloud spanner operations list \ --instance=INSTANCE-NAME \ --database=DATABASE-NAME \ --type=TYPE
Substitua o seguinte:
- INSTANCE-NAME: o nome da instância do Spanner.
- DATABASE-NAME: o nome da base de dados.
- TYPE: o tipo de operação. Os valores possíveis são
BACKUP
eDATABASE_RESTORE
.
Corrida
gcloud spanner operations describe
:gcloud spanner operations describe OPERATION-ID \ --instance=INSTANCE-NAME \ --database=DATABASE-NAME
Substitua o seguinte:
- OPERATION-ID: o ID da operação que quer verificar.
- INSTANCE-NAME: o nome da instância do Spanner.
- DATABASE-NAME: o nome da base de dados do Spanner.
A secção
progress
na saída mostra a percentagem da operação concluída. O resultado tem um aspeto semelhante ao seguinte: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
Obtenha o ID da operação:
gcloud spanner operations list
--instance=INSTANCE-NAME
--database=DATABASE-NAME
--type=DATABASE_UPDATE_DDL
Substitua o seguinte:
- INSTANCE-NAME: o nome da instância do Spanner.
- DATABASE-NAME: o nome da base de dados.
Antes de usar qualquer um dos dados do pedido, faça as seguintes substituições:
- PROJECT-ID: o ID do projeto.
- INSTANCE-ID: o ID da instância.
- DATABASE-ID: o ID da base 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 o seu pedido, expanda uma destas opções:
Deve receber uma resposta JSON semelhante à seguinte:
{ ... "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 demasiado tempo, pode cancelá-la. Para mais informações, consulte o artigo Cancele uma operação de cópia de segurança de longa duração.
Liste operações de restauro ou de cópia de segurança de longa duração
Use projects.instances.backups.operations.list
para listar as operações numa única cópia de segurança ou projects.instances.backupOperations.list
para listar todas as operações de cópia de segurança na instância.
Navegar para
projects.instances.backups.operations.list
.Para name, introduza:
projects/PROJECT-ID/instances/INSTANCE-NAME/backups/BACKUP-NAME/OPERATION-ID
Substitua o seguinte:
- PROJECT-ID: o ID do projeto.
- INSTANCE-NAME: o nome da instância.
- BACKUP-NAME: o nome da cópia de segurança.
- OPERATION-ID: o ID das operações.
Clique em Executar. A resposta contém uma lista de operações de longa duração.
Cancele uma operação de cópia de segurança de longa duração
Use projects.instances.backups.operations.cancel
para cancelar uma operação de cópia de segurança de longa duração.
Navegar para
projects.instances.backups.operations.cancel
.Para name, introduza o nome da operação de cópia de segurança de longa duração, conforme apresentado na resposta da operação de cópia de segurança de longa duração.
projects/PROJECT-ID/instances/INSTANCE-NAME/backups/BACKUP-NAME/operations/OPERATION-ID
Substitua o seguinte:
- PROJECT-ID: o ID do projeto.
- INSTANCE-NAME: o nome da instância.
- BACKUP-NAME: o nome da cópia de segurança.
- OPERATION-ID: o ID das operações.
Também pode obter o nome da operação de cópia de segurança listando as operações de cópia de segurança de longa duração.
Clique em Executar.