Lang andauernde Vorgänge verwalten und beobachten

Auf dieser Seite wird beschrieben, wie Sie den Lebenszyklus eines lang laufenden Vorgangs in Spanner mithilfe von gcloud spanner operations-Befehlen und der REST API für Vorgänge verwalten. Einige Verfahren können auch in der Google Cloud -Console ausgeführt werden.

Lange laufende Vorgänge sind Methodenaufrufe, die viel Zeit in Anspruch nehmen können. Spanner erstellt Vorgänge mit langer Ausführungszeit 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 Wiederherstellungsfortschritt zu verfolgen. Wenn der Vorgang länger als erwartet dauert, können Sie mit gcloud den Fortschritt prüfen. Wenn der Vorgang nicht reagiert, können Sie ihn mit gcloud abbrechen.

Spanner bietet Vorgangs-APIs, mit denen sich der Fortschritt von lange laufenden Vorgängen prüfen lässt. Sie können lange laufende Vorgänge auch auflisten und abbrechen sowie lange laufende Instanzvorgänge löschen.

Sie können Vorgänge mit langer Ausführungszeit mit den folgenden Methoden prüfen und verwalten:

REST API-Befehle für die Betriebsverwaltung

Sie können Ihre lange laufenden Spanner-Vorgänge mit den folgenden REST-Methoden verwalten:

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 lang andauernden Instanzvorgangs prüfen

Mit projects.instances.operations.get können Sie den Fortschritt eines lange laufenden Instanzvorgangs prü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 gibt an, dass der Spanner-Dienst einen lange laufenden Instanzvorgang namens projects/test01/instances/test-instance/operations/_auto_1492721321097206 erstellt hat.

So prüfen Sie den Fortschritt des lang andauernden Instanzvorgangs:

  1. Rufen Sie projects.instances.operations.get auf.
  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 Namen des Instanzvorgangs abrufen, indem Sie lange laufende Instanzvorgänge auflisten.

  3. Klicken Sie auf Ausführen. Wenn ein Vorgang abgeschlossen ist, wird im Feld done der Wert true angezeigt.

Wenn Sie kontinuierliche Updates erhalten möchten, rufen Sie die Methode projects.instances.databases.operations.get so oft 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. Rufen Sie projects.instances.operations.list auf.
  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 der Vorgänge mit langer Ausführungszeit.

Lange laufenden Instanzvorgang abbrechen

Mit projects.instances.operations.cancel können Sie einen lange laufenden Instanzvorgang abbrechen.

  1. Rufen Sie projects.instances.operations.cancel auf.
  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 über das Auflisten lange laufender Instanzvorgänge abrufen.

  3. Klicken Sie auf Ausführen.

Lange laufenden Instanzvorgang löschen

Mit projects.instances.operations.delete können Sie einen lange laufenden Instanzvorgang 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 über das Auflisten lange laufender Instanzvorgänge abrufen.

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

Datenbankvorgänge

Diese lange laufenden Datenbankvorgänge gibt es:

Fortschritt eines lang laufenden Datenbankvorgangs prüfen

Mit projects.instances.databases.operations.get haben Sie die Möglichkeit, den Fortschritt eines lange laufenden Datenbankvorgangs zu überprüfen.

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

{
  "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 gibt an, dass der Spanner-Dienst einen lange laufenden Datenbankvorgang namens projects/test01/instances/test-instance/databases/example-db/operations/_auto_1492721321097206 erstellt hat.

So prüfen Sie den Fortschritt eines lang andauernden Datenbankvorgangs:

  1. Rufen Sie projects.instances.databases.operations.get auf.

  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 Datenbankvorgangsnamen auch durch Auflisten der lange laufenden Datenbankvorgänge erhalten.

  3. Klicken Sie auf Ausführen. Wenn ein Vorgang abgeschlossen ist, wird im Feld done der Wert true angezeigt.

Wenn Sie kontinuierliche Updates erhalten möchten, rufen Sie die Methode projects.instances.databases.operations.get so oft 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

Mit projects.instances.databases.operations.list können Sie lange laufende Datenbankvorgänge auflisten.

  1. Rufen Sie projects.instances.databases.operations.list auf.
  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 der Vorgänge mit langer Ausführungszeit.

Lange laufenden Datenbankvorgang abbrechen

Mit projects.instances.databases.operations.cancel können Sie einen lange laufenden Datenbankvorgang abbrechen.

  1. Rufen Sie projects.instances.databases.operations.cancel auf.
  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 Datenbankvorgangsnamen auch durch Auflisten der lange laufenden Datenbankvorgänge erhalten.

  3. Klicken Sie auf Ausführen.

Schemaaktualisierungsvorgänge

Die folgenden Schemaaktualisierungsvorgänge haben eine lange Ausführungszeit.

Fortschritt einer langwierigen Schemaaktualisierung prüfen

Console

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

  2. Suchen Sie in der Liste nach dem Schemavorgang. Wenn der Vorgang noch läuft, zeigt die Fortschrittsanzeige in der Spalte Endzeit 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: 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 Vorgangs, den Sie prüfen möchten.
    • INSTANCE-NAME: Der Name der Spanner-Instanz.
    • DATABASE-NAME: den Namen der Spanner-Datenbank.

    Im Abschnitt progress wird in der Ausgabe der Prozentsatz des abgeschlossenen Vorgangs angezeigt. 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 eine JSON-Antwort ähnlich wie diese 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.

Lange laufende 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

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: Der Name der Spanner-Instanz.
    • DATABASE-NAME: der Name der Datenbank
  2. Mit gcloud spanner operations cancel können Sie einen lange laufenden Schemaaktualisierungsvorgang abbrechen.

    gcloud spanner 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 Version 1

Mit projects.instances.databases.operations.cancel können Sie einen lange laufenden Schemaaktualisierungsvorgang abbrechen.

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

  3. Geben Sie unter Name den Namen des lange laufenden Schemaaktualisierungsvorgangs ein, der in der Antwort des lange laufenden Schemaaktualisierungsvorgangs angezeigt wird.

    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 über das Auflisten lange laufender Instanzvorgänge abrufen.

  4. Klicken Sie auf Ausführen. Die Ausführung des Vorgangs wird beendet.

Sicherungs- und Wiederherstellungsvorgänge

Die folgenden Sicherungsvorgänge haben eine lange Ausführungszeit.

Fortschritt eines Sicherungs- oder Wiederherstellungsvorgangs mit langer Ausführungszeit prüfen

Console

Sicherung

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

  2. Suchen Sie in der Liste nach dem Schemavorgang. Wenn der Vorgang noch läuft, zeigt die Fortschrittsanzeige in der Spalte Endzeit den Prozentsatz des abgeschlossenen Vorgangs an, wie in der folgenden Abbildung dargestellt:

Screenshot der Fortschrittsanzeige mit 98%

Wiederherstellen

Den Fortschritt des Wiederherstellungsvorgangs können Sie anhand der Fortschrittsanzeige prüfen, die während der Wiederherstellung angezeigt wird (siehe Abbildung unten).

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 einer Sicherung oder Wiederherstellung zu prüfen.

  1. Rufen Sie die Vorgangs-ID ab:

    gcloud spanner operations list \
    --instance=INSTANCE-NAME \
    --database=DATABASE-NAME \
    --type=TYPE

    Ersetzen Sie Folgendes:

    • INSTANCE-NAME: Der Name der Spanner-Instanz.
    • DATABASE-NAME: der Name der Datenbank
    • TYPE: Der Vorgangstyp. Mögliche Werte sind BACKUP und DATABASE_RESTORE.
  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: den Namen der Spanner-Datenbank.

    Im Abschnitt progress wird in der Ausgabe der Prozentsatz des abgeschlossenen Vorgangs angezeigt. 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 eine JSON-Antwort ähnlich wie diese 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.

Sicherungs- oder Wiederherstellungsvorgänge mit langer Ausführungszeit 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. Rufen Sie projects.instances.backups.operations.list auf.

  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 der Vorgänge 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. Rufen Sie projects.instances.backups.operations.cancel auf.

  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 Sicherungsvorgänge mit langer Ausführungszeit auflisten.

  3. Klicken Sie auf Ausführen.