Lang andauernde Vorgänge verwalten und beobachten

Auf dieser Seite wird beschrieben, wie Sie den Lebenszyklus eines Spanners verwalten Vorgang mit langer Ausführungszeit mit gcloud spanner operations-Befehlen und den Operations REST API. Einige Verfahren können auch in der Google Cloud Console erfolgen.

Lang andauernde Vorgänge sind Methodenaufrufe, die viel Zeit in Anspruch abgeschlossen werden muss. erstellt Spanner lang andauernde Vorgänge für Instanzen-, Datenbank- und Sicherungsaktionen. Ein Beispiel ist die Methode, eine Datenbank wiederherzustellen, projects.instances.databases.restore. Wenn Sie eine Datenbank wiederherstellen, erstellt der Spanner-Dienst eine lange laufenden Vorgang, um den Fortschritt der Wiederherstellung zu verfolgen. Wenn der Vorgang länger als erwartet ist, können Sie mit gcloud den Fortschritt . Wenn der Vorgang nicht reagiert, können Sie mit gcloud den Vorgang abbrechen. .

Spanner bietet Vorgangs-APIs, mit denen Sie den Fortschritt prüfen können von lang andauernden Vorgängen. Sie können auch eine Liste mit langer Laufzeit und löschen lange laufende Instanzvorgänge.

Sie können lang andauernde Vorgänge so prüfen und verwalten:

REST API-Befehle für die Betriebsverwaltung

Verwalten Sie lang 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 delete
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

Instanzvorgänge

Diese lang laufenden Instanzvorgänge gibt es:

Fortschritt eines lange laufenden Instanzvorgangs prüfen

projects.instances.operations.get verwenden um den Fortschritt eines lange laufenden Instanzvorgangs zu überprüfen.

Eine Antwort von projects.instances.create kann beispielsweise so aussehen:

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

Der Wert name am Anfang der Antwort zeigt den Spanner- Der Dienst hat einen lange laufenden Instanzvorgang namens projects/test01/instances/test-instance/operations/_auto_1492721321097206.

So prüfen Sie den Fortschritt des lange laufenden Instanzvorgangs:

  1. Gehen Sie zu projects.instances.operations.get.
  2. Geben Sie unter Name den Namen des lange laufenden Instanzvorgangs ein, so wie er in der Antwort auf projects.instances.create oder projects.instances.patch zurückgegeben wurde. Beispiel:

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

    Ersetzen Sie Folgendes:

    • PROJECT-ID: Projekt-ID.
    • INSTANCE-NAME: der Name der Instanz.
    • OPERATION-ID: die Vorgangs-ID.

    Sie können den Instanzvorgangsnamen abrufen, indem Sie lange laufende Instanzvorgänge auflisten.

  3. Klicken Sie auf Ausführen. Wenn ein Vorgang abgeschlossen ist, ist das Feld done auf true.

Rufen Sie zum Abrufen kontinuierlicher Updates wiederholt die Methode projects.instances.databases.operations.get, bis der Vorgang fertig. Verwenden Sie einen Backoff zwischen den einzelnen Anfragen. Beispiel: Eine Anfrage alle zehn Sekunden.

Lange laufende Instanzvorgänge auflisten

projects.instances.operations.list verwenden um lange laufende Instanzvorgänge aufzulisten.

  1. Gehen Sie zu projects.instances.operations.list.
  2. Geben Sie unter Name Folgendes ein:

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

    Ersetzen Sie Folgendes:

    • PROJECT-ID: Projekt-ID.
    • INSTANCE-NAME: der Name der Instanz.
    • OPERATION-ID: die Vorgangs-ID.
  3. Klicken Sie auf Ausführen. Die Antwort enthält eine Liste lang andauernder Vorgänge.

Lange laufenden Instanzvorgang abbrechen

projects.instances.operations.cancel verwenden einen lange laufenden Instanzvorgang abbrechen.

  1. Gehen Sie zu projects.instances.operations.cancel.
  2. Geben Sie unter Name den Namen des lange laufenden Instanzvorgangs ein, der in der Antwort des lange laufenden Instanzvorgangs angezeigt wird.

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

    Ersetzen Sie Folgendes:

    • PROJECT-ID: Projekt-ID.
    • INSTANCE-NAME: der Name der Instanz.
    • OPERATION-ID: die Vorgangs-ID.

    Sie können den Instanzvorgangsnamen auch abrufen, indem Sie lange laufende Instanzvorgänge auflisten.

  3. Klicken Sie auf Ausführen.

Lange laufenden Instanzvorgang löschen

projects.instances.operations.delete verwenden um einen lange laufenden Instanzvorgang zu löschen.

  1. Klicken Sie auf projects.instances.operations.delete.
  2. Geben Sie unter Name den Namen des lange laufenden Instanzvorgangs ein, der in der Antwort des lange laufenden Instanzvorgangs angezeigt wird.

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

    Ersetzen Sie Folgendes:

    • PROJECT-ID: Projekt-ID.
    • INSTANCE-NAME: der Name der Instanz.
    • OPERATION-ID: die Vorgangs-ID.

    Sie können den Instanzvorgangsnamen auch abrufen, indem Sie lange laufende Instanzvorgänge auflisten.

  3. Gehen Sie zu Execute (Ausführen). Der Vorgang wird gelöscht.

Datenbankvorgänge

Diese lange laufenden Datenbankvorgänge gibt es:

Fortschritt eines lange laufenden Datenbankvorgangs prüfen

projects.instances.databases.operations.get verwenden um den Fortschritt eines lange laufenden Datenbankvorgangs zu überprüfen.

Hier sehen Sie eine Antwort von 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"
  }
}

Der Wert name am Anfang der Antwort zeigt an, dass der Spanner- hat der Dienst einen lange laufenden Datenbankvorgang namens projects/test01/instances/test-instance/databases/example-db/operations/_auto_1492721321097206.

So prüfen Sie den Fortschritt des lange laufenden Datenbankvorgangs:

  1. Gehen Sie zu projects.instances.databases.operations.get.

  2. Geben Sie unter Name den Namen des lange laufenden Datenbankvorgangs ein, so wie er in der Antwort auf projects.instances.databases.create oder projects.instances.databases.updateDdl zurückgegeben wurde.

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

    Ersetzen Sie Folgendes:

    • PROJECT-ID: Projekt-ID.
    • INSTANCE-NAME: der Name der Instanz.
    • OPERATION-ID: die Vorgangs-ID.

    Sie können den Namen des Datenbankvorgangs auch abrufen, indem Sie lange laufende Datenbankvorgänge auflisten.

  3. Klicken Sie auf Ausführen. Wenn ein Vorgang abgeschlossen ist, ist das Feld done auf true.

Rufen Sie zum Abrufen kontinuierlicher Updates wiederholt die Methode projects.instances.databases.operations.get, bis der Vorgang fertig. Verwenden Sie einen Backoff zwischen den einzelnen Anfragen. Beispiel: Eine Anfrage alle zehn Sekunden.

Lange laufende Datenbankvorgänge auflisten

projects.instances.databases.operations.list verwenden um lange laufende Datenbankvorgänge aufzulisten.

  1. Gehen Sie zu projects.instances.databases.operations.list.
  2. Geben Sie unter Name Folgendes ein:

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

    Ersetzen Sie Folgendes:

    • PROJECT-ID: Projekt-ID.
    • INSTANCE-NAME: der Name der Instanz.
    • OPERATION-ID: die Vorgangs-ID.
  3. Klicken Sie auf Ausführen. Die Antwort enthält eine Liste lang andauernder Vorgänge.

Lange laufenden Datenbankvorgang abbrechen

projects.instances.databases.operations.cancel verwenden einen lange laufenden Datenbankvorgang abbrechen.

  1. Gehen Sie zu projects.instances.databases.operations.cancel.
  2. Geben Sie unter Name den Namen des lange laufenden Datenbankvorgangs ein, der in der Antwort des lange laufenden Datenbankvorgangs angezeigt wird.

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

    Ersetzen Sie Folgendes:

    • PROJECT-ID: Projekt-ID.
    • INSTANCE-NAME: der Name der Instanz.
    • OPERATION-ID: die Vorgangs-ID.

    Sie können den Namen des Datenbankvorgangs auch abrufen, indem Sie lange laufende Datenbankvorgänge auflisten.

  3. Klicken Sie auf Ausführen.

Schemaaktualisierungsvorgänge

Im Folgenden finden Sie einige lang andauernde Schemaaktualisierungsvorgänge.

Fortschritt einer lang andauernden Schemaaktualisierung prüfen

Console

  1. Wählen Sie im Spanner-Navigationsmenü den Tab Vorgänge aus. Die Auf der Seite Vorgänge wird eine Liste der laufenden Vorgänge angezeigt.

  2. Suchen Sie in der Liste nach dem Schemavorgang. Wird sie noch ausgeführt, wird der Fortschritt Der Balken in der Spalte Ende zeigt den Prozentsatz des Vorgangs an, abgeschlossen ist, wie in der folgenden Abbildung gezeigt:

Screenshot der Fortschrittsanzeige mit 98%

gcloud

gcloud spanner operations describe verwenden um den Fortschritt eines Vorgangs zu überprüfen.

  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: der Name der Spanner-Instanz.
    • DATABASE-NAME: der Name der Instanz.
    • DATABASE-NAME: der Name der Datenbank.
  2. 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 gewünschten Vorgangs um dies zu überprüfen.
    • INSTANCE-NAME: der Name der Spanner-Instanz.
    • DATABASE-NAME: der Name der Spanner-Datenbank.

    Der Abschnitt progress in der Ausgabe zeigt den Prozentsatz des Vorgangs an. vollständig sind. 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: der Name der Spanner-Instanz.
  • DATABASE-NAME: der Name der Datenbank.

Ersetzen Sie diese Werte in den folgenden Anfragedaten:

  • PROJECT-ID: Projekt-ID.
  • INSTANCE-ID: 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 Schemaaktualisierungsvorgang 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: der Name der Spanner-Instanz.
  • DATABASE-NAME: der Name 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
_auto_op_234567  CREATE INDEX SongsBySingerAlbumSongName ON Songs(SingerId, AlbumId, SongName), INTERLEAVE IN Albums  True   CreateDatabaseMetadata

Lang andauernden Schemaaktualisierungsvorgang abbrechen

gcloud

  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: der Name der Spanner-Instanz.
    • DATABASE-NAME: der Name der Datenbank.
  2. Verwenden Sie den gcloud spanner operations cancel. um eine lange andauernde Schemaaktualisierung abzubrechen.

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

    Ersetzen Sie Folgendes:

    • OPERATION-ID: die Vorgangs-ID des gewünschten Vorgangs um dies zu überprüfen.
    • INSTANCE-NAME: der Name der Spanner-Instanz.

REST V1

projects.instances.databases.operations.cancel verwenden um eine lange andauernde Schemaaktualisierung abzubrechen.

  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: der Name der Spanner-Instanz.
    • DATABASE-NAME: der Name der Datenbank.
  2. Gehen Sie zu projects.instances.databases.operations.cancel.

  3. Geben Sie unter Name den Namen des lange laufenden Schemaaktualisierungsvorgangs so ein: wie in der Antwort des lange laufenden Schemaaktualisierungsvorgangs dargestellt.

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

    Ersetzen Sie Folgendes:

    • PROJECT-ID: Projekt-ID.
    • INSTANCE-NAME: der Name der Instanz.
    • OPERATION-ID: die Vorgangs-ID.

    Sie können den Namen des Schemaaktualisierungsvorgangs auch abrufen, indem Sie lange laufende Instanzvorgänge auflisten.

  4. Klicken Sie auf Ausführen. 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

Sicherung

  1. Wählen Sie im Spanner-Navigationsmenü den Tab Vorgänge aus. Die Auf der Seite Vorgänge wird eine Liste der aktuell ausgeführten Vorgänge angezeigt.

  2. Suchen Sie in der Liste nach dem Schemavorgang. Wird sie noch ausgeführt, wird der Fortschritt Der Balken in der Spalte Ende zeigt den Prozentsatz des Vorgangs an, abgeschlossen ist, wie in der folgenden Abbildung gezeigt:

Screenshot der Fortschrittsanzeige mit 98%

Wiederherstellen

Den Fortschritt der Wiederherstellung können Sie der Fortschrittsanzeige entnehmen. der während der Wiederherstellung angezeigt wird, wie in der folgenden Abbildung dargestellt:

Screenshot der Fortschrittsanzeige mit 56%

Wenn der Vorgang zu lange dauert, können Sie ihn abbrechen. Weitere Informationen finden Sie unter Lang andauernden Instanzvorgang abbrechen

gcloud

gcloud spanner operations describe verwenden um den Fortschritt eines Sicherungs- oder Wiederherstellungsvorgangs zu überprüfen.

  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: der Name der Spanner-Instanz.
    • DATABASE-NAME: der Name der Datenbank.
  2. 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 die Sie überprü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 Prozentsatz des Vorgangs an. vollständig sind. 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: der Name der Spanner-Instanz.
  • DATABASE-NAME: der Name der Datenbank.

Ersetzen Sie diese Werte in den folgenden Anfragedaten:

  • PROJECT-ID: Projekt-ID.
  • INSTANCE-ID: 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

projects.instances.backups.operations.list verwenden zum Auflisten der Vorgänge für eine einzelne Sicherung oder projects.instances.backupOperations.list um alle Sicherungsvorgänge in der Instanz aufzulisten.

  1. Gehen Sie zu projects.instances.backups.operations.list.

  2. Geben Sie unter Name Folgendes ein:

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

    Ersetzen Sie Folgendes:

    • PROJECT-ID: Projekt-ID.
    • INSTANCE-NAME: der Name der Instanz.
    • BACKUP-NAME: der Name der Sicherung.
    • OPERATION-ID: die Vorgangs-ID.
  3. Klicken Sie auf Ausführen. Die Antwort enthält eine Liste lang andauernder Vorgänge.

Sicherungsvorgang mit langer Ausführungszeit abbrechen

projects.instances.backups.operations.cancel verwenden einen lange laufenden Sicherungsvorgang abbrechen.

  1. Gehen Sie zu projects.instances.backups.operations.cancel.

  2. 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.

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

    Ersetzen Sie Folgendes:

    • PROJECT-ID: Projekt-ID.
    • INSTANCE-NAME: der Name der Instanz.
    • BACKUP-NAME: der Name der Sicherung.
    • OPERATION-ID: die Vorgangs-ID.

    Sie können den Namen des Sicherungsvorgangs auch abrufen, indem Sie lange laufende Sicherungsvorgänge auflisten.

  3. Klicken Sie auf Ausführen.