Datenbanken mit gcloud sichern und wiederherstellen

Auf dieser Seite wird beschrieben, wie Sie Cloud Spanner Backup and Wiederherstellung mit der gcloud-Befehlszeilenschnittstelle verwenden.

Vorbereitung

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

  • Sie haben das gcloud SDK bereits für die Verwendung mit Cloud Spanner eingerichtet. Wenn Sie gcloud noch nicht mit Cloud Spanner verwendet haben, lesen Sie Erste Schritte mit Cloud Spanner mit gcloud.

  • Sie haben gcloud 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

So erstellen Sie eine Sicherung mit dem Namen example-db-backup-6, die in einem Jahr ablaufen soll:

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

Hier einige Nutzungshinweise:

  • Geben Sie zum Festlegen des Ablaufdatums der Sicherung entweder das Flag --retention-period oder --expiration-date an. Informationen zur Datumssyntax finden Sie unter gcloud topic datetime.
  • 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 auf den Abschluss des Sicherungsvorgangs.
  • Geben Sie das Flag --help an, um Hilfe für beliebige Befehle zu erhalten.

Folgendes wird ausgegeben:

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.

Im nächsten Abschnitt verwenden wir den Sicherungsvorgang, um den Fortschritt der Sicherung zu prüfen.

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

Sicherungsfortschritt ansehen

  1. Verwenden Sie gcloud spanner operations describe, um den Fortschritt eines Sicherungsvorgangs zu verfolgen:

    gcloud spanner operations describe _auto_op_234567 \
        --instance=test-instance --backup=example-db-backup-6
    

    Hier ist die Ausgabe:

    done: true
    metadata:
      '@type': type.googleapis.com/google.spanner.admin.database.v1.CreateBackupMetadata
      database: projects/my-project/instances/test-instance/databases/example-db
      name: projects/my-project/instances/test-instance/backups/example-db-backup-6
      progress:
        endTime: '2020-02-04T02:07:59.089820Z'
        progressPercent: 100
        startTime: '2020-02-04T02:05:43.920377Z'
    name: projects/my-project/instances/test-instance/backups/example-db-backup-6/operations/_auto_op_234567
    response:
      '@type': type.googleapis.com/google.spanner.admin.database.v1.Backup
      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
    
  2. Wenn Sie den Namen des Vorgangs nicht kennen, suchen Sie ihn mit gcloud spanner operations list:

    gcloud spanner operations list --instance=test-instance --type=BACKUP
    

    Verwendungshinweise:

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

      • --filter="metadata.name:example-db" listet beispielsweise nur die Sicherungsvorgänge für eine bestimmte Datenbank auf.
      • Beispielsweise listet --filter="error:*" 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.

    Hier ist die Ausgabe:

    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
    

Datenbank aus einer Sicherung wiederherstellen

So stellen Sie eine Datenbank wieder her:

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.

Hier ist die Ausgabe:

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

Weitere Informationen zu diesem Befehl finden Sie unter gcloud spanner databases restore.

Wiederherstellung ansehen und Fortschritt optimieren

  1. Verwenden Sie gcloud spanner operations describe, um den Fortschritt eines Wiederherstellungsvorgangs zu verfolgen:

    gcloud spanner operations describe  _auto_op_bb8e360b256b04bf \
        --instance=test-instance --database=example-db-restored
    

    Hier ist die Ausgabe:

    done: true
    metadata:
      '@type': type.googleapis.com/google.spanner.admin.database.v1.RestoreDatabaseMetadata
      backupInfo:
        backup: projects/my-project/instances/test-instance/backups/example-db-backup-6
        createTime: '2020-02-03T23:48:06.259296Z'
        sourceDatabase: projects/my-project/instances/test-instance/databases/example-db
      name: projects/my-project/instances/test-instance/databases/example-db-restored
      optimizeDatabaseOperationName: projects/my-project/instances/test-instance/databases/example-db-restored/operations/_auto_op_7702f3f19fa99616
      progress:
        endTime: '2020-02-04T02:40:56.424382Z'
        progressPercent: 100
        startTime: '2020-02-04T02:35:30.683330Z'
      sourceType: BACKUP
    name: projects/my-project/instances/test-instance/databases/example-db-restored/operations/_auto_op_91ff1f270832a22b
    response:
      '@type': type.googleapis.com/google.spanner.admin.database.v1.Database
      createTime: '2020-02-04T02:35:30.683330Z'
      name: projects/my-project/instances/test-instance/databases/example-db-restored
      restoreInfo:
        backupInfo:
          backup: projects/my-project/instances/test-instance/backups/example-db-backup-6
          createTime: '2020-02-03T23:48:06.259296Z'
          sourceDatabase: projects/my-project/instances/test-instance/databases/example-db
        sourceType: BACKUP
      state: READY_OPTIMIZING
    

    In der Ausgabe sehen Sie, dass der Wiederherstellungsvorgang abgeschlossen ist und jetzt den Status READY_OPTIMIZING hat, wie unter So funktioniert die Wiederherstellung beschrieben. Außerdem erhalten wir optimizeDatabaseOperationName, mit dem wir den Fortschritt des Optimierungsvorgangs verfolgen können.

  2. Verwenden Sie gcloud spanner operations describe, um den Fortschritt des Optimierungsvorgangs zu verfolgen:

    gcloud-testing spanner operations describe _auto_op_7702f3f19fa99616 \
        --instance=test-instance --database=example-db-restored
    

    Hier ist die Ausgabe:

    done: true
    metadata:
      '@type': type.googleapis.com/google.spanner.admin.database.v1.OptimizeRestoredDatabaseMetadata
      name: projects/my-project/instances/test-instance/databases/example-db-restored
      progress:
        endTime: '2020-02-04T22:11:21.731739Z'
        progressPercent: 100
        startTime: '2020-02-04T22:10:48.308090Z'
    name: projects/my-project/instances/test-instance/databases/example-db-restored/operations/_auto_op_7702f3f19fa99616
    response:
      '@type': type.googleapis.com/google.spanner.admin.database.v1.Database
      createTime: '2020-02-04T22:03:34.282186Z'
      name: projects/my-project/instances/test-instance/databases/example-db-restored
      restoreInfo:
        backupInfo:
          backup: projects/my-project/instances/test-instance/backups/example-db-backup-6
          createTime: '2020-02-03T23:48:06.259296Z'
          sourceDatabase: projects/my-project/instances/test-instance/databases/example-db
        sourceType: BACKUP
      state: READY
    
  3. Wenn Sie den Namen des Wiederherstellungs- oder Optimierungsvorgangs nicht kennen, suchen Sie ihn mit gcloud spanner operations list. Wenn sich die wiederhergestellte Datenbank nicht in derselben Instanz wie die Sicherung befindet, müssen Sie die Zielinstanz im Flag instance angeben:

    gcloud spanner operations list --instance=test-instance \
        --type=DATABASE_RESTORE
    

    Hier ist die Ausgabe:

    OPERATION_ID               DONE  @TYPE                             RESTORED_DATABASE    SOURCE_BACKUP        START_TIME                   END_TIME
    _auto_op_7702f3f19fa99616  True  OptimizeRestoredDatabaseMetadata  example-db-restored                       2020-02-04T02:40:56.424382Z  2020-02-04T02:41:37.765157Z
    _auto_op_91ff1f270832a22b  True  RestoreDatabaseMetadata           example-db-restored  example-db-backup-6  2020-02-04T02:35:30.683330Z  2020-02-04T02:40:56.424382Z
    

Sicherungsinformationen abrufen

So rufen Sie Informationen zu einer Sicherung ab:

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

Hier ist die Ausgabe:

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

Hier ist die Ausgabe:

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

Hier ist die Ausgabe:

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