Daten sichern und wiederherstellen

Auf dieser Seite wird beschrieben, wie Sie die Funktion für geplante Sicherungen von Cloud Firestore verwenden. Mit Sicherungen schützen Sie Ihre Daten vor Datenbeschädigung auf Anwendungsebene oder vor versehentlichem Löschen von Daten.

Mit Sicherungen können Sie Zeitpläne für die tägliche oder wöchentliche Sicherung der angegebenen Datenbank konfigurieren. Mit diesen Sicherungen können Sie die Daten dann in einer neuen Datenbank wiederherstellen.

Informationen zu Sicherungen

Eine Sicherung ist eine konsistente Kopie der Datenbank zu einem bestimmten Zeitpunkt. Die Sicherung enthält alle Daten und Indexkonfigurationen zu diesem Zeitpunkt. Eine Sicherung enthält keine Zeitlich begrenzten Gültigkeitsdauern für Datenbanken. Eine Sicherung befindet sich am selben Speicherort wie die Quelldatenbank.

Sicherungen haben eine konfigurierbare Aufbewahrungsdauer und werden gespeichert, bis diese abgelaufen ist oder Sie die Sicherung löschen. Wenn Sie die Quelldatenbank löschen, werden die zugehörigen Sicherungen nicht automatisch gelöscht.

Cloud Firestore speichert Metadaten zu Sicherungen und Sicherungszeitplänen, die sich auf eine Datenbank beziehen. Cloud Firestore speichert diese Metadaten, bis alle Sicherungen für die Datenbank ablaufen oder gelöscht werden.

Das Erstellen oder Aufbewahren von Sicherungen hat keine Auswirkungen auf die Leistung von Lese- oder Schreibvorgängen in Ihrer Live-Datenbank.

Kosten

Wenn Sie Back-ups verwenden, werden Ihnen Folgendes in Rechnung gestellt:

  • Die von jeder Sicherung belegte Speichermenge.
  • Die Kosten für einen Wiederherstellungsvorgang richten sich nach der Größe der Sicherung.

Weitere Informationen und genaue Preise finden Sie auf der Seite Preise.

Hinweis

Für diese Funktion ist der Blaze-Tarif erforderlich.

Erforderliche Rollen

Bitten Sie Ihren Administrator, Ihnen eine oder mehrere der folgenden Rollen für Identity and Access Management zuzuweisen, um die Berechtigungen zu erhalten, die Sie zum Verwalten von Sicherungen und Sicherungszeitplänen benötigen:

  • roles/datastore.owner: Vollständiger Zugriff auf die Cloud Firestore-Datenbank
  • Die folgenden Rollen sind ebenfalls verfügbar, aber nicht in der Google Cloud Console sichtbar. Verwenden Sie Google Cloud CLI, um diese Rollen zuzuweisen:

    • roles/datastore.backupsAdmin: Lese- und Schreibzugriff auf Sicherungen
    • roles/datastore.backupsViewer: Lesezugriff auf Sicherungen
    • roles/datastore.backupSchedulesAdmin: Lese- und Schreibzugriff auf Sicherungszeitpläne
    • roles/datastore.backupSchedulesViewer: Lesezugriff auf Sicherungszeitpläne
    • roles/datastore.restoreAdmin: Berechtigungen zum Initiieren von Wiederherstellungsvorgängen

Sicherungszeitpläne erstellen und verwalten

In den folgenden Beispielen wird gezeigt, wie Sie einen Sicherungszeitplan einrichten. Für jede Datenbank können Sie bis zu einen täglichen und einen wöchentlichen Sicherungszeitplan konfigurieren. Sie können nicht mehrere Zeitpläne für wöchentliche Sicherungen für verschiedene Wochentage konfigurieren.

Sie können die genaue Uhrzeit der Sicherung nicht konfigurieren. Die Sicherungen werden jeden Tag zu unterschiedlichen Zeiten erstellt. Bei wöchentlichen Sicherungszeitplänen können Sie den Wochentag konfigurieren, an dem eine Sicherung erstellt werden soll.

Sicherungszeitplan erstellen

Verwenden Sie den Befehl gcloud firestore backups schedules create oder firebase firestore:databases:backups:schedules, um einen Sicherungszeitplan für eine Datenbank zu erstellen.

Zeitplan für die tägliche Sicherung erstellen

gcloud
Wenn Sie einen täglichen Sicherungszeitplan erstellen möchten, setzen Sie das Flag --recurrence auf daily:
gcloud firestore backups schedules create \
--database='DATABASE_ID' \
--recurrence=daily \
--retention=RETENTION_PERIOD

Ersetzen Sie Folgendes:

  • DATABASE_ID: Die ID der zu sichernden Datenbank. Legen Sie für die Standarddatenbank '(default)' fest.
  • RETENTION_PERIOD: Legen Sie einen Wert von bis zu 14 Wochen (14w) fest.
Firebase CLI
Wenn Sie einen täglichen Sicherungszeitplan erstellen möchten, setzen Sie das Flag --recurrence auf DAILY:
firebase firestore:backups:schedules:create \
--database 'DATABASE_ID' \
--recurrence 'DAILY' \
--retention RETENTION_PERIOD

Ersetzen Sie Folgendes:

  • DATABASE_ID: Die ID der zu sichernden Datenbank. Legen Sie für die Standarddatenbank '(default)' fest.
  • RETENTION_PERIOD: Legen Sie einen Wert von bis zu 14 Wochen (14w) fest.
Terraform
Wenn Sie einen täglichen Sicherungszeitplan erstellen möchten, erstellen Sie eine google_firestore_backup_schedule-Ressource.
resource "google_firestore_backup_schedule" "daily-backup" {
  project  = PROJECT_ID
  database = DATABASE_ID

  retention = RETENTION_PERIOD_SECONDS

  daily_recurrence {}
}

Ersetzen Sie Folgendes:

  • PROJECT_ID: ID des Projekts
  • DATABASE_ID: Die ID der zu sichernden Datenbank. Legen Sie für die Standarddatenbank '(default)' fest.
  • Sie können auch eine Ressourcenreferenz auf eine Terraform-Ressource vom Typ google_firestore_database verwenden.
  • RETENTION_PERIOD_SECONDS: Geben Sie hier einen Wert in Sekunden ein, gefolgt von „s“. Der Höchstwert ist 8467200s (14 Wochen).

Wochenplan für Sicherungen erstellen

gcloud
Wenn Sie einen wöchentlichen Sicherungszeitplan erstellen möchten, setzen Sie das Flag --recurrence auf weekly:
gcloud firestore backups schedules create \
--database='DATABASE_ID' \
--recurrence=weekly \
--retention=RETENTION_PERIOD \
--day-of-week=DAY
Ersetzen Sie Folgendes:
  • DATABASE_ID: Die ID der zu sichernden Datenbank. Legen Sie für die Standarddatenbank '(default)' fest.
  • RETENTION_PERIOD: Legen Sie einen Wert von bis zu 14 Wochen (14w) fest.
  • DAY: Der Wochentag, an dem die Sicherung erstellt werden soll. Legen Sie einen der folgenden Werte fest:
    • SUN für Sonntag
    • MON für Montag
    • TUE für Dienstag
    • WED für Mittwoch
    • THU für Donnerstag
    • FRI für Freitag
    • SAT für Samstag
Firebase CLI
Wenn Sie einen wöchentlichen Sicherungszeitplan erstellen möchten, setzen Sie das Flag --recurrence auf WEEKLY:
firebase firestore:backups:schedules:create \
--database 'DATABASE_ID' \
--recurrence 'WEEKLY' \
--retention RETENTION_PERIOD
--day-of-week DAY
Ersetzen Sie Folgendes:
  • DATABASE_ID: Die ID der zu sichernden Datenbank. Legen Sie für die Standarddatenbank '(default)' fest.
  • RETENTION_PERIOD: Legen Sie einen Wert von bis zu 14 Wochen (14w) fest.
  • DAY: Der Wochentag, an dem die Sicherung erstellt werden soll. Legen Sie einen der folgenden Werte fest:
    • SUNDAY für Sonntag
    • MONDAY für Montag
    • TUESDAY für Dienstag
    • WEDNESDAY für Mittwoch
    • THURSDAY für Donnerstag
    • FRIDAY für Freitag
    • SATURDAY für Samstag
Terraform
Wenn Sie einen wöchentlichen Sicherungszeitplan erstellen möchten, erstellen Sie eine google_firestore_backup_schedule-Ressource.
resource "google_firestore_backup_schedule" "weekly-backup" {
  project  = PROJECT_ID
  database = DATABASE_ID

  retention = RETENTION_PERIOD_SECONDS

  weekly_recurrence {
    day = DAY
  }
}

Ersetzen Sie Folgendes:

  • PROJECT_ID: ID des Projekts
  • DATABASE_ID: Die ID der zu sichernden Datenbank. Legen Sie für die Standarddatenbank '(default)' fest.
  • Sie können auch eine Ressourcenreferenz auf eine Terraform-Ressource vom Typ google_firestore_database verwenden.
  • RETENTION_PERIOD_SECONDS: Geben Sie hier einen Wert in Sekunden ein, gefolgt von „s“. Der Höchstwert ist 8467200s (14 Wochen).
  • DAY: Der Wochentag, an dem die Sicherung erstellt werden soll. Legen Sie einen der folgenden Werte fest:
    • SUNDAY für Sonntag
    • MONDAY für Montag
    • TUESDAY für Dienstag
    • WEDNESDAY für Mittwoch
    • THURSDAY für Donnerstag
    • FRIDAY für Freitag
    • SATURDAY für Samstag

Sicherungszeitpläne auflisten

Verwenden Sie eine der folgenden Methoden, um alle Sicherungszeitpläne für eine Datenbank aufzulisten:

gcloud
Führen Sie den Befehl gcloud firestore backups schedules list aus.
gcloud firestore backups schedules list \
--database='DATABASE_ID'
Ersetzen Sie DATABASE_ID durch die ID der Datenbank. Verwenden Sie '(default)' für die Standarddatenbank.
Firebase CLI
Führen Sie den Befehl firebase firestore:backups:schedules:list aus.
firebase firestore:backups:schedules:list \
--database 'DATABASE_ID'
Ersetzen Sie DATABASE_ID durch die ID der Datenbank. Verwenden Sie '(default)' für die Standarddatenbank.

Sicherungszeitplan beschreiben

Sie haben folgende Möglichkeiten, Informationen zu einem Sicherungszeitplan abzurufen:

gcloud
Führen Sie den Befehl gcloud firestore backups schedules describe aus:
gcloud firestore backups schedules describe \
--database='DATABASE_ID' \
--backup-schedule=BACKUP_SCHEDULE_ID
Ersetzen Sie Folgendes:
  • DATABASE_ID: Die ID der zu sichernden Datenbank. Legen Sie für die Standarddatenbank '(default)' fest.
  • BACKUP_SCHEDULE_ID: Die ID eines Sicherungszeitplans. Sie können die ID jedes Sicherungszeitplans aufrufen, wenn Sie alle Sicherungszeitpläne auflisten.

Sicherungszeitplan aktualisieren

So aktualisieren Sie die Aufbewahrungsdauer eines Sicherungszeitplans:

gcloud
Führen Sie den Befehl gcloud firestore backups schedules update aus:
gcloud firestore backups schedules update \
--database='DATABASE_ID' \
--backup-schedule=BACKUP_SCHEDULE_ID \
--retention=RETENTION_PERIOD
Ersetzen Sie Folgendes:
  • DATABASE_ID: Die ID der zu sichernden Datenbank. Legen Sie für die Standarddatenbank '(default)' fest.
  • BACKUP_SCHEDULE_ID: Die ID eines Sicherungszeitplans. Sie können die ID jedes Sicherungszeitplans aufrufen, wenn Sie alle Sicherungszeitpläne auflisten.
  • RETENTION_PERIOD: Legen Sie einen Wert von bis zu 14 Wochen (14w) fest.
Firebase CLI
Führen Sie den Befehl firebase firestore:backups:schedules:update aus:
firebase firestore:backups:schedules:update \
BACKUP_SCHEDULE \
--retention RETENTION_PERIOD
Ersetzen Sie Folgendes:
  • BACKUP_SCHEDULE: Der vollständige Ressourcenname eines Sicherungszeitplans. Sie können sich den Namen jedes Sicherungszeitplans ansehen, indem Sie alle Sicherungszeitpläne auflisten.
  • RETENTION_PERIOD: Legen Sie einen Wert von bis zu 14 Wochen (14w) fest.

Sie können die Aufbewahrungsdauer eines Sicherungszeitplans aktualisieren, aber nicht die Wiederholung. Wenn Sie einen Sicherungszeitplan mit einer anderen Wiederholung benötigen, löschen Sie den alten Sicherungszeitplan, wenn er nicht mehr erforderlich ist, und erstellen Sie einen neuen Sicherungszeitplan mit der gewünschten Wiederholung.

Sicherungszeitplan löschen

Sie haben folgende Möglichkeiten, einen Sicherungszeitplan zu löschen:

gcloud
Führen Sie den Befehl gcloud firestore backups schedules delete aus:
gcloud firestore backups schedules delete \
--database='DATABASE_ID' \
--backup-schedule=BACKUP_SCHEDULE_ID
Ersetzen Sie Folgendes:
  • DATABASE_ID: Die ID der zu sichernden Datenbank. Legen Sie für die Standarddatenbank '(default)' fest.
  • BACKUP_SCHEDULE_ID: Die ID eines Sicherungszeitplans. Sie können die ID jedes Sicherungszeitplans aufrufen, wenn Sie alle Sicherungszeitpläne auflisten.
Firebase CLI
Führen Sie den Befehl firebase firestore:backups:schedules:delete aus:
firebase firestore:backups:schedules:delete \
BACKUP_SCHEDULE
Ersetzen Sie Folgendes:
  • BACKUP_SCHEDULE: Der vollständige Ressourcenname eines Sicherungszeitplans. Sie können sich den Namen jedes Sicherungszeitplans ansehen, indem Sie alle Sicherungszeitpläne auflisten.

Durch das Löschen eines Sicherungszeitplans werden nicht bereits mit diesem Zeitplan erstellte Sicherungen gelöscht. Sie können warten, bis sie nach Ablauf der Aufbewahrungsdauer ablaufen, oder eine Sicherung manuell löschen. Weitere Informationen finden Sie unter Sicherung löschen.

Sicherungen verwalten

Sicherungen auflisten

Sie haben folgende Möglichkeiten, verfügbare Sicherungen aufzulisten:

gcloud
Führen Sie den Befehl gcloud firestore backups list aus:
gcloud firestore backups list \
--format="table(name, database, state)"
Mit dem Flag --format="table(name, database, state)" wird die Ausgabe in einem leichter lesbaren Format formatiert. Wenn Sie nur die Sicherungen an einem bestimmten Speicherort auflisten möchten, verwenden Sie das Flag --location:
gcloud firestore backups list \
--location=LOCATION \
--format="table(name, database, state)"
Ersetzen Sie LOCATION durch den Namen eines Cloud Firestore-Standorts.
Firebase CLI
Führen Sie den Befehl firebase firestore:backups:list aus:
firebase firestore:backups:list
Wenn Sie nur die Sicherungen an einem bestimmten Speicherort auflisten möchten, verwenden Sie das Flag --location:
firebase firestore:backups:list \
--location=LOCATION
Ersetzen Sie LOCATION durch den Namen eines Cloud Firestore-Standorts.

Sicherung beschreiben

Sie haben folgende Möglichkeiten, Details zu einer Sicherung aufzurufen:

gcloud
Führen Sie den Befehl gcloud firestore backups describe aus:
gcloud firestore backups describe \
--location=LOCATION \
--backup=BACKUP_ID
Ersetzen Sie Folgendes:
  • LOCATION: Der Speicherort der Datenbank.
  • BACKUP_ID: Die ID einer Sicherung. Sie können die ID der einzelnen Sicherungen sehen, wenn Sie alle Sicherungen auflisten.
Firebase CLI
Führen Sie den Befehl firebase firestore:backups:get aus:
firebase firestore:backups:get BACKUP
Ersetzen Sie Folgendes:
  • BACKUP: Der vollständige Ressourcenname einer Sicherung. Sie können sich den Namen der einzelnen Sicherungen ansehen, wenn Sie alle Sicherungen auflisten.

Sicherung löschen

Sie haben folgende Möglichkeiten, ein Back-up zu löschen: Achtung: Gelöschte Sicherungen können nicht wiederhergestellt werden.
gcloud
Führen Sie den Befehl gcloud firestore backups delete aus:
gcloud firestore backups delete \
--location=LOCATION \
--backup=BACKUP_ID
Ersetzen Sie Folgendes:
  • LOCATION: Der Speicherort der Datenbank.
  • BACKUP_ID: Die ID einer Sicherung. Sie können die ID der einzelnen Sicherungen sehen, wenn Sie alle Sicherungen auflisten.
Firebase CLI
Führen Sie den Befehl firebase firestore:backups:delete aus:
firebase firestore:backups:delete \
BACKUP
Ersetzen Sie Folgendes:
  • BACKUP: Der vollständige Ressourcenname einer Sicherung. Sie können den Namen jeder Sicherung aufrufen, indem Sie alle Sicherungen auflisten.

Daten aus einer Datenbanksicherung wiederherstellen

Bei einem Wiederherstellungsvorgang werden die Daten aus einer Sicherung in eine neue Cloud Firestore-Datenbank geschrieben.

Sie haben folgende Möglichkeiten, einen Wiederherstellungsvorgang zu starten:

gcloud
Führen Sie den Befehl gcloud firestore databases restore aus:
gcloud firestore databases restore \
--source-backup=projects/PROJECT_ID/locations/LOCATION/backups/BACKUP_ID \
--destination-database='DATABASE_ID'
Ersetzen Sie Folgendes:
  • PROJECT_ID: Ihre Projekt-ID.
  • LOCATION: Speicherort der Datenbanksicherung und Speicherort der neuen Datenbank, die für die wiederhergestellten Daten erstellt wurde.
  • BACKUP_ID: Die ID einer Sicherung. Sie können die ID der einzelnen Sicherungen sehen, wenn Sie alle Sicherungen auflisten.
  • DATABASE_ID: Eine Datenbank-ID für die neue Datenbank. Sie können keine Datenbank-ID verwenden, die bereits verwendet wird.
Die Ausgabe enthält die Komponenten metadata, name und response:
metadata:
  '@type': type.googleapis.com/google.firestore.admin.v1.RestoreDatabaseMetadata
  backup: projects/PROJECT_ID/locations/LOCATION/backups/BACKUP_ID
  database: projects/PROJECT_ID/databases/DATABASE_ID
  operationState: PROCESSING
  progressPercentage:
    completedWork: '20'
    estimatedWork: '100'
  startTime: '2023-12-06T14:20:17.398325Z'
name: projects/PROJECT_ID/databases/DATABASE_ID/operations/operation_uuid
response:
  '@type': type.googleapis.com/google.firestore.admin.v1.Database
  createTime: '2023-12-06T14:20:17.398325Z'
  name: projects/PROJECT_ID/databases/DATABASE_ID
  ...
Das Feld metadata enthält eine progressPercentage-Komponente, die den geschätzten Fortschritt der Wiederherstellung bis zum aktuellen Zeitpunkt angibt, und eine operationState, die den Gesamtstatus der Wiederherstellung angibt. Wenn Sie diese Informationen noch einmal abrufen möchten, verwenden Sie gcloud firestore operations list:
gcloud firestore operations list --database=DATABASE_ID
oder mit dem Feld name aus der oben beschriebenen Ausgabe mit gcloud firestore operations describe:
gcloud firestore operations describe OPERATION_NAME
Firebase CLI
Führen Sie den Befehl firebase firestore:databases:restore aus:
firebase firestore:databases:restore \
--backup 'BACKUP' \
--database 'DATABASE_ID'
Ersetzen Sie Folgendes:
  • BACKUP: Der vollständige Ressourcenname einer Sicherung. Sie können sich den Namen der einzelnen Sicherungen ansehen, wenn Sie alle Sicherungen auflisten.
  • DATABASE_ID: Eine Datenbank-ID für die neue Datenbank. Sie können keine Datenbank-ID verwenden, die bereits verwendet wird.