Faça a gestão e observe operações de longa duração

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:

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:

  1. Navegar para projects.instances.operations.get.
  2. Para name, introduza o nome da operação de instância de longa duração, conforme mostrado na resposta a projects.instances.create ou projects.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.

  3. Clique em Executar. Quando uma operação é concluída, o campo done é definido como true.

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.

  1. Navegar para projects.instances.operations.list.
  2. 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.
  3. 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.

  1. Navegar para projects.instances.operations.cancel.
  2. 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.

  3. 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.

  1. Clique em projects.instances.operations.delete.
  2. 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.

  3. 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.

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:

  1. Navegar para projects.instances.databases.operations.get.

  2. 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 ou projects.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.

  3. Clique em Executar. Quando uma operação é concluída, o campo done é definido como true.

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.

  1. Navegar para projects.instances.databases.operations.list.
  2. 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.
  3. 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.

  1. Navegar para projects.instances.databases.operations.cancel.
  2. 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.

  3. 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

  1. 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.

  2. 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:

Captura de ecrã do indicador de progresso a mostrar 98%

gcloud

Use gcloud spanner operations describe para verificar o progresso de uma operação.

  1. 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.
  2. 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

  1. 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.
  2. 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.

  1. 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.
  2. Navegar para projects.instances.databases.operations.cancel.

  3. 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.

  4. 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

  1. 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.

  2. 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:

Captura de ecrã do indicador de progresso a mostrar 98%

Restaurar

Para verificar o progresso da operação de restauro, consulte o indicador de progresso apresentado durante o restauro, conforme mostrado na seguinte imagem:

Captura de ecrã do indicador de progresso a mostrar 56%

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.

  1. 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 e DATABASE_RESTORE.
  2. 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.

  1. Navegar para projects.instances.backups.operations.list.

  2. 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.
  3. 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.

  1. Navegar para projects.instances.backups.operations.cancel.

  2. 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.

  3. Clique em Executar.