Auf dieser Seite wird beschrieben, wie Sie den Lebenszyklus eines lang andauernden Vorgangs in Cloud Spanner mithilfe der REST API für Vorgänge verwalten.
Lange laufende Vorgänge sind Methodenaufrufe, die viel Zeit in Anspruch nehmen können. Spanner erstellt lang andauernde Vorgänge für mehrere Instanz-, Datenbank- und Sicherungsaktionen. Ein Beispiel dafür ist die Methode projects.instances.databases.restore
zum Wiederherstellen einer Datenbank.
Wenn Sie eine Datenbank wiederherstellen, erstellt der Spanner-Dienst einen Vorgang mit langer Ausführungszeit, um den Fortschritt der Wiederherstellung zu verfolgen. Spanner bietet Vorgangs-APIs, mit denen Sie den Fortschritt lang andauernder Vorgänge überprüfen können. Sie können lange laufende Vorgänge auch auflisten und abbrechen und lange laufende Instanzvorgänge löschen.
Mit den folgenden Methoden können Sie lang andauernde Vorgänge prüfen und verwalten:
- Spanner-Clientbibliotheken
gcloud
-Befehlszeilentool- Die Google Cloud Console
Lang andauernde Spanner-Vorgänge mit der REST API verwalten
Verwalten Sie lange andauernde Spanner-Vorgänge mit den folgenden REST-Methoden:
Aktion | Lange laufende Datenbankvorgänge | Lange laufende Instanzvorgänge |
---|---|---|
Lange laufenden Vorgang abbrechen | cancel |
cancel |
Lange laufenden Vorgang löschen | Nicht unterstützt | Nicht unterstützt |
Fortschritt eines lang andauernden Vorgangs prüfen | get |
get |
Lange laufende Vorgänge auflisten | list |
list |
Informationen zur Verwendung von REST mit Spanner finden Sie unter Erste Schritte mit Spanner mit REST.
Datenbankvorgänge
Diese lange laufenden Datenbankvorgänge gibt es:
projects.instances.databases.create
projects.instances.databases.restore
projects.instances.databases.updateDdl
projects.instances.databaseOperations.list
Fortschritt eines lange laufenden Datenbankvorgangs prüfen
Verwenden Sie projects.instances.databases.operations.get
, um den Fortschritt eines lange laufenden Datenbankvorgangs zu prüfen.
Eine Antwort von projects.instances.databases.create
kann beispielsweise so aussehen:
{
"name": "projects/<VAR>PROJECT-ID</VAR>/instances/test-instance/databases/example-db/operations/_auto_1492721321097206",
"metadata": {
"@type": "type.googleapis.com/google.spanner.admin.database.v1.CreateDatabaseMetadata",
"database": "projects/<VAR>PROJECT-ID</VAR>/instances/test-instance/databases/example-db"
}
}
Der Wert name
am Anfang der Antwort gibt an, dass der Spanner-Dienst einen lange laufenden Datenbankvorgang namens projects/PROJECT-ID/instances/test-instance/databases/example-db/operations/_auto_1492721321097206
erstellt hat.
So prüfen Sie den Fortschritt eines lange laufenden Datenbankvorgangs:
Klicken Sie auf
projects.instances.databases.operations.get
.Geben Sie unter Name den Namen des lange laufenden Datenbankvorgangs ein, so wie er in der Antwort auf
projects.instances.databases.create
oderprojects.instances.databases.updateDdl
zurückgegeben wurde. Beispiel:projects/PROJECT-ID/instances/test-instance/databases/example-db/operations/OPERATION-ID
Ersetzen Sie Folgendes:
- PROJECT-ID durch die Projekt-ID.
- OPERATION-ID durch die Vorgangs-ID.
den Namen des Datenbankvorgangs durch Auflisten der lange laufenden Datenbankvorgänge abrufen
Klicken Sie auf Execute. Wenn ein Vorgang abgeschlossen ist, wird das Feld
done
auftrue
gesetzt.
Wenn Sie kontinuierliche Updates erhalten möchten, rufen Sie die Methode projects.instances.databases.operations.get
wiederholt auf, bis der Vorgang abgeschlossen ist. Verwenden Sie einen Backoff zwischen den einzelnen Anfragen. Stellen Sie beispielsweise alle 10 Sekunden eine Anfrage.
Lange laufende Datenbankvorgänge auflisten
Zum Auflisten lange laufender Datenbankvorgänge verwenden Sie projects.instances.databases.operations.list
.
- Klicken Sie auf
projects.instances.databases.operations.list
. Geben Sie unter Name Folgendes ein:
projects/PROJECT-ID/instances/test-instance/databases/example-db/operations
Klicken Sie auf Execute. Die Antwort enthält eine Liste mit Vorgängen mit langer Ausführungszeit.
Lange laufenden Datenbankvorgang abbrechen
Für das Abbrechen eines Instanzvorgangs mit langer Ausführungszeit verwenden Sie projects.instances.databases.operations.cancel
.
- Klicken Sie auf
projects.instances.databases.operations.cancel
. Geben Sie unter Name den Namen des lange laufenden Datenbankvorgangs ein, der in der Antwort des lange laufenden Datenbankvorgangs angezeigt wird. Beispiel:
projects/PROJECT-ID/instances/test-instance/databases/example-db/operations/_auto_1492721321097206
(Verwenden Sie statt diesem Wert den Vorgangsnamen, den Sie erhalten haben.) Sie können den Datenbankvorgangsnamen auch durch Auflisten der lange laufenden Datenbankvorgänge erhalten.
Klicken Sie auf Execute.
Schemaaktualisierungsvorgänge
Im Folgenden sind lang andauernde Schemaaktualisierungsvorgänge aufgeführt.
Fortschritt eines lange laufenden Schemaaktualisierungsvorgangs prüfen
Console
Wählen Sie im Cloud Spanner-Navigationsmenü den Tab Vorgänge aus. Auf der Seite Vorgänge wird eine Liste der derzeit ausgeführten Vorgänge angezeigt.
Suchen Sie in der Liste nach dem Schemavorgang. Wenn er noch ausgeführt wird, zeigt die Fortschrittsanzeige in der Spalte End time (Ende) den Prozentsatz des abgeschlossenen Vorgangs an, wie in der folgenden Abbildung dargestellt:
gcloud
Verwenden Sie gcloud spanner operations describe
, um den Fortschritt eines Vorgangs zu prüfen.
Rufen Sie die Vorgangs-ID ab:
gcloud spanner operations list --instance=INSTANCE-NAME \ --database=DATABASE-NAME --type=DATABASE_UPDATE_DDL
Ersetzen Sie Folgendes:
- INSTANCE-NAME durch den Spanner-Instanznamen.
- DATABASE-NAME durch den Namen der Datenbank.
Führen Sie
gcloud spanner operations describe
aus.gcloud spanner operations describe OPERATION-ID\ --instance=INSTANCE-NAME \ --database=DATABASE-NAME
Ersetzen Sie Folgendes:
- OPERATION-ID: Die Vorgangs-ID des Vorgangs, den Sie prüfen möchten.
- INSTANCE-NAME: Der Name der Spanner-Instanz.
- DATABASE-NAME: Der Name der Spanner-Datenbank.
Der Abschnitt
progress
in der Ausgabe zeigt den abgeschlossenen Vorgang in Prozent an. Die Ausgabe sieht dann ungefähr so aus: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 Version 1
Rufen Sie die Vorgangs-ID ab:
gcloud spanner operations list --instance=INSTANCE-NAME \ --database=DATABASE-NAME --type=DATABASE_UPDATE_DDL
Ersetzen Sie Folgendes:
- INSTANCE-NAME durch den Spanner-Instanznamen.
- DATABASE-NAME durch den Namen der Datenbank.
Bevor Sie die Anfragedaten verwenden, ersetzen Sie die folgenden Werte:
- project-id: die Projekt-ID
- instance-id: Die Instanz-ID.
- database-id: Die Datenbank-ID.
- operation-id: Die Vorgangs-ID.
HTTP-Methode und URL:
GET https://spanner.googleapis.com/v1/projects/project-id/instances/instance-id/databases/database-id/operations/operation-id
Wenn Sie die Anfrage senden möchten, maximieren Sie eine der folgenden Optionen:
Sie sollten in etwa folgende JSON-Antwort erhalten:
{ ... "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" } }
Wenn der Vorgang zu lange dauert, können Sie ihn abbrechen. Weitere Informationen finden Sie unter Lang andauernde Schemaaktualisierung abbrechen.
Lang andauernde Schemaaktualisierungsvorgänge auflisten
gcloud
gcloud spanner operations list --instance=INSTANCE-NAME \ --database=DATABASE-NAME --type=DATABASE_UPDATE_DDL
Ersetzen Sie Folgendes:
- INSTANCE-NAME durch den Spanner-Instanznamen.
- DATABASE-NAME durch den Namen der Datenbank.
Die Ausgabe sieht dann ungefähr so aus:
OPERATION-ID STATEMENTS DONE @TYPE
_auto_op_123456 CREATE INDEX SingersByFirstLastName ON Singers(FirstName, LastName) False UpdateDatabaseDdlMetadata
CREATE INDEX SongsBySingerAlbumSongName ON Songs(SingerId, AlbumId, SongName), INTERLEAVE IN Albums
_auto_op_234567 True CreateDatabaseMetadata
Lange laufenden Schemaaktualisierungsvorgang abbrechen
gcloud
Rufen Sie die Vorgangs-ID ab:
gcloud spanner operations list --instance=INSTANCE-NAME \ --database=DATABASE-NAME --type=DATABASE_UPDATE_DDL
Ersetzen Sie Folgendes:
- INSTANCE-NAME durch den Spanner-Instanznamen.
- DATABASE-NAME durch den Namen der Datenbank.
Mit
gcloud operations cancel
können Sie einen lange laufenden Schemaaktualisierungsvorgang abbrechen.gcloud operations cancel OPERATION-ID \ --instance=INSTANCE-NAME \
Ersetzen Sie Folgendes:
- OPERATION-ID: Die Vorgangs-ID des Vorgangs, den Sie prüfen möchten.
- INSTANCE-NAME: Der Name der Spanner-Instanz.
REST V1
Verwenden Sie projects.instances.databases.operations.cancel
, um einen lange laufenden Schemaaktualisierungsvorgang abzubrechen.
Rufen Sie die Vorgangs-ID ab:
gcloud spanner operations list --instance=INSTANCE-NAME \ --database=DATABASE-NAME --type=DATABASE_UPDATE_DDL
Ersetzen Sie Folgendes:
- INSTANCE-NAME durch den Spanner-Instanznamen.
- DATABASE-NAME durch den Namen der Datenbank.
Klicken Sie auf
projects.instances.databases.operations.cancel
.Geben Sie unter Name den Namen des lange laufenden Schemaaktualisierungsvorgangs ein, der in der Antwort des lange laufenden Schemaaktualisierungsvorgangs angezeigt wird. Beispiel:
projects/PROJECT-ID/instances/test-instance/databases/example-db/operations/OPERATION-ID
Ersetzen Sie Folgendes:
- PROJECT-ID durch die Projekt-ID.
- OPERATION-ID durch die Vorgangs-ID.
Sie können auch lang andauernde Instanzvorgänge auflisten, um den Namen des Schemaaktualisierungsvorgangs abzurufen.
Klicken Sie auf Execute. Der Vorgang wird beendet.
Sicherungs- und Wiederherstellungsvorgänge
Die folgenden Sicherungsvorgänge haben eine lange Ausführungszeit.
Fortschritt eines lange laufenden Sicherungs- oder Wiederherstellungsvorgangs prüfen
Console
Back-up
Wählen Sie im Cloud Spanner-Navigationsmenü den Tab Vorgänge aus. Auf der Seite Vorgänge wird eine Liste der derzeit ausgeführten Vorgänge angezeigt.
Suchen Sie in der Liste nach dem Schemavorgang. Wenn er noch ausgeführt wird, zeigt die Fortschrittsanzeige in der Spalte End time (Ende) den Prozentsatz des abgeschlossenen Vorgangs an, wie in der folgenden Abbildung dargestellt:
Wiederherstellen
Den Fortschritt der Wiederherstellung können Sie anhand der Fortschrittsanzeige prüfen, die während der Wiederherstellung angezeigt wird, wie in der folgenden Abbildung dargestellt:
Wenn der Vorgang zu lange dauert, können Sie ihn abbrechen. Weitere Informationen finden Sie unter Lang andauernden Instanzvorgang abbrechen.
gcloud
Verwenden Sie gcloud spanner operations describe
, um den Fortschritt eines Sicherungs- oder Wiederherstellungsvorgangs zu prüfen.
Rufen Sie die Vorgangs-ID ab:
gcloud spanner operations list --instance=INSTANCE-NAME \ --database=DATABASE-NAME --type=DATABASE_UPDATE_DDL
Ersetzen Sie Folgendes:
- INSTANCE-NAME durch den Spanner-Instanznamen.
- DATABASE-NAME durch den Namen der Datenbank.
Führen Sie
gcloud spanner operations describe
aus.gcloud spanner operations describe OPERATION-ID\ --instance=INSTANCE-NAME \ --database=DATABASE-NAME
Ersetzen Sie Folgendes:
- OPERATION-ID: Die Vorgangs-ID des Vorgangs, den Sie prüfen möchten.
- INSTANCE-NAME: Der Name der Spanner-Instanz.
- DATABASE-NAME: Der Name der Spanner-Datenbank.
Der Abschnitt
progress
in der Ausgabe zeigt den abgeschlossenen Vorgang in Prozent an. Die Ausgabe sieht dann ungefähr so aus: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 Version 1
Rufen Sie die Vorgangs-ID ab:
gcloud spanner operations list --instance=INSTANCE-NAME
--database=DATABASE-NAME --type=DATABASE_UPDATE_DDL
Ersetzen Sie Folgendes:
- INSTANCE-NAME durch den Spanner-Instanznamen.
- DATABASE-NAME durch den Namen der Datenbank.
Bevor Sie die Anfragedaten verwenden, ersetzen Sie die folgenden Werte:
- project-id: die Projekt-ID
- instance-id: Die Instanz-ID.
- database-id: Die Datenbank-ID.
- operation-id: Die Vorgangs-ID.
HTTP-Methode und URL:
GET https://spanner.googleapis.com/v1/projects/project-id/instances/instance-id/databases/database-id/operations/operation-id
Wenn Sie die Anfrage senden möchten, maximieren Sie eine der folgenden Optionen:
Sie sollten in etwa folgende JSON-Antwort erhalten:
{ ... "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" } }
Wenn der Vorgang zu lange dauert, können Sie ihn abbrechen. Weitere Informationen finden Sie unter Lang andauernden Sicherungsvorgang abbrechen.
Lang andauernde Sicherungs- oder Wiederherstellungsvorgänge auflisten
Mit projects.instances.backups.operations.list
können Sie die Vorgänge für eine einzelne Sicherung oder mit projects.instances.backupOperations.list
alle Sicherungsvorgänge in der Instanz auflisten.
Klicken Sie auf
projects.instances.backups.operations.list
.Geben Sie unter Name Folgendes ein:
projects/project-id/instances/test-instance/backups/example-db-backup-4/operations
Klicken Sie auf Execute. Die Antwort enthält eine Liste mit Vorgängen mit langer Ausführungszeit.
Sicherungsvorgang mit langer Ausführungszeit abbrechen
Verwenden Sie projects.instances.backups.operations.cancel
, um einen Sicherungsvorgang mit langer Ausführungszeit abzubrechen.
Klicken Sie auf
projects.instances.backups.operations.cancel
.Geben Sie in name den Namen des Sicherungsvorgangs mit langer Ausführungszeit ein, wie er in der Antwort des Sicherungsvorgangs mit langer Ausführungszeit angezeigt wird. Beispiel:
projects/project-id/instances/test-instance/backups/example-db-backup-4/operations/_auto_1492721321097206
Ersetzen Sie
_auto_1492721321097206
durch Ihre Vorgangs-ID.Sie können den Namen des Sicherungsvorgangs abrufen, indem Sie lang andauernde Sicherungsvorgänge auflisten.
Klicken Sie auf Execute.
Instanzvorgänge
Diese lang laufenden Instanzvorgänge gibt es:
Fortschritt eines lange laufenden Instanzvorgangs prüfen
Verwenden Sie projects.instances.operations.get
, um den Fortschritt eines lange laufenden Instanzvorgangs zu prüfen.
Eine Antwort von projects.instances.create
kann beispielsweise so aussehen:
{
"name": "projects/<VAR>PROJECT-ID</VAR>/instances/test-instance/operations/<VAR>OPERATION-ID</VAR>",
"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"
}
}
Der Wert name
am Anfang der Antwort gibt an, dass der Spanner-Dienst einen lange laufenden Instanzvorgang namens projects/PROJECT-ID/instances/test-instance/operations/<VAR>OPERATION-ID</VAR>
erstellt hat.
So prüfen Sie den Fortschritt eines lange laufenden Instanzvorgangs:
- Klicken Sie auf
projects.instances.operations.get
. Geben Sie unter Name den Namen des lange laufenden Instanzvorgangs ein, so wie er in der Antwort auf
projects.instances.create
oderprojects.instances.patch
zurückgegeben wurde. Beispiel:projects/PROJECT-ID/instances/test-instance/operations/OPERATION-ID
Ersetzen Sie Folgendes:
- PROJECT-ID durch die Projekt-ID.
- OPERATION-ID durch die Vorgangs-ID.
Sie können den Namen des Instanzvorgangs abrufen, indem Sie lang laufende Instanzvorgänge auflisten.
Klicken Sie auf Execute. Wenn ein Vorgang abgeschlossen ist, wird das Feld
done
auftrue
gesetzt.
Wenn Sie kontinuierliche Updates erhalten möchten, rufen Sie die Methode projects.instances.databases.operations.get
wiederholt auf, bis der Vorgang abgeschlossen ist. Verwenden Sie einen Backoff zwischen den einzelnen Anfragen. Stellen Sie beispielsweise alle 10 Sekunden eine Anfrage.
Lange laufende Instanzvorgänge auflisten
Mit projects.instances.operations.list
können Sie lange laufende Instanzvorgänge auflisten.
- Klicken Sie auf
projects.instances.operations.list
. Geben Sie unter Name Folgendes ein:
projects/PROJECT-ID/instances/test-instance/operations
Klicken Sie auf Execute. Die Antwort enthält eine Liste mit Vorgängen mit langer Ausführungszeit.
Lange laufenden Instanzvorgang abbrechen
Mit projects.instances.operations.cancel
können Sie einen lange laufenden Instanzvorgang abbrechen.
- Klicken Sie auf
projects.instances.operations.cancel
. Geben Sie unter Name den Namen des lange laufenden Instanzvorgangs ein, der in der Antwort des lange laufenden Instanzvorgangs angezeigt wird. Beispiel:
projects/PROJECT-ID/instances/test-instance/operations/OPERATION-ID
Ersetzen Sie Folgendes:
- PROJECT-ID durch die Projekt-ID.
- OPERATION-ID durch die Vorgangs-ID.
Sie können den Namen des Instanzvorgangs abrufen, indem Sie lang laufende Instanzvorgänge auflisten.
Klicken Sie auf Execute.
Lange laufenden Instanzvorgang löschen
Zum Löschen eines lange laufenden Instanzvorgangs verwenden Sie projects.instances.operations.delete
.
- Klicken Sie auf
projects.instances.operations.delete
. Geben Sie unter Name den Namen des lange laufenden Instanzvorgangs ein, der in der Antwort des lange laufenden Instanzvorgangs angezeigt wird. Beispiel:
projects/PROJECT-ID/instances/test-instance/operations/OPERATION-ID
Ersetzen Sie Folgendes:
- PROJECT-ID durch die Projekt-ID.
- OPERATION-ID durch die Vorgangs-ID.
Sie können den Namen des Instanzvorgangs abrufen, indem Sie lang laufende Instanzvorgänge auflisten.
Klicken Sie auf Execute. Der Vorgang wird gelöscht.