En esta página, se describe cómo administrar el ciclo de vida de una operación de larga duración de Spanner con los comandos gcloud spanner operations
y la API de REST de operaciones. Algunos procedimientos también se pueden realizar en la consola de Google Cloud .
Las operaciones de larga duración son llamadas a métodos que pueden tardar una gran cantidad de tiempo en completarse. Spanner crea operaciones de larga duración para varias acciones de instancias, bases de datos y copias de seguridad. Un ejemplo es el método para restablecer una base de datos, projects.instances.databases.restore
.
Cuando restableces una base de datos, el servicio de Spanner crea una operación de larga duración para realizar un seguimiento del progreso del restablecimiento. Si la operación tarda más de lo esperado, puedes usar gcloud
para verificar el progreso de la operación. Si la operación no responde, puedes usar gcloud
para cancelarla.
Spanner proporciona APIs de operaciones que te permiten verificar el progreso de las operaciones de larga duración. También puedes enumerar y cancelar operaciones de larga duración, así como borrar operaciones de instancias de larga duración.
Puedes verificar y administrar operaciones de larga duración con lo siguiente:
- Bibliotecas cliente de Spanner
- La herramienta de línea de comandos de
gcloud
- La consola deGoogle Cloud
Comandos de la API de REST para la administración de operaciones
Administra tus operaciones de larga duración de Spanner con los siguientes métodos de 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 |
Borrar una operación de larga duración | No compatible | delete |
Verifica el progreso de una operación de larga duración | get |
get |
Enumerar las operaciones de larga duración | list |
list |
Para obtener información sobre el uso de REST con Spanner, consulta Cómo comenzar a usar Spanner con REST.
Operaciones de instancias
Las siguientes son operaciones de instancia de larga duración.
Verifica el progreso de una operación de instancia de larga duración
Usa projects.instances.operations.get
para verificar el progreso de una operación de instancia de larga duración.
A modo de 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
en la parte superior de la respuesta muestra que el servicio de Spanner creó una operación de instancia de larga duración llamada projects/test01/instances/test-instance/operations/_auto_1492721321097206
.
Para verificar el progreso de la operación de instancia de larga duración, sigue estos pasos:
- Navega a
projects.instances.operations.get
. En nombre, ingresa el nombre de la operación de instancia de larga duración como se muestra en la respuesta a
projects.instances.create
oprojects.instances.patch
. Por ejemplo:projects/PROJECT-ID/instances/INSTANCE-NAME/operations/OPERATION-ID
Reemplaza lo siguiente:
- PROJECT-ID: El ID del proyecto.
- INSTANCE-NAME: Es el nombre de la instancia.
- OPERATION-ID: Es el ID de la operación.
Para recuperar el nombre de la operación de instancia, enumera las operaciones de instancia de larga duración.
Haz clic en Ejecutar. Cuando se realiza una operación, el campo
done
se establece entrue
.
Para obtener actualizaciones continuas, invoca de manera repetida el método projects.instances.databases.operations.get
hasta que se complete la operación. Usa una retirada entre cada solicitud. Por ejemplo, realiza una solicitud cada 10
segundos.
Enumerar las operaciones de instancia de larga duración
Usa projects.instances.operations.list
para enumerar las operaciones de instancia de larga duración.
- Navega a
projects.instances.operations.list
. En nombre, ingresa lo siguiente:
projects/PROJECT-ID/instances/INSTANCE-NAME/operationsOPERATION-ID
Reemplaza lo siguiente:
- PROJECT-ID: El ID del proyecto.
- INSTANCE-NAME: Es el nombre de la instancia.
- OPERATION-ID: Es el ID de la operación.
Haz clic en 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.
- Navega a
projects.instances.operations.cancel
. En nombre, ingresa el nombre de la operación de instancia de larga duración como se muestra en la respuesta de esa operación.
projects/PROJECT-ID/instances/INSTANCE-NAME/operations/OPERATION-ID
Reemplaza lo siguiente:
- PROJECT-ID: El ID del proyecto.
- INSTANCE-NAME: Es el nombre de la instancia.
- OPERATION-ID: Es el ID de la operación.
También puedes recuperar el nombre de la operación de instancia mediante la enumeración de las operaciones de instancia de larga duración.
Haz clic en Ejecutar.
Borrar una operación de instancia de larga duración
Usa projects.instances.operations.delete
para borrar una operación de instancia de larga duración.
- Haz clic en
projects.instances.operations.delete
. En nombre, ingresa el nombre de la operación de instancia de larga duración como se muestra en la respuesta de esa operación.
projects/<VAR>PROJECT-ID</VAR>/instances/<VAR>INSTANCE-NAME</VAR>/operations/<VAR>OPERATION-ID</VAR>
Reemplaza lo siguiente:
- PROJECT-ID: El ID del proyecto.
- INSTANCE-NAME: Es el nombre de la instancia.
- OPERATION-ID: Es el ID de las operaciones.
También puedes recuperar el nombre de la operación de instancia mediante la enumeración de las operaciones de instancia de larga duración.
Navega a Ejecutar. Se borrará la operación.
Operaciones de bases de datos
Las siguientes 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
Verifica el progreso de una operación de base de datos de larga duración
Usa projects.instances.databases.operations.get
para verificar el progreso de una operación de base de datos de larga duración.
Por ejemplo, la siguiente es 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
en la parte superior de la respuesta muestra que el servicio de Spanner creó una operación de base de datos de larga duración llamada projects/test01/instances/test-instance/databases/example-db/operations/_auto_1492721321097206
.
Para verificar el progreso de la operación de base de datos de larga duración, sigue estos pasos:
En nombre, ingresa el nombre de la operación de base de datos de larga duración 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
Reemplaza lo siguiente:
- PROJECT-ID: El ID del proyecto.
- INSTANCE-NAME: Es el nombre de la instancia.
- OPERATION-ID: Es el ID de la operación.
También puedes recuperar el nombre de la operación de base de datos mediante la enumeración de las operaciones de base de datos de larga duración.
Haz clic en Ejecutar. Cuando se realiza una operación, el campo
done
se establece entrue
.
Para obtener actualizaciones continuas, invoca de manera repetida el método projects.instances.databases.operations.get
hasta que se complete la operación. Usa una retirada entre cada solicitud. Por ejemplo, realiza una solicitud cada 10
segundos.
Enumerar operaciones de base de datos de larga duración
Usa projects.instances.databases.operations.list
para enumerar las operaciones de base de datos de larga duración.
- Navega a
projects.instances.databases.operations.list
. En nombre, ingresa lo siguiente:
projects/PROJECT-ID/instances/INSTANCE-NAME/databases/example-db/OPERATION-ID
Reemplaza lo siguiente:
- PROJECT-ID: El ID del proyecto.
- INSTANCE-NAME: Es el nombre de la instancia.
- OPERATION-ID: Es el ID de la operación.
Haz clic en 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 base de datos de larga duración.
- Navega a
projects.instances.databases.operations.cancel
. En nombre, ingresa el nombre de la operación de base de datos de larga duración como se muestra en la respuesta de esa operación.
projects/PROJECT-ID/instances/INSTANCE-NAME/databases/example-db/OPERATION-ID
Reemplaza lo siguiente:
- PROJECT-ID: El ID del proyecto.
- INSTANCE-NAME: Es el nombre de la instancia.
- OPERATION-ID: Es el ID de la operación.
También puedes recuperar el nombre de la operación de base de datos mediante la enumeración de las operaciones de base de datos de larga duración.
Haz clic en Ejecutar.
Operaciones de actualización de esquemas
Las siguientes son operaciones de actualización de esquemas de larga duración.
Verifica el progreso de una operación de actualización de esquema de larga duración
Console
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 ejecución.
Busca la operación de esquema en la lista. Si aún se está ejecutando, la barra de progreso en la columna End time muestra el porcentaje de la operación que se completó, como se muestra en la siguiente imagen:
gcloud
Usa gcloud spanner operations describe
para verificar el progreso de una operación.
Obtén el ID de operación:
gcloud spanner operations list \ --instance=INSTANCE-NAME \ --database=DATABASE-NAME \ --type=DATABASE_UPDATE_DDL
Reemplaza lo siguiente:
- INSTANCE-NAME: Es el nombre de la instancia de Spanner.
- DATABASE-NAME: Es el nombre de la instancia.
- DATABASE-NAME: Es el nombre de la base de datos.
Ejecuta
gcloud spanner operations describe
:gcloud spanner operations describe OPERATION-ID \ --instance=INSTANCE-NAME \ --database=DATABASE-NAME
Reemplaza lo siguiente:
- OPERATION-ID: Es el ID de la operación que deseas verificar.
- INSTANCE-NAME: Es el nombre de la instancia de Spanner.
- DATABASE-NAME: Es el nombre de la base de datos de Spanner.
La sección
progress
en el resultado muestra el porcentaje de la operación que se completó. 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 operación:
gcloud spanner operations list \ --instance=INSTANCE-NAME \ --database=DATABASE-NAME \ --type=DATABASE_UPDATE_DDL
Reemplaza lo siguiente:
- INSTANCE-NAME: Es el nombre de la instancia de Spanner.
- DATABASE-NAME: Es el nombre de la base de datos.
Antes de usar cualquiera de los datos de solicitud a continuación, realiza los siguientes reemplazos:
- PROJECT-ID: El ID del proyecto.
- INSTANCE-ID: El ID de la instancia.
- DATABASE-ID: El ID de la base de datos.
- OPERATION-ID: Es 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, expande una de estas opciones:
Deberías recibir una respuesta JSON similar a la que se muestra a continuación:
{ ... "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 Cómo cancelar una operación de actualización de esquema de larga duración.
Enumera las operaciones de actualización de esquema de larga duración
gcloud
gcloud spanner operations list \ --instance=INSTANCE-NAME \ --database=DATABASE-NAME \ --type=DATABASE_UPDATE_DDL
Reemplaza lo siguiente:
- INSTANCE-NAME: Es el nombre de la instancia de Spanner.
- DATABASE-NAME: Es 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
Cancela una operación de actualización de esquema de larga duración
gcloud
Obtén el ID de operación:
gcloud spanner operations list \ --instance=INSTANCE-NAME \ --database=DATABASE-NAME \ --type=DATABASE_UPDATE_DDL
Reemplaza lo siguiente:
- INSTANCE-NAME: Es el nombre de la instancia de Spanner.
- DATABASE-NAME: Es 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
Reemplaza lo siguiente:
- OPERATION-ID: Es el ID de la operación que deseas verificar.
- INSTANCE-NAME: Es 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 operación:
gcloud spanner operations list \ --instance=INSTANCE-NAME \ --database=DATABASE-NAME \ --type=DATABASE_UPDATE_DDL
Reemplaza lo siguiente:
- INSTANCE-NAME: Es el nombre de la instancia de Spanner.
- DATABASE-NAME: Es el nombre de la base de datos.
En nombre, ingresa el nombre de la operación de actualización de esquema de larga duración como se muestra en la respuesta de esa operación.
projects/PROJECT-ID/instances/INSTANCE-NAME/databases/example-db/operations/OPERATION-ID
Reemplaza lo siguiente:
- PROJECT-ID: El ID del proyecto.
- INSTANCE-NAME: Es el nombre de la instancia.
- OPERATION-ID: Es el ID de las operaciones.
También puedes recuperar el nombre de la operación de actualización del esquema si enumeras las operaciones de instancia de larga duración.
Haz clic en Ejecutar. La operación deja de ejecutarse.
Operaciones de copia de seguridad y restablecimiento
Las siguientes son operaciones de instancia de larga duración.
Verifica el progreso de una operación de copia de seguridad o restablecimiento de larga duración
Console
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 que se están ejecutando actualmente.
Busca la operación de esquema en la lista. Si aún se está ejecutando, la barra de progreso en la columna End time muestra el porcentaje de la operación que se completó, como se muestra en la siguiente imagen:
Restablecer
Para verificar el progreso de la operación de restablecimiento, consulta el indicador de progreso que se muestra durante el restablecimiento, como se muestra en la siguiente imagen:
Si la operación tarda demasiado, puedes cancelarla. Para obtener más información, consulta Cómo cancelar una operación de instancia de larga duración.
gcloud
Usa gcloud spanner operations describe
para verificar el progreso de una operación de copia de seguridad o de restablecimiento.
Obtén el ID de operación:
gcloud spanner operations list \ --instance=INSTANCE-NAME \ --database=DATABASE-NAME \ --type=TYPE
Reemplaza lo siguiente:
- INSTANCE-NAME: Es el nombre de la instancia de Spanner.
- DATABASE-NAME: Es el nombre de la base de datos.
- TYPE: Es 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
Reemplaza lo siguiente:
- OPERATION-ID: El ID de la operación que deseas verificar.
- INSTANCE-NAME: Es el nombre de la instancia de Spanner.
- DATABASE-NAME: Es el nombre de la base de datos de Spanner.
La sección
progress
en el resultado muestra el porcentaje de la operación que se completó. 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 operación:
gcloud spanner operations list
--instance=INSTANCE-NAME
--database=DATABASE-NAME
--type=DATABASE_UPDATE_DDL
Reemplaza lo siguiente:
- INSTANCE-NAME: Es el nombre de la instancia de Spanner.
- DATABASE-NAME: Es el nombre de la base de datos.
Antes de usar cualquiera de los datos de solicitud a continuación, realiza los siguientes reemplazos:
- PROJECT-ID: El ID del proyecto.
- INSTANCE-ID: El ID de la instancia.
- DATABASE-ID: El ID de la base de datos.
- OPERATION-ID: Es 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, expande una de estas opciones:
Deberías recibir una respuesta JSON similar a la que se muestra a continuación:
{ ... "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 Cómo cancelar una operación de copia de seguridad de larga duración.
Enumera operaciones de copia de seguridad o restablecimiento de larga duración
Usa projects.instances.backups.operations.list
para enumerar las operaciones en una sola copia de seguridad o projects.instances.backupOperations.list
para enumerar todas las operaciones de copia de seguridad en la instancia.
En nombre, ingresa lo siguiente:
projects/PROJECT-ID/instances/INSTANCE-NAME/backups/BACKUP-NAME/OPERATION-ID
Reemplaza lo siguiente:
- PROJECT-ID: El ID del proyecto.
- INSTANCE-NAME: Es el nombre de la instancia.
- BACKUP-NAME: Es el nombre de la copia de seguridad.
- OPERATION-ID: Es el ID de la operación.
Haz clic en Ejecutar. La respuesta contiene una lista de operaciones de larga duración.
Cancela 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 nombre, ingresa el nombre de la operación de copia de seguridad de larga duración como se muestra en la respuesta de esa operación.
projects/PROJECT-ID/instances/INSTANCE-NAME/backups/BACKUP-NAME/operations/OPERATION-ID
Reemplaza lo siguiente:
- PROJECT-ID: El ID del proyecto.
- INSTANCE-NAME: Es el nombre de la instancia.
- BACKUP-NAME: Es el nombre de la copia de seguridad.
- OPERATION-ID: Es el ID de la operación.
También puedes recuperar el nombre de la operación de copia de seguridad mediante la enumeración de las operaciones de copia de seguridad de larga duración.
Haz clic en Ejecutar.