Gestionar y monitorizar operaciones de larga duración

En esta página se describe cómo gestionar el ciclo de vida de una operación de larga duración de Spanner mediante comandos gcloud spanner operations y la API REST operations. Algunos procedimientos también se pueden realizar en la Google Cloud consola.

Las operaciones de larga duración son llamadas a métodos que pueden tardar bastante tiempo en completarse. Spanner crea operaciones de larga duración para varias acciones de instancias, bases de datos y copias de seguridad. Por ejemplo, el método para restaurar una base de datos, projects.instances.databases.restore. Cuando restauras una base de datos, el servicio Spanner crea una operación de larga duración para monitorizar el progreso de la restauración. Si la operación tarda más de lo esperado, puedes usar gcloud para comprobar su progreso. Si la operación no responde, puedes usar gcloud para cancelarla.

Spanner proporciona APIs de operaciones que te permiten comprobar el progreso de las operaciones de larga duración. También puedes mostrar y cancelar operaciones de larga duración, así como eliminar operaciones de larga duración de instancias.

Puedes consultar y gestionar operaciones de larga duración con lo siguiente:

Comandos de la API REST para gestionar operaciones

Gestiona tus operaciones de larga duración de Spanner con los siguientes métodos REST:

Acción Operaciones de base de datos de larga duración Operaciones de instancia de larga duración
Cancelar una operación de larga duración cancel cancel
Eliminar una operación de larga duración No admitido delete
Comprobar el progreso de una operación de larga duración get get
Crear una lista de operaciones de larga duración list list

Para obtener información sobre cómo usar REST con Spanner, consulta el artículo Empezar a usar Spanner con REST.

Operaciones de instancias

Las siguientes son operaciones de instancia de larga duración.

Consultar el progreso de una operación de instancia de larga duración

Usa projects.instances.operations.get para comprobar el progreso de una operación de instancia de larga duración.

Por ejemplo, esta es una respuesta 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"
    }
  }

El valor name de la parte superior de la respuesta muestra que el servicio Spanner ha creado una operación de instancia de larga duración llamada projects/test01/instances/test-instance/operations/_auto_1492721321097206.

Para comprobar el progreso de la operación de instancia de larga duración, sigue estos pasos:

  1. Ve a projects.instances.operations.get.
  2. En name, introduce el nombre de la operación de instancia de larga duración tal como se muestra en la respuesta a projects.instances.create o projects.instances.patch. Por ejemplo:

    projects/PROJECT-ID/instances/INSTANCE-NAME/operations/OPERATION-ID

    Haz los cambios siguientes:

    • PROJECT-ID: el ID del proyecto.
    • INSTANCE-NAME: el nombre de la instancia.
    • OPERATION-ID: el ID de las operaciones.

    Puedes obtener el nombre de la operación de la instancia enumerando las operaciones de larga duración de la instancia.

  3. Haz clic en la opción para ejecutar. Cuando se completa una operación, el campo done se establece en true.

Para obtener actualizaciones continuas, invoca repetidamente el método projects.instances.databases.operations.get hasta que se complete la operación. Usa un tiempo de espera entre cada solicitud. Por ejemplo, haz una solicitud cada 10 segundos.

Enumerar operaciones de instancia de larga duración

Usa projects.instances.operations.list para enumerar las operaciones de larga duración de la instancia.

  1. Ve a projects.instances.operations.list.
  2. En el campo nombre, introduce lo siguiente:

    projects/PROJECT-ID/instances/INSTANCE-NAME/operationsOPERATION-ID

    Haz los cambios siguientes:

    • PROJECT-ID: el ID del proyecto.
    • INSTANCE-NAME: el nombre de la instancia.
    • OPERATION-ID: el ID de las operaciones.
  3. Haz clic en la opción para ejecutar. La respuesta contiene una lista de operaciones de larga duración.

Cancelar una operación de instancia de larga duración

Usa projects.instances.operations.cancel para cancelar una operación de instancia de larga duración.

  1. Ve a projects.instances.operations.cancel.
  2. En el campo nombre, introduce el nombre de la operación de instancia de larga duración como se muestra en la respuesta de operación de instancia de larga duración.

    projects/PROJECT-ID/instances/INSTANCE-NAME/operations/OPERATION-ID

    Haz los cambios siguientes:

    • PROJECT-ID: el ID del proyecto.
    • INSTANCE-NAME: el nombre de la instancia.
    • OPERATION-ID: el ID de las operaciones.

    También puedes obtener el nombre de la operación de la instancia consultando las operaciones de larga duración de la instancia.

  3. Haz clic en la opción para ejecutar.

Eliminar una operación de instancia de larga duración

Usa projects.instances.operations.delete para eliminar una operación de instancia de larga duración.

  1. Haz clic en projects.instances.operations.delete.
  2. En el campo nombre, introduce el nombre de la operación de instancia de larga duración como se muestra en la respuesta de operación de instancia de larga duración.

    projects/<VAR>PROJECT-ID</VAR>/instances/<VAR>INSTANCE-NAME</VAR>/operations/<VAR>OPERATION-ID</VAR>
    

    Haz los cambios siguientes:

    • PROJECT-ID: el ID del proyecto.
    • INSTANCE-NAME: el nombre de la instancia.
    • OPERATION-ID: el ID de las operaciones.

    También puedes obtener el nombre de la operación de la instancia consultando las operaciones de larga duración de la instancia.

  3. Ve a Ejecutar. La operación se ha eliminado.

Operaciones de base de datos

Estas son operaciones de base de datos de larga duración.

Consultar el progreso de una operación de base de datos de larga duración

Usa projects.instances.databases.operations.get para comprobar el progreso de una operación de base de datos de larga duración.

Por ejemplo, a continuación se muestra una respuesta 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"
  }
}

El valor name de la parte superior de la respuesta muestra que el servicio de Spanner ha creado una operación de base de datos de larga duración llamada projects/test01/instances/test-instance/databases/example-db/operations/_auto_1492721321097206.

Para comprobar el progreso de la operación de base de datos de larga duración, sigue estos pasos:

  1. Ve a projects.instances.databases.operations.get.

  2. En name (nombre), introduce el nombre de la operación de larga duración de la base de datos tal como se muestra en la respuesta a projects.instances.databases.create o projects.instances.databases.updateDdl.

    projects/PROJECT-ID/instances/INSTANCE-NAME/databases/example-db/operations/OPERATION-ID

    Haz los cambios siguientes:

    • PROJECT-ID: el ID del proyecto.
    • INSTANCE-NAME: el nombre de la instancia.
    • OPERATION-ID: el ID de las operaciones.

    También puede obtener el nombre de la operación de la base de datos enumerando las operaciones de larga duración de la base de datos.

  3. Haz clic en la opción para ejecutar. Cuando se completa una operación, el campo done se establece en true.

Para obtener actualizaciones continuas, invoca repetidamente el método projects.instances.databases.operations.get hasta que se complete la operación. Usa un tiempo de espera entre cada solicitud. Por ejemplo, haz una solicitud cada 10 segundos.

Listar operaciones de bases de datos de larga duración

Usa projects.instances.databases.operations.list para enumerar las operaciones de larga duración de la base de datos.

  1. Ve a projects.instances.databases.operations.list.
  2. En el campo nombre, introduce lo siguiente:

    projects/PROJECT-ID/instances/INSTANCE-NAME/databases/example-db/OPERATION-ID

    Haz los cambios siguientes:

    • PROJECT-ID: el ID del proyecto.
    • INSTANCE-NAME: el nombre de la instancia.
    • OPERATION-ID: el ID de las operaciones.
  3. Haz clic en la opción para ejecutar. La respuesta contiene una lista de operaciones de larga duración.

Cancelar una operación de base de datos de larga duración

Usa projects.instances.databases.operations.cancel para cancelar una operación de larga duración de una base de datos.

  1. Ve a projects.instances.databases.operations.cancel.
  2. En el campo del nombre, introduce el nombre de la operación de la base de datos de larga duración como se muestra en la respuesta de la operación de base de datos de larga duración.

    projects/PROJECT-ID/instances/INSTANCE-NAME/databases/example-db/OPERATION-ID

    Haz los cambios siguientes:

    • PROJECT-ID: el ID del proyecto.
    • INSTANCE-NAME: el nombre de la instancia.
    • OPERATION-ID: el ID de las operaciones.

    También puede obtener el nombre de la operación de la base de datos enumerando las operaciones de larga duración de la base de datos.

  3. Haz clic en la opción para ejecutar.

Operaciones de actualización del esquema

A continuación, se muestran las operaciones de actualización de esquemas de larga duración.

Consultar el progreso de una operación de actualización de esquema de larga duración

Consola

  1. En el menú de navegación de Spanner, selecciona la pestaña Operaciones. En la página Operaciones se muestra una lista de las operaciones en curso.

  2. Busca la operación de esquema en la lista. Si sigue en curso, la barra de progreso de la columna Hora de finalización muestra el porcentaje de la operación que se ha completado, como se muestra en la siguiente imagen:

Captura de pantalla del indicador de progreso que muestra un 98%

gcloud

Usa gcloud spanner operations describe para comprobar el progreso de una operación.

  1. Obtén el ID de la operación:

    gcloud spanner operations list \
    --instance=INSTANCE-NAME \
    --database=DATABASE-NAME \
    --type=DATABASE_UPDATE_DDL

    Haz los cambios siguientes:

    • INSTANCE-NAME: el nombre de la instancia de Spanner.
    • DATABASE-NAME: el nombre de la instancia.
    • DATABASE-NAME: el nombre de la base de datos.
  2. Ejecuta gcloud spanner operations describe:

    gcloud spanner operations describe OPERATION-ID \
    --instance=INSTANCE-NAME \
    --database=DATABASE-NAME

    Haz los cambios siguientes:

    • OPERATION-ID: el ID de la operación que quieres consultar.
    • INSTANCE-NAME: el nombre de la instancia de Spanner.
    • DATABASE-NAME: el nombre de la base de datos de Spanner.

    La sección progress de la salida muestra el porcentaje de la operación que se ha completado. El resultado es similar al siguiente:

    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

Obtén el ID de la operación:

gcloud spanner operations list \
--instance=INSTANCE-NAME \
--database=DATABASE-NAME \
--type=DATABASE_UPDATE_DDL

Haz los cambios siguientes:

  • INSTANCE-NAME: el nombre de la instancia de Spanner.
  • DATABASE-NAME: el nombre de la base de datos.

Antes de usar los datos de la solicitud, haz las siguientes sustituciones:

  • PROJECT-ID: el ID del proyecto.
  • INSTANCE-ID: el ID de instancia.
  • DATABASE-ID: el ID de la base de datos.
  • OPERATION-ID: el ID de la operación.

Método HTTP y URL:

GET https://spanner.googleapis.com/v1/projects/PROJECT-ID/instances/INSTANCE-ID/databases/DATABASE-ID/operations/OPERATION-ID

Para enviar tu solicitud, despliega una de estas opciones:

Deberías recibir una respuesta JSON similar a la siguiente:

{
...
    "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"
  }
}

Si la operación tarda demasiado, puedes cancelarla. Para obtener más información, consulta Cancelar una operación de actualización de esquema de larga duración.

Mostrar operaciones de actualización de esquemas de larga duración

gcloud

gcloud spanner operations list \
 --instance=INSTANCE-NAME \
 --database=DATABASE-NAME \
 --type=DATABASE_UPDATE_DDL

Haz los cambios siguientes:

  • INSTANCE-NAME: el nombre de la instancia de Spanner.
  • DATABASE-NAME: el nombre de la base de datos.

El resultado es similar al siguiente:

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 una operación de actualización de esquema de larga duración

gcloud

  1. Obtén el ID de la operación:

    gcloud spanner operations list \
    --instance=INSTANCE-NAME \
    --database=DATABASE-NAME \
    --type=DATABASE_UPDATE_DDL

    Haz los cambios siguientes:

    • INSTANCE-NAME: el nombre de la instancia de Spanner.
    • DATABASE-NAME: el nombre de la base de datos.
  2. Usa gcloud spanner operations cancel para cancelar una operación de actualización de esquema de larga duración.

    gcloud spanner operations cancel OPERATION-ID \
     --instance=INSTANCE-NAME

    Haz los cambios siguientes:

    • OPERATION-ID: el ID de la operación que quieres consultar.
    • INSTANCE-NAME: el nombre de la instancia de Spanner.

REST V1

Usa projects.instances.databases.operations.cancel para cancelar una operación de actualización de esquema de larga duración.

  1. Obtén el ID de la operación:

    gcloud spanner operations list \
    --instance=INSTANCE-NAME \
    --database=DATABASE-NAME \
    --type=DATABASE_UPDATE_DDL

    Haz los cambios siguientes:

    • INSTANCE-NAME: el nombre de la instancia de Spanner.
    • DATABASE-NAME: el nombre de la base de datos.
  2. Ve a projects.instances.databases.operations.cancel.

  3. En name, introduce el nombre de la operación de actualización del esquema de larga duración tal como se muestra en la respuesta de la operación de actualización del esquema de larga duración.

    projects/PROJECT-ID/instances/INSTANCE-NAME/databases/example-db/operations/OPERATION-ID

    Haz los cambios siguientes:

    • PROJECT-ID: el ID del proyecto.
    • INSTANCE-NAME: el nombre de la instancia.
    • OPERATION-ID: el ID de las operaciones.

    También puedes obtener el nombre de la operación de actualización del esquema enumerando las operaciones de instancia de larga duración.

  4. Haz clic en la opción para ejecutar. La operación deja de ejecutarse.

Operaciones de copia de seguridad y restauración

Las siguientes son operaciones de copia de seguridad de larga duración.

Comprobar el progreso de una operación de copia de seguridad o restauración de larga duración

Consola

Copia de seguridad

  1. En el menú de navegación de Spanner, selecciona la pestaña Operaciones. En la página Operaciones se muestra una lista de las operaciones en curso.

  2. Busca la operación de esquema en la lista. Si sigue en curso, la barra de progreso de la columna Hora de finalización muestra el porcentaje de la operación que se ha completado, como se muestra en la siguiente imagen:

Captura de pantalla del indicador de progreso que muestra un 98%

Restaurar

Para comprobar el progreso de la operación de restauración, consulta el indicador de progreso que se muestra durante la restauración, como se muestra en la siguiente imagen:

Captura de pantalla de un indicador de progreso que muestra un 56%

Si la operación tarda demasiado, puedes cancelarla. Para obtener más información, consulta Cancelar una operación de instancia de larga duración.

gcloud

Usa gcloud spanner operations describe para comprobar el progreso de una operación de copia de seguridad o restauración.

  1. Obtén el ID de la operación:

    gcloud spanner operations list \
    --instance=INSTANCE-NAME \
    --database=DATABASE-NAME \
    --type=TYPE

    Haz los cambios siguientes:

    • INSTANCE-NAME: el nombre de la instancia de Spanner.
    • DATABASE-NAME: el nombre de la base de datos.
    • TYPE: el tipo de operación. Los valores posibles son BACKUP y DATABASE_RESTORE.
  2. Ejecuta gcloud spanner operations describe:

    gcloud spanner operations describe OPERATION-ID \
    --instance=INSTANCE-NAME \
    --database=DATABASE-NAME

    Haz los cambios siguientes:

    • OPERATION-ID: el ID de la operación que quieres comprobar.
    • INSTANCE-NAME: el nombre de la instancia de Spanner.
    • DATABASE-NAME: el nombre de la base de datos de Spanner.

    La sección progress de la salida muestra el porcentaje de la operación que se ha completado. El resultado es similar al siguiente:

    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

Obtén el ID de la operación:

 gcloud spanner operations list 
--instance=INSTANCE-NAME
--database=DATABASE-NAME
--type=DATABASE_UPDATE_DDL

Haz los cambios siguientes:

  • INSTANCE-NAME: el nombre de la instancia de Spanner.
  • DATABASE-NAME: el nombre de la base de datos.

Antes de usar los datos de la solicitud, haz las siguientes sustituciones:

  • PROJECT-ID: el ID del proyecto.
  • INSTANCE-ID: el ID de instancia.
  • DATABASE-ID: el ID de la base de datos.
  • OPERATION-ID: el ID de la operación.

Método HTTP y URL:

GET https://spanner.googleapis.com/v1/projects/PROJECT-ID/instances/INSTANCE-ID/databases/DATABASE-ID/operations/OPERATION-ID

Para enviar tu solicitud, despliega una de estas opciones:

Deberías recibir una respuesta JSON similar a la siguiente:

{
...
    "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"
  }
}

Si la operación tarda demasiado, puedes cancelarla. Para obtener más información, consulta el artículo sobre cómo cancelar una operación de copia de seguridad de larga duración.

Mostrar operaciones de copia de seguridad o restauración de larga duración

Usa projects.instances.backups.operations.list para enumerar las operaciones de una sola copia de seguridad o projects.instances.backupOperations.list para enumerar todas las operaciones de copia de seguridad de la instancia.

  1. Ve a projects.instances.backups.operations.list.

  2. En el campo nombre, introduce lo siguiente:

    projects/PROJECT-ID/instances/INSTANCE-NAME/backups/BACKUP-NAME/OPERATION-ID

    Haz los cambios siguientes:

    • PROJECT-ID: el ID del proyecto.
    • INSTANCE-NAME: el nombre de la instancia.
    • BACKUP-NAME: el nombre de la copia de seguridad.
    • OPERATION-ID: el ID de las operaciones.
  3. Haz clic en la opción para ejecutar. La respuesta contiene una lista de operaciones de larga duración.

Cancelar una operación de copia de seguridad de larga duración

Usa projects.instances.backups.operations.cancel para cancelar una operación de copia de seguridad de larga duración.

  1. Ve a projects.instances.backups.operations.cancel.

  2. En name, introduce el nombre de la operación de copia de seguridad de larga duración tal como se muestra en la respuesta de la operación de copia de seguridad de larga duración.

    projects/PROJECT-ID/instances/INSTANCE-NAME/backups/BACKUP-NAME/operations/OPERATION-ID

    Haz los cambios siguientes:

    • PROJECT-ID: el ID del proyecto.
    • INSTANCE-NAME: el nombre de la instancia.
    • BACKUP-NAME: el nombre de la copia de seguridad.
    • OPERATION-ID: el ID de las operaciones.

    También puedes obtener el nombre de la operación de copia de seguridad mostrando las operaciones de copia de seguridad de larga duración.

  3. Haz clic en la opción para ejecutar.