Datenbanken über die gcloud CLI sichern und wiederherstellen

Auf dieser Seite wird beschrieben, wie Sie die Sicherung und Wiederherstellung von Spanner mit der Google Cloud CLI verwenden.

Vorbereitung

Bei den Beispielen auf dieser Seite wird von folgenden Annahmen ausgegangen:

  • Sie haben bereits die gcloud CLI zur Verwendung mit Spanner eingerichtet. Wenn Sie die Google Cloud CLI mit Spanner noch nicht verwendet haben, lesen Sie Erste Schritte mit Spanner mit der Google Cloud CLI.

  • Sie haben die Google Cloud CLI mit einem Standardprojekt konfiguriert. Beispiel:

    gcloud config set core/project my-project
    
  • Sie haben eine Instanz namens test-instance und eine Datenbank namens example-db.

Sicherung erstellen

Verwenden Sie gcloud spanner backups create, um eine Sicherung mit dem Namen example-db-backup-6 zu erstellen und sie in einem Jahr ablaufen zu lassen:

   gcloud spanner backups create example-db-backup-6 --instance=test-instance \
      --database=example-db --retention-period=1y --async

Hier sind einige Nutzungshinweise:

  • Geben Sie das Flag --retention-period oder --expiration-date an, um das Ablaufdatum der Sicherung festzulegen. Informationen zur Datumssyntax finden Sie unter gcloud topic datetimes.
  • Der Name der Sicherung muss in der Instanz eindeutig sein.
  • Der Befehl wird aufgrund des Flags --async sofort zurückgegeben. Ohne das Flag wartet der Befehl, bis der Sicherungsvorgang abgeschlossen ist.
  • Geben Sie das Flag --help an, um Hilfe für beliebige Befehle zu erhalten.

    Die Ausgabe sieht dann ungefähr so aus:

    Create request issued for: [example-db-backup-6]
    Check operation [projects/my-project/instances/test-instance/backups/example-db-backup-6/operations/_auto_op_234567] for status.
    

    Informationen zum Prüfen des Fortschritts eines Sicherungsvorgangs finden Sie unter Vorgangsfortschritt prüfen.

Sicherung kopieren

So kopieren Sie eine Sicherung in eine andere Instanz im selben Projekt:

gcloud spanner backups copy \
    --source-instance=test-instance \
    --source-backup=example-db \
    --destination-instance=backup-instance \
    --destination-backup=copied-backup \
    --expiration-date=2022-03-30T10:49:41Z

So kopieren Sie eine Sicherung in eine andere Instanz in einem anderen Projekt:

gcloud spanner backups copy \
  --source-backup=projects/my-project/instances/test-instance/backups/example-db \
  --destination-backup=projects/backup-project/instances/backup-instance-eu/backups/copied-backup \
  --expiration-date=2022-03-30T10:49:41Z

Verwendungshinweise:

  • Wenn Sie die Sicherung in eine andere Instanz im selben Projekt kopieren, müssen Sie eine neue Instanz für die kopierte Sicherung erstellen (oder bereits eine haben). Im vorherigen Beispiel wurde backup-instance verwendet. Sie können während des Sicherungskopiervorgangs keine neue Instanz erstellen.
  • Wenn Sie die Sicherung in ein anderes Projekt kopieren, muss ein anderes Projekt mit einer eigenen Instanz für die kopierte Sicherung bereit sein. Im vorherigen Beispiel wurde backup-project verwendet. Während des Sicherungskopiervorgangs können Sie kein neues Projekt erstellen.
  • Die Ablaufzeit der Sicherung muss mindestens sechs Stunden ab dem Zeitpunkt der Verarbeitung der aktuellen Kopieranfrage und darf maximal 366 Tage nach der Quellsicherung create_time liegen.

Die Ausgabe sieht dann ungefähr so aus:

createTime: '2022-03-29T22:06:05.905823Z'
database: projects/my-project/instances/test-instance/databases/example-db
databaseDialect: GOOGLE_STANDARD_SQL
encryptionInfo:
  encryptionType: GOOGLE_DEFAULT_ENCRYPTION
expireTime: '2022-03-30T10:49:41Z'
maxExpireTime: '2023-03-17T20:46:33.479336Z'
name: projects/backup-project/instances/backup-instance-eu/backups/copied-backup
sizeBytes: '7957667'
state: READY
versionTime: '2022-03-16T20:46:33.479336Z'

Informationen zum Prüfen des Fortschritts eines Kopiervorgangs finden Sie unter Vorgangsfortschritt prüfen.

Datenbank aus einer Sicherung wiederherstellen

Verwenden Sie gcloud spanner databases restore, um eine Datenbank wiederherzustellen:

gcloud spanner databases restore --async \
    --destination-instance=test-instance --destination-database=example-db-restored \
    --source-instance=test-instance --source-backup=example-db-backup-6

Verwendungshinweise:

  • Der Befehl wird aufgrund des Flags --async sofort zurückgegeben. Ohne das Flag wartet der Befehl auf den Abschluss des Wiederherstellungsvorgangs.
  • Wenn die Quell- und Zielinstanzen unterschiedlich sind, müssen sie dieselbe Instanzkonfiguration haben.
  • Wenn die Zieldatenbank bereits vorhanden ist, schlägt der Vorgang fehl.

Die Ausgabe sieht dann ungefähr so aus:

Restore database in progress. Operation name=projects/my-project/instances/test-instance/databases/example-db-restored-1/operations/_auto_op_bb8e360b256b04bf

Informationen zum Verfolgen des Fortschritts eines Wiederherstellungsvorgangs finden Sie unter Vorgangsfortschritt prüfen.

Fortschritt des Vorgangs prüfen

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=BACKUP
    

    Ersetzen Sie Folgendes:

    • INSTANCE-NAME durch den Namen der Spanner-Instanz.
    • DATABASE-NAME durch den Namen der Datenbank.

    Verwendungshinweise:

    • Wenn Sie die Liste einschränken möchten, geben Sie das Flag --filter an. Beispiel:

      • --filter="metadata.name:example-db" listet nur die Vorgänge in einer bestimmten Datenbank auf.
      • --filter="error:*" listet nur die fehlgeschlagenen Sicherungsvorgänge auf.

      Informationen zur Filtersyntax finden Sie unter gcloud topic filters. Informationen zum Filtern von Sicherungsvorgängen finden Sie im Feld filter in ListBackupOperationsRequest.

    • Beim Flag --type wird nicht zwischen Groß- und Kleinschreibung unterschieden.

    Die Ausgabe sieht dann ungefähr so aus:

    OPERATION_ID               DONE  @TYPE                 BACKUP               SOURCE_DATABASE  START_TIME                   END_TIME
    _auto_op_123456  True  CreateBackupMetadata  example-db-backup-7  example-db       2020-02-04T02:12:38.075515Z  2020-02-04T02:22:40.581170Z
    _auto_op_234567  True  CreateBackupMetadata  example-db-backup-6  example-db       2020-02-04T02:05:43.920377Z  2020-02-04T02:07:59.089820Z
      ```
    
  2. Führen Sie gcloud spanner operations describe aus.

    gcloud spanner operations describe OPERATION-ID \
    --instance=INSTANCE-NAME \
    --backup=BACKUP-NAME \
    

    Ersetzen Sie Folgendes:

    • OPERATION-ID: Die Vorgangs-ID des Vorgangs, den Sie prüfen möchten.
    • INSTANCE-NAME: Der Name der Spanner-Instanz.
    • BACKUP-NAME: Der Name der Spanner-Sicherung.

    Der Abschnitt progress in der Ausgabe zeigt den Prozentsatz des abgeschlossenen Vorgangs 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
    ...
    

Wenn der Vorgang zu lange dauert, können Sie ihn abbrechen. Weitere Informationen finden Sie unter Einen Sicherungsvorgang mit langer Ausführungszeit abbrechen.

Sicherungsinformationen abrufen

So rufen Sie Informationen zu einer Sicherung ab:

gcloud spanner backups describe example-db-backup-6 --instance=test-instance

Die Ausgabe sieht dann ungefähr so aus:

createTime: '2020-02-04T02:05:43.920377Z'
database: projects/my-project/instances/test-instance/databases/example-db
expireTime: '2021-02-04T02:05:43.268327Z'
name: projects/my-project/instances/test-instance/backups/example-db-backup-6
sizeBytes: '1000000000'
state: READY

Weitere Informationen zu diesem Befehl finden Sie unter gcloud spanner backups describe.

Sicherungen auflisten

So listen Sie alle Sicherungen in einer Instanz auf:

gcloud spanner backups list --instance=test-instance

Die Ausgabe sieht dann ungefähr so aus:

BACKUP               SOURCE_DATABASE  CREATION_TIME                EXPIRATION_TIME              STATE  BACKUP_SIZE_IN_BYTES  IN_USE_BY
example-db-backup-6  example-db       2020-02-04T02:05:43.920377Z  2021-02-04T02:05:43.268327Z  CREATING
example-db-backup-4  example-db       2020-02-04T01:21:20.873839Z  2021-02-04T01:21:20.530151Z  READY  32
example-db-backup-3  example-db       2020-02-03T23:59:18.936433Z  2021-02-03T23:59:18.203083Z  READY  32
example-db-backup-5  example-db       2020-02-03T23:48:06.259296Z  2021-02-03T23:48:05.830937Z  READY  32
example-db-backup-2  example-db       2020-01-30T19:49:00.616338Z  2021-01-30T19:49:00.283917Z  READY  32
example-db-backup-1  example-db       2020-01-30T19:47:09.492551Z  2021-01-30T19:47:09.097804Z  READY  32

Wenn Sie die Liste einschränken möchten, geben Sie das Flag --filter an. Beispielsweise listet --filter="state:creating" nur die Sicherungen auf, die noch erstellt werden. Informationen zur Filtersyntax finden Sie unter gcloud topic filters. Informationen zum Filtern von Sicherungen finden Sie im Feld filter in ListBackupsRequest.

Weitere Informationen zu diesem Befehl finden Sie unter gcloud spanner backups list.

Sicherungsmetadaten aktualisieren

So aktualisieren Sie das Ablaufdatum einer Sicherung:

gcloud spanner backups update-metadata example-db-backup-6 \
    --instance=test-instance --expiration-date=2020-05-05T00:00:00Z

Die Ausgabe sieht dann ungefähr so aus:

createTime: '2020-02-04T02:05:43.920377Z'
database: projects/my-project/instances/test-instance/databases/example-db
expireTime: '2020-05-05T00:00:00Z'
name: projects/my-project/instances/test-instance/backups/example-db-backup-6
sizeBytes: '1000000000'
state: READY

Weitere Informationen zu diesem Befehl finden Sie unter gcloud spanner backups update-metadata.

Sicherung löschen

So löschen Sie eine Sicherung:

gcloud spanner backups delete example-db-backup-1 --instance=test-instance

Sie müssen den Vorgang bestätigen:

You are about to delete backup [example-db-backup-1]

Do you want to continue (Y/n)?  Y

Deleted backup [example-db-backup-1].

Weitere Informationen zu diesem Befehl finden Sie unter gcloud spanner backups delete.