Questa pagina descrive come gestire il ciclo di vita di un'operazione a lungo termine di Spanner utilizzando i comandi gcloud spanner operations
e l'API REST per le operazioni. Alcune procedure possono anche
nella console Google Cloud.
Le operazioni a lunga esecuzione sono chiamate di metodo che potrebbero richiedere una quantità considerevole
per completare l'operazione. Spanner crea operazioni a lunga esecuzione
diverse azioni relative a istanze, database e backup. Un esempio è il metodo
ripristinare un database,
projects.instances.databases.restore
Quando ripristini un database, il servizio Spanner crea un'istanza
un'operazione a lunga esecuzione per monitorare
l'avanzamento del ripristino. Se l'operazione richiede più tempo del previsto, puoi utilizzare gcloud
per controllare lo stato di avanzamento. Se l'operazione non risponde, puoi utilizzare gcloud
per annullare l'operazione
operativa.
Spanner fornisce API di operazioni che ti consentono di controllare lo stato di avanzamento delle operazioni a lunga esecuzione. Puoi anche elencare ed annullare le operazioni di lunga durata ed eliminare le operazioni di istanze di lunga durata.
Puoi controllare e gestire le operazioni a lunga esecuzione con quanto segue:
- Librerie client di Spanner
- Lo strumento a riga di comando
gcloud
- La console Google Cloud
Comandi API REST per la gestione delle operazioni
Gestisci le operazioni a lunga esecuzione di Spanner utilizzando i seguenti metodi REST:
Azione | Operazioni di database a lunga esecuzione | Operazioni delle istanze a lunga esecuzione |
---|---|---|
Annullare un'operazione a lunga esecuzione | cancel |
cancel |
Elimina un'operazione a lunga esecuzione | Non supportato | delete |
Controllare l'avanzamento di un'operazione a lunga esecuzione | get |
get |
Elenca le operazioni a lunga esecuzione | list |
list |
Per informazioni sull'utilizzo di REST con Spanner, consulta Iniziare a utilizzare Spanner tramite REST.
Operazioni istanza
Di seguito sono riportate le operazioni di istanze a lunga esecuzione.
Controlla l'avanzamento di un'operazione a lunga esecuzione su un'istanza
Utilizza projects.instances.operations.get
per controllare l'avanzamento di un'operazione
a lunga esecuzione su un'istanza.
Ad esempio, questa è una risposta di
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"
}
}
Il valore name
nella parte superiore della risposta indica che il servizio Spanner ha creato un'operazione di istanza a lungo termine denominata projects/test01/instances/test-instance/operations/_auto_1492721321097206
.
Per controllare lo stato di avanzamento dell'operazione dell'istanza a lungo termine:
- Vai a
projects.instances.operations.get
. Per name, inserisci il nome dell'operazione di istanza a lungo termine come mostrato nella risposta a
projects.instances.create
oprojects.instances.patch
. Ad esempio:projects/PROJECT-ID/instances/INSTANCE-NAME/operations/OPERATION-ID
Sostituisci quanto segue:
- PROJECT-ID: l'ID progetto.
- INSTANCE-NAME: il nome dell'istanza.
- OPERATION-ID: l'ID operazioni.
Puoi recuperare il nome dell'operazione dell'istanza elencando le operazioni a lunga esecuzione dell'istanza.
Fai clic su Execute (Esegui). Al termine di un'operazione, il campo
done
viene impostato sutrue
.
Per ricevere aggiornamenti continui, richiama ripetutamente il metodo
projects.instances.databases.operations.get
fino al completamento dell'operazione
fatto. Utilizza un backoff tra una richiesta e l'altra. Ad esempio, invia una richiesta ogni 10 secondi.
Elenca le operazioni a lunga esecuzione delle istanze
Utilizza projects.instances.operations.list
per elencare le operazioni di istanze a lunga esecuzione.
- Vai a
projects.instances.operations.list
. Per nome, inserisci:
projects/PROJECT-ID/instances/INSTANCE-NAME/operationsOPERATION-ID
Sostituisci quanto segue:
- PROJECT-ID: l'ID progetto.
- INSTANCE-NAME: il nome dell'istanza.
- OPERATION-ID: l'ID operazione.
Fai clic su Execute (Esegui). La risposta contiene un elenco di operazioni a lunga esecuzione.
Annulla un'operazione di istanza a lunga esecuzione
Utilizza projects.instances.operations.cancel
per annullare un'operazione di istanza a lunga esecuzione.
- Vai a
projects.instances.operations.cancel
. In name, inserisci il nome dell'operazione di istanza a lunga esecuzione come mostrato in dell'istanza a lunga esecuzione.
projects/PROJECT-ID/instances/INSTANCE-NAME/operations/OPERATION-ID
Sostituisci quanto segue:
- PROJECT-ID: l'ID progetto.
- INSTANCE-NAME: il nome dell'istanza.
- OPERATION-ID: l'ID operazioni.
Puoi anche recuperare il nome dell'operazione dell'istanza elenca le operazioni dell'istanza a lunga esecuzione.
Fai clic su Execute (Esegui).
Eliminare un'operazione di istanza a lunga esecuzione
Utilizza projects.instances.operations.delete
per eliminare un'operazione
a lunga esecuzione dell'istanza.
- Fai clic su
projects.instances.operations.delete
. In name, inserisci il nome dell'operazione a lunga esecuzione dell'istanza come mostrato nella risposta dell'operazione a lunga esecuzione dell'istanza.
projects/<VAR>PROJECT-ID</VAR>/instances/<VAR>INSTANCE-NAME</VAR>/operations/<VAR>OPERATION-ID</VAR>
Sostituisci quanto segue:
- PROJECT-ID: l'ID progetto.
- INSTANCE-NAME: il nome dell'istanza.
- OPERATION-ID: l'ID operazione.
Puoi anche recuperare il nome dell'operazione dell'istanza elencando le operazioni dell'istanza a lunga esecuzione.
Vai ad Esegui. L'operazione viene eliminata.
Operazioni del database
Di seguito sono riportate le operazioni di database a lunga esecuzione.
projects.instances.databases.create
projects.instances.databases.restore
projects.instances.databases.updateDdl
projects.instances.databaseOperations.list
Verificare l'avanzamento di un'operazione di database a lunga esecuzione
Utilizza projects.instances.databases.operations.get
per controllare lo stato di avanzamento di un'operazione di database a lunga esecuzione.
Ad esempio, di seguito è riportata una risposta da
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"
}
}
Il valore name
nella parte superiore della risposta indica che lo Spanner
ha creato un'operazione di database a lunga esecuzione denominata
projects/test01/instances/test-instance/databases/example-db/operations/_auto_1492721321097206
.
Per verificare l'avanzamento dell'operazione di database a lunga esecuzione:
In name, inserisci il nome dell'operazione di database a lunga esecuzione come mostrato nella risposta a
projects.instances.databases.create
oprojects.instances.databases.updateDdl
.projects/PROJECT-ID/instances/INSTANCE-NAME/databases/example-db/operations/OPERATION-ID
Sostituisci quanto segue:
- PROJECT-ID: l'ID progetto.
- INSTANCE-NAME: il nome dell'istanza.
- OPERATION-ID: l'ID operazioni.
Puoi anche recuperare il nome dell'operazione di database elencando le operazioni di database di lunga durata.
Fai clic su Execute (Esegui). Al termine di un'operazione, il campo
done
viene impostato sutrue
.
Per ricevere aggiornamenti continui, invoca ripetutamente il metodo projects.instances.databases.operations.get
finché l'operazione non è completata. Utilizza un backoff tra una richiesta e l'altra. Ad esempio, invia una richiesta ogni 10 secondi.
Elenca le operazioni di database a lunga esecuzione
Utilizza projects.instances.databases.operations.list
per elencare le operazioni
di database a lunga esecuzione.
- Vai a
projects.instances.databases.operations.list
. In nome, inserisci:
projects/PROJECT-ID/instances/INSTANCE-NAME/databases/example-db/OPERATION-ID
Sostituisci quanto segue:
- PROJECT-ID: l'ID progetto.
- INSTANCE-NAME: il nome dell'istanza.
- OPERATION-ID: l'ID operazione.
Fai clic su Execute (Esegui). La risposta contiene un elenco di operazioni a lunga esecuzione.
Annullare un'operazione di database di lunga durata
Utilizza projects.instances.databases.operations.cancel
per annullare un'operazione di database a lunga esecuzione.
- Vai a
projects.instances.databases.operations.cancel
. Per name, inserisci il nome dell'operazione a lunga esecuzione del database come mostrato nella risposta dell'operazione a lunga esecuzione del database.
projects/PROJECT-ID/instances/INSTANCE-NAME/databases/example-db/OPERATION-ID
Sostituisci quanto segue:
- PROJECT-ID: l'ID progetto.
- INSTANCE-NAME: il nome dell'istanza.
- OPERATION-ID: l'ID operazioni.
Puoi anche recuperare il nome dell'operazione di database elencando le operazioni di database a lunga esecuzione.
Fai clic su Execute (Esegui).
Operazioni di aggiornamento dello schema
Di seguito sono riportate le operazioni di aggiornamento dello schema a lunga esecuzione.
Controllare lo stato di avanzamento di un'operazione di aggiornamento dello schema di lunga durata
Console
Nel menu di navigazione di Spanner, seleziona la scheda Operazioni. La pagina Operazioni mostra un elenco di operazioni in esecuzione.
Trova l'operazione dello schema nell'elenco. Se è ancora in esecuzione, l'avanzamento nella colonna Ora di fine mostra la percentuale dell'operazione completa, come illustrato nell'immagine seguente:
gcloud
Utilizza gcloud spanner operations describe
per controllare l'avanzamento di un'operazione.
Recupera l'ID operazione:
gcloud spanner operations list \ --instance=INSTANCE-NAME \ --database=DATABASE-NAME \ --type=DATABASE_UPDATE_DDL
Sostituisci quanto segue:
- INSTANCE-NAME: il nome dell'istanza Spanner.
- DATABASE-NAME: il nome dell'istanza.
- DATABASE-NAME: il nome del database.
Esegui
gcloud spanner operations describe
:gcloud spanner operations describe OPERATION-ID \ --instance=INSTANCE-NAME \ --database=DATABASE-NAME
Sostituisci quanto segue:
- OPERATION-ID: l'ID operazione dell'operazione che vuoi controllare.
- INSTANCE-NAME: il nome dell'istanza Spanner.
- DATABASE-NAME: il nome del database Spanner.
La sezione
progress
nell'output mostra la percentuale dell'operazione completata. L'output è simile al seguente: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
Recupera l'ID operazione:
gcloud spanner operations list \ --instance=INSTANCE-NAME \ --database=DATABASE-NAME \ --type=DATABASE_UPDATE_DDL
Sostituisci quanto segue:
- INSTANCE-NAME: il nome dell'istanza Spanner.
- DATABASE-NAME: il nome del database.
Prima di utilizzare i dati della richiesta, effettua le seguenti sostituzioni:
- PROJECT-ID: l'ID progetto.
- INSTANCE-ID: l'ID istanza.
- DATABASE-ID: l'ID del database.
- OPERATION-ID: l'ID operazione.
Metodo HTTP e URL:
GET https://spanner.googleapis.com/v1/projects/PROJECT-ID/instances/INSTANCE-ID/databases/DATABASE-ID/operations/OPERATION-ID
Per inviare la richiesta, espandi una delle seguenti opzioni:
Dovresti ricevere una risposta JSON simile alla seguente:
{ ... "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 l'operazione richiede troppo tempo, puoi annullarla. Per ulteriori informazioni, vedi Annulla un'operazione di aggiornamento dello schema a lunga esecuzione.
Elenca le operazioni di aggiornamento dello schema a lunga esecuzione
gcloud
gcloud spanner operations list \ --instance=INSTANCE-NAME \ --database=DATABASE-NAME \ --type=DATABASE_UPDATE_DDL
Sostituisci quanto segue:
- INSTANCE-NAME: il nome dell'istanza Spanner.
- DATABASE-NAME: il nome del database.
L'output è simile al seguente:
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
Annulla un'operazione di aggiornamento dello schema a lunga esecuzione
gcloud
Recupera l'ID operazione:
gcloud spanner operations list \ --instance=INSTANCE-NAME \ --database=DATABASE-NAME \ --type=DATABASE_UPDATE_DDL
Sostituisci quanto segue:
- INSTANCE-NAME: il nome dell'istanza Spanner.
- DATABASE-NAME: il nome del database.
Utilizza la
gcloud spanner operations cancel
per annullare un'operazione di aggiornamento dello schema a lunga esecuzione.gcloud spanner operations cancel OPERATION-ID \ --instance=INSTANCE-NAME
Sostituisci quanto segue:
- OPERATION-ID: l'ID operazione dell'operazione che vuoi controllare.
- INSTANCE-NAME: il nome dell'istanza Spanner.
REST V1
Utilizza projects.instances.databases.operations.cancel
per annullare un'operazione di aggiornamento dello schema a lunga esecuzione.
Recupera l'ID operazione:
gcloud spanner operations list \ --instance=INSTANCE-NAME \ --database=DATABASE-NAME \ --type=DATABASE_UPDATE_DDL
Sostituisci quanto segue:
- INSTANCE-NAME: il nome dell'istanza Spanner.
- DATABASE-NAME: il nome del database.
Per name, inserisci il nome dell'operazione di aggiornamento dello schema a lunga esecuzione come mostrato nella risposta dell'operazione di aggiornamento dello schema a lunga esecuzione.
projects/PROJECT-ID/instances/INSTANCE-NAME/databases/example-db/operations/OPERATION-ID
Sostituisci quanto segue:
- PROJECT-ID: l'ID progetto.
- INSTANCE-NAME: il nome dell'istanza.
- OPERATION-ID: l'ID operazione.
Puoi anche recuperare il nome dell'operazione di aggiornamento dello schema elencando le operazioni di istanza di lunga durata.
Fai clic su Execute (Esegui). L'esecuzione dell'operazione viene interrotta.
Operazioni di backup e ripristino
Di seguito sono riportate le operazioni di backup a lunga esecuzione.
Controllare lo stato di un'operazione di backup o ripristino di lunga durata
Console
Backup
Nel menu di navigazione di Spanner, seleziona la scheda Operazioni. La pagina Operazioni mostra un elenco delle operazioni attualmente in esecuzione.
Trova l'operazione dello schema nell'elenco. Se è ancora in esecuzione, la barra di avanzamento nella colonna Ora di fine mostra la percentuale dell'operazione completata, come mostrato nell'immagine seguente:
Ripristina
Per verificare l'avanzamento dell'operazione di ripristino, controlla l'indicatore di avanzamento visualizzato durante il ripristino, come illustrato nell'immagine seguente:
Se l'operazione richiede troppo tempo, puoi annullarla. Per ulteriori informazioni, vedi Annulla un'operazione dell'istanza a lunga esecuzione.
gcloud
Utilizza gcloud spanner operations describe
per controllare l'avanzamento di un'operazione di backup o ripristino.
Recupera l'ID operazione:
gcloud spanner operations list \ --instance=INSTANCE-NAME \ --database=DATABASE-NAME \ --type=DATABASE_UPDATE_DDL
Sostituisci quanto segue:
- INSTANCE-NAME: il nome dell'istanza Spanner.
- DATABASE-NAME: il nome del database.
Esegui
gcloud spanner operations describe
:gcloud spanner operations describe OPERATION-ID \ --instance=INSTANCE-NAME \ --database=DATABASE-NAME
Sostituisci quanto segue:
- OPERATION-ID: l'ID dell'operazione che che vuoi controllare.
- INSTANCE-NAME: il nome dell'istanza Spanner.
- DATABASE-NAME: il nome del database Spanner.
La sezione
progress
nell'output mostra la percentuale dell'operazione completata. L'output è simile al seguente: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
Recupera l'ID operazione:
gcloud spanner operations list
--instance=INSTANCE-NAME
--database=DATABASE-NAME
--type=DATABASE_UPDATE_DDL
Sostituisci quanto segue:
- INSTANCE-NAME: il nome dell'istanza Spanner.
- DATABASE-NAME: il nome del database.
Prima di utilizzare i dati della richiesta, effettua le seguenti sostituzioni:
- PROJECT-ID: l'ID progetto.
- INSTANCE-ID: l'ID istanza.
- DATABASE-ID: l'ID del database.
- OPERATION-ID: l'ID operazione.
Metodo HTTP e URL:
GET https://spanner.googleapis.com/v1/projects/PROJECT-ID/instances/INSTANCE-ID/databases/DATABASE-ID/operations/OPERATION-ID
Per inviare la richiesta, espandi una delle seguenti opzioni:
Dovresti ricevere una risposta JSON simile alla seguente:
{ ... "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 l'operazione richiede troppo tempo, puoi annullarla. Per ulteriori informazioni, consulta Annullare un'operazione di backup di lunga durata.
Elenca le operazioni di backup o ripristino a lunga esecuzione
Utilizza projects.instances.backups.operations.list
per elencare le operazioni su un singolo backup o projects.instances.backupOperations.list
per elencare tutte le operazioni di backup nell'istanza.
In nome, inserisci:
projects/PROJECT-ID/instances/INSTANCE-NAME/backups/BACKUP-NAME/OPERATION-ID
Sostituisci quanto segue:
- PROJECT-ID: l'ID progetto.
- INSTANCE-NAME: il nome dell'istanza.
- BACKUP-NAME: il nome del backup.
- OPERATION-ID: l'ID operazione.
Fai clic su Execute (Esegui). La risposta contiene un elenco di operazioni a lunga esecuzione.
Annullare un'operazione di backup a lunga esecuzione
Utilizza projects.instances.backups.operations.cancel
per annullare un'operazione di backup a lunga esecuzione.
Per name, inserisci il nome dell'operazione di backup a lunga esecuzione come mostrato nella risposta dell'operazione di backup a lunga esecuzione.
projects/PROJECT-ID/instances/INSTANCE-NAME/backups/BACKUP-NAME/operations/OPERATION-ID
Sostituisci quanto segue:
- PROJECT-ID: l'ID progetto.
- INSTANCE-NAME: il nome dell'istanza.
- BACKUP-NAME: il nome del backup.
- OPERATION-ID: l'ID operazioni.
Puoi anche recuperare il nome dell'operazione di backup elencando le operazioni di backup di lunga durata.
Fai clic su Execute (Esegui).