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:
- Bibliotecas de cliente de Spanner
- La herramienta de línea de comandos
gcloud
- La Google Cloud consola
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:
- Ve a
projects.instances.operations.get
. 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
oprojects.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.
Haz clic en la opción para ejecutar. Cuando se completa una operación, el campo
done
se establece entrue
.
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.
- Ve a
projects.instances.operations.list
. 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.
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.
- Ve a
projects.instances.operations.cancel
. 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.
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.
- Haz clic en
projects.instances.operations.delete
. 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.
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.
projects.instances.databases.create
projects.instances.databases.restore
projects.instances.databases.updateDdl
projects.instances.databaseOperations.list
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:
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
oprojects.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.
Haz clic en la opción para ejecutar. Cuando se completa una operación, el campo
done
se establece entrue
.
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.
- Ve a
projects.instances.databases.operations.list
. 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.
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.
- Ve a
projects.instances.databases.operations.cancel
. 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.
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
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.
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:
gcloud
Usa gcloud spanner operations describe
para comprobar el progreso de una operación.
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.
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
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.
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.
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.
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.
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
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.
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:
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:
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.
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
yDATABASE_RESTORE
.
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.
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.
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.
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.
Haz clic en la opción para ejecutar.