Daten sichern und wiederherstellen

Auf dieser Seite wird beschrieben, wie Sie geplante Firestore-Sicherungen verwenden . Sicherungen verwenden, um Daten vor Daten auf Anwendungsebene zu schützen oder durch versehentliches 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 dann in eine neue Datenbank übertragen.

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 Datenbank-Gültigkeitsdauer-Richtlinien. Eine Sicherung befindet sich am selben Speicherort wie die Quelldatenbank.

Sicherungen haben eine konfigurierbare Aufbewahrungsdauer und werden bis zur Aufbewahrung gespeichert oder bis Sie die Sicherung löschen. Das Löschen der Quelldatenbank zugehörige Sicherungen werden nicht automatisch gelöscht.

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

Das Erstellen oder Aufbewahren von Sicherungen hat keinen Einfluss auf die Leistung von Lesevorgängen oder in Ihrer Live-Datenbank schreibt.

Kosten

Bei der Verwendung von Sicherungen wird Ihnen Folgendes in Rechnung gestellt:

  • Der von jeder Sicherung verwendete Speicherplatz.
  • Für eine Wiederherstellung wird Ihnen der Speicherplatz in Rechnung gestellt, der für die Sicherung benötigt wird.

Weitere Einzelheiten und die genauen Preise finden Sie auf der Seite Preise.

Hinweise

Die Abrechnung für das Google Cloud-Projekt muss aktiviert sein. Hier erfahren Sie, wie Sie prüfen, ob die Abrechnung für ein Projekt aktiviert ist.

Erforderliche Rollen

Um die Berechtigungen zu erhalten, die Sie zum Verwalten von Sicherungen und Sicherungszeitplänen benötigen, Bitten Sie Ihren Administrator, Ihnen eine oder mehrere der folgenden Identity and Access Management zu gewähren. Rollen:

  • roles/datastore.owner: Vollständiger Zugriff auf die Firestore-Datenbank
  • Die folgenden Rollen sind auch verfügbar, aber nicht in der Google Cloud Console sichtbar. Verwenden Sie die 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 Starten von Wiederherstellungsvorgängen

Sicherungspläne erstellen und verwalten

Die folgenden Beispiele zeigen, wie Sie einen Sicherungszeitplan einrichten. Für jede können Sie bis zu einen täglichen Sicherungszeitplan und bis zu eine wöchentliche Zeitplan für die Sicherung. Sie können nicht mehrere wöchentliche Sicherungspläne für an unterschiedlichen Wochentagen.

Sie können die genaue Tageszeit der Sicherung nicht konfigurieren. Sicherungen werden erstellt am zu unterschiedlichen Zeiten. Für wöchentliche Sicherung können Sie festlegen, an welchem Wochentag eine Sicherung erstellt werden soll.

Zeitplan für die Sicherung erstellen

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

Täglichen Sicherungszeitplan erstellen

gcloud
Wenn Sie einen Zeitplan für die tägliche Sicherung 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. Festlegen auf '(default)' für die Standarddatenbank.
  • RETENTION_PERIOD: Legen Sie dafür einen Wert von bis zu 14 Wochen (14w) fest.
Firebase CLI
Wenn Sie einen Zeitplan für die tägliche Sicherung 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. Festlegen auf '(default)' für die Standarddatenbank.
  • RETENTION_PERIOD: Legen Sie dafür einen Wert von bis zu 14 Wochen (14w) fest.
Terraform
Erstellen Sie eine google_firestore_backup_schedule-Ressource, um einen täglichen Sicherungszeitplan zu erstellen.
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. Festlegen auf '(default)' für die Standarddatenbank.
  • Sie können auch eine Ressourcenreferenz auf ein Terraform-Ressource vom Typ google_firestore_database.
  • RETENTION_PERIOD_SECONDS: Legen Sie dafür einen Wert in Sekunden gefolgt von „s“ fest. Der Höchstwert beträgt 8467200s (14 Wochen).

Wöchentlichen Sicherungszeitplan erstellen

gcloud
Legen Sie das Flag --recurrence auf weekly fest, um einen wöchentlichen Sicherungszeitplan zu erstellen:
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. Festlegen auf '(default)' für die Standarddatenbank.
  • RETENTION_PERIOD: Legen Sie dafür einen Wert von bis zu 14 Wochen (14w) fest.
  • DAY: Der Wochentag, an dem die Sicherung erstellt werden soll. Festlegen auf eines der folgenden:
    • 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
Legen Sie das Flag --recurrence auf WEEKLY fest, um einen wöchentlichen Sicherungszeitplan zu erstellen:
firebase firestore:backups:schedules:create \
--database 'DATABASE_ID' \
--recurrence 'WEEKLY' \
--retention RETENTION_PERIOD
--day-of-week DAY
Ersetzen Sie dabei Folgendes:
  • DATABASE_ID: Die ID der zu sichernden Datenbank. Festlegen auf '(default)' für die Standarddatenbank.
  • RETENTION_PERIOD: Legen Sie einen Wert von bis zu 14 Wochen (14w) fest.
  • DAY: Der Wochentag, an dem die Sicherung erstellt wird. Festlegen auf eines der folgenden:
    • 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
Zum Erstellen eines wöchentlichen Sicherungszeitplans 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. Festlegen auf '(default)' für die Standarddatenbank.
  • Sie können auch eine Ressourcenreferenz auf ein Terraform-Ressource vom Typ google_firestore_database.
  • RETENTION_PERIOD_SECONDS: Legen Sie dafür einen Wert in Sekunden gefolgt von „s“ fest. Der Höchstwert beträgt 8467200s (14 Wochen).
  • DAY: Der Wochentag, an dem die Sicherung erstellt wird. 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

Sicherungspläne auflisten

Verwenden Sie eine der folgenden Methoden, um alle Sicherungsplä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.

Zeitplan für die Sicherung beschreiben

Verwenden Sie eine der folgenden Methoden, um 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 dabei Folgendes:
  • DATABASE_ID: Die ID der zu sichernden Datenbank. Festlegen auf '(default)' für die Standarddatenbank.
  • BACKUP_SCHEDULE_ID: Die ID eines Sicherungszeitplans. Ich können Sie die ID jedes Sicherungszeitplans sehen, Listen Sie alle Sicherungspläne auf.

Zeitplan für die Sicherung aktualisieren

Verwenden Sie eine der folgenden Methoden, um die Aufbewahrungsdauer eines Sicherungszeitplans zu aktualisieren:

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 dabei Folgendes:
  • DATABASE_ID: Die ID der zu sichernden Datenbank. Festlegen auf '(default)' für die Standarddatenbank.
  • 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 dafür 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 dabei Folgendes:
  • BACKUP_SCHEDULE: Der vollständige Ressourcenname eines Sicherungszeitplans. Ich können Sie den Namen jedes Sicherungszeitplans sehen, Listen Sie alle Sicherungspläne auf.
  • RETENTION_PERIOD: Legen Sie einen Wert von bis zu 14 Wochen (14w) fest.

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

Zeitplan für die Sicherung löschen

Verwenden Sie eine der folgenden Methoden, um 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. Festlegen auf '(default)' für die Standarddatenbank.
  • BACKUP_SCHEDULE_ID: Die ID eines Sicherungszeitplans. Ich können Sie die ID jedes Sicherungszeitplans sehen, Listen Sie alle Sicherungspläne auf.
Firebase CLI
Führen Sie den Befehl firebase firestore:backups:schedules:delete aus:
firebase firestore:backups:schedules:delete \
BACKUP_SCHEDULE
Ersetzen Sie dabei 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

Verwenden Sie eine der folgenden Methoden, um 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. Verwenden Sie das Flag --location, um nur die Sicherungen von einem bestimmten Speicherort aufzulisten:
gcloud firestore backups list \
--location=LOCATION \
--format="table(name, database, state)"
Ersetzen Sie LOCATION durch den Namen eines Firestore. Standort.
Firebase CLI
Führen Sie den Befehl firebase firestore:backups:list aus:
firebase firestore:backups:list
Verwenden Sie das Flag --location, um nur die Sicherungen von einem bestimmten Speicherort aufzulisten:
firebase firestore:backups:list \
--location=LOCATION
Ersetzen Sie LOCATION durch den Namen eines Firestore. Standort.

Sicherung beschreiben

Mit einer der folgenden Methoden können Sie Details zu einer Sicherung aufrufen:

gcloud
Führen Sie den Befehl gcloud firestore backups describe aus:
gcloud firestore backups describe \
--location=LOCATION \
--backup=BACKUP_ID
Ersetzen Sie dabei 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 dabei Folgendes:
  • BACKUP: Der vollständige Ressourcenname einer Sicherung. Sie können den Namen jeder Sicherung aufrufen, wenn Sie alle Sicherungen auflisten.

Sicherung löschen

Mit einer der folgenden Methoden können Sie eine Sicherung löschen. Warnung: Eine gelöschte Sicherung kann 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 dabei Folgendes:
  • LOCATION: Der Speicherort der Datenbank.
  • BACKUP_ID: Die ID einer Sicherung. Ich können die ID jeder Sicherung aufrufen, wenn Sie alle Sicherungen auflisten.
Firebase CLI
Führen Sie den Befehl firebase firestore:backups:delete aus:
firebase firestore:backups:delete \
BACKUP
Ersetzen Sie dabei Folgendes:
  • BACKUP: Der vollständige Ressourcenname einer Sicherung. Sie können den Namen jeder Sicherung aufrufen wenn Sie alle Sicherungen auflisten.

Daten aus einer Datenbanksicherung wiederherstellen

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

Verwenden Sie eine der folgenden Methoden, um 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 dabei Folgendes:
  • PROJECT_ID: Ihre Projekt-ID.
  • LOCATION: Der Speicherort der Datenbanksicherung und der Speicherort der neuen Datenbank, die für die wiederhergestellten Daten erstellt wurde.
  • BACKUP_ID: Die ID einer Sicherung. Sie können die ID jeder Sicherung aufrufen, 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.
Der Datenbankmodus entspricht dem der Sicherung. 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 bisherigen Fortschritt der Wiederherstellung angibt, sowie einen operationState, der 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 mithilfe des Felds 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 dabei Folgendes:
  • BACKUP: Der vollständige Ressourcenname einer Sicherung. Sie können den Namen jeder Sicherung aufrufen, 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.
Der Datenbankmodus stimmt mit dem der Sicherung überein.