Lang andauernde Vorgänge verwalten und beobachten

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:

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:

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:

  1. Klicken Sie auf 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. 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

  3. Klicken Sie auf Execute. Wenn ein Vorgang abgeschlossen ist, wird das Feld done auf true 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.

  1. Klicken Sie auf projects.instances.databases.operations.list.
  2. Geben Sie unter Name Folgendes ein:

    projects/PROJECT-ID/instances/test-instance/databases/example-db/operations

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

  1. Klicken Sie auf 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. 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.

  3. Klicken Sie auf Execute.

Schemaaktualisierungsvorgänge

Im Folgenden sind lang andauernde Schemaaktualisierungsvorgänge aufgeführt.

Fortschritt eines lange laufenden Schemaaktualisierungsvorgangs prüfen

Console

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

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

Screenshot der Fortschrittsanzeige mit 98%

gcloud

Verwenden Sie gcloud spanner operations describe, um den Fortschritt eines Vorgangs zu prü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 durch den Spanner-Instanznamen.
    • DATABASE-NAME durch den Namen 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 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

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

  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.
  2. Klicken Sie auf projects.instances.databases.operations.cancel.

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

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

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

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

Screenshot der Fortschrittsanzeige mit 98%

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:

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

Verwenden Sie gcloud spanner operations describe, um den Fortschritt eines Sicherungs- oder Wiederherstellungsvorgangs zu prü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 durch den Spanner-Instanznamen.
    • DATABASE-NAME durch den Namen 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 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.

  1. Klicken Sie auf projects.instances.backups.operations.list.

  2. Geben Sie unter Name Folgendes ein:

    projects/project-id/instances/test-instance/backups/example-db-backup-4/operations

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

  1. Klicken Sie auf 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. 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.

  3. 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:

  1. Klicken Sie auf 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/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.

  3. Klicken Sie auf Execute. Wenn ein Vorgang abgeschlossen ist, wird das Feld done auf true 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.

  1. Klicken Sie auf projects.instances.operations.list.
  2. Geben Sie unter Name Folgendes ein:

    projects/PROJECT-ID/instances/test-instance/operations

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

  1. Klicken Sie auf 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. 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.

  3. Klicken Sie auf Execute.

Lange laufenden Instanzvorgang löschen

Zum Löschen eines lange laufenden Instanzvorgangs verwenden Sie projects.instances.operations.delete.

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

  3. Klicken Sie auf Execute. Der Vorgang wird gelöscht.