Daten sichern und wiederherstellen

Auf dieser Seite wird beschrieben, wie Sie das Firestore-Feature für geplante Sicherungen verwenden. Verwenden Sie Sicherungen, um Ihre Daten vor einer Beschädigung auf Anwendungsebene oder vor versehentlichem Löschen zu schützen.

Mit Sicherungen können Sie Sicherungspläne konfigurieren, um tägliche oder wöchentliche Sicherungen der angegebenen Datenbank zu erstellen. Mit diesen Sicherungen können Sie dann Daten 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 Datenbank-Gültigkeitsdauer-Richtlinien. Eine Sicherung befindet sich am selben Speicherort wie die Quelldatenbank.

Sicherungen haben eine konfigurierbare Aufbewahrungsdauer und werden so lange gespeichert, bis die Aufbewahrungsdauer abläuft oder bis Sie die Sicherung löschen. Durch das Löschen der Quelldatenbank werden zugehörige Sicherungen nicht automatisch gelöscht.

Firestore speichert Metadaten im Zusammenhang mit Sicherungen und Sicherungsplänen im Zusammenhang mit einer Datenbank. 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 Lese- oder Schreibvorgängen in Ihrer Live-Datenbank.

Kosten

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

  • Der von jeder Sicherung belegte Speicherplatz.
  • Bei einer Wiederherstellung werden Ihnen die Kosten nach der Größe der Sicherung in Rechnung gestellt.

Weitere Details und genaue Preise finden Sie in der Preisübersicht.

Hinweise

Die Abrechnung für das Google Cloud-Projekt muss aktiviert sein. Prüfen, ob die Abrechnung für ein Projekt aktiviert ist

Erforderliche Rollen

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

  • roles/datastore.owner: Vollständiger Zugriff auf die Firestore-Datenbank
  • Die folgenden Rollen sind in der Google Cloud Console ebenfalls verfügbar, aber nicht 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 Sicherungspläne
    • roles/datastore.backupSchedulesViewer: Lesezugriff auf Sicherungspläne
    • roles/datastore.restoreAdmin: Berechtigungen zum Initiieren von Wiederherstellungsvorgängen

Zeitpläne für Sicherungen erstellen und verwalten

Die folgenden Beispiele zeigen, wie Sie einen Sicherungszeitplan einrichten. Für jede Datenbank können Sie bis zu einen täglichen Sicherungszeitplan und bis zu einen wöchentlichen Sicherungszeitplan konfigurieren. Sie können nicht mehrere wöchentliche Sicherungspläne für verschiedene Wochentage konfigurieren.

Sie können die genaue Tageszeit der Sicherung nicht konfigurieren. Sicherungen werden jeden Tag zu unterschiedlichen Zeiten erstellt. Bei wöchentlichen Sicherungsplänen können Sie den Wochentag für die Erstellung einer Sicherung konfigurieren.

Zeitplan für die Sicherung erstellen

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

Täglichen Sicherungszeitplan erstellen

Legen Sie das Flag --recurrence auf daily fest, um einen täglichen Sicherungszeitplan zu erstellen:

gcloud alpha 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 dafür einen Wert von bis zu 14 Wochen fest (14w).

Wöchentlichen Sicherungszeitplan erstellen

Legen Sie das Flag --recurrence auf weekly fest, um einen wöchentlichen Zeitplan für die Sicherung zu erstellen:

gcloud alpha 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 dafür einen Wert von bis zu 14 Wochen fest (14w).
  • DAY: Der Wochentag, an dem die Sicherung erstellt werden soll. Legen Sie dafür 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

Sicherungspläne auflisten

Verwenden Sie den Befehl gcloud alpha firestore backups schedules list, um alle Sicherungspläne für eine Datenbank aufzulisten. Dieser Befehl gibt Informationen zu allen Sicherungsplänen zurück.

gcloud alpha firestore backups schedules list \
--database='DATABASE_ID'

Ersetzen Sie DATABASE_ID durch die ID der Datenbank. Verwenden Sie (default) als Standarddatenbank.

Sicherungszeitplan beschreiben

Verwenden Sie den Befehl gcloud alpha firestore backups schedules describe, um Informationen zu einem Sicherungszeitplan abzurufen:

gcloud alpha 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 sehen, wenn Sie alle Sicherungszeitpläne auflisten.

Zeitplan für die Sicherung aktualisieren

Verwenden Sie den Befehl gcloud alpha firestore backups schedules update, um die Aufbewahrungsdauer eines Sicherungszeitplans zu aktualisieren:

gcloud alpha 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. Die ID für jeden Sicherungszeitplan finden Sie in der Liste aller Sicherungszeitpläne.
  • RETENTION_PERIOD: Legen Sie dafür einen Wert von bis zu 14 Wochen fest (14w).

Zeitplan für die Sicherung löschen

Verwenden Sie den Befehl gcloud alpha firestore backups schedules delete, um einen Sicherungszeitplan zu löschen:

gcloud alpha 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 sehen, wenn Sie alle Sicherungszeitpläne auflisten.

Beachten Sie, dass durch das Löschen eines Sicherungszeitplans keine Sicherungen gelöscht werden, die bereits durch diesen Zeitplan erstellt wurden. Sie können warten, bis die Aufbewahrungsdauer abgelaufen ist, oder eine Sicherung manuell löschen. Informationen dazu finden Sie unter Sicherung löschen.

Sicherungen verwalten

Sicherungen auflisten

Verwenden Sie den Befehl gcloud alpha firestore backups list, um verfügbare Sicherungen aufzulisten:

gcloud alpha firestore backups list \
--format="table(name, database, state)"

Das Flag --format="table(name, database, state)" formatiert die Ausgabe in ein lesbareres Format.

Verwenden Sie das Flag --location, um nur die Sicherungen von einem bestimmten Speicherort aufzulisten:

gcloud alpha firestore backups list \
--location=LOCATION \
--format="table(name, database, state)"

Ersetzen Sie LOCATION durch den Namen eines Firestore-Standorts.

Sicherung beschreiben

Verwenden Sie den Befehl gcloud alpha firestore backups describe, um Details zu einer Sicherung aufzurufen:

gcloud alpha firestore backups describe \
--location=LOCATION \
--backup=BACKUP_ID
  • LOCATION: Der Speicherort der Datenbank.
  • BACKUP_ID: Die ID einer Sicherung. Sie können die ID jeder Sicherung sehen, wenn Sie alle Sicherungen auflisten.

Sicherung löschen

Verwenden Sie den Befehl gcloud alpha firestore backups delete, um eine Sicherung zu löschen:

gcloud alpha firestore backups delete \
--location=LOCATION \
--backup=BACKUP_ID
  • LOCATION: Der Speicherort der Datenbank.
  • BACKUP_ID: Die ID einer Sicherung. Sie können die ID jeder Sicherung sehen, 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 den Befehl gcloud alpha firestore databases restore, um einen Wiederherstellungsvorgang zu starten:

gcloud alpha firestore databases restore \
--source-backup=projects/PROJECT_ID/locations/LOCATION/backups/BACKUP_ID \
--destination-database='DATABASE_ID'
  • 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 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. 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 die Komponente progressPercentage, die den geschätzten Fortschritt der Wiederherstellung bisher enthält, und einen operationState, der den Gesamtstatus der Wiederherstellung angibt.

Verwenden Sie gcloud firestore operations list, um diese Informationen noch einmal abzurufen:

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