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 istErforderliche 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-DatenbankDie 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 Sicherungenroles/datastore.backupsViewer
: Lesezugriff auf Sicherungenroles/datastore.backupSchedulesAdmin
: Lese- und Schreibzugriff auf Sicherungspläneroles/datastore.backupSchedulesViewer
: Lesezugriff auf Sicherungspläneroles/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 zum Erstellen eines Sicherungszeitplans für eine Datenbank den Befehl gcloud alpha firestore backups schedules create
oder firebase firestore:databases:backups:schedules
.
Täglichen Sicherungszeitplan erstellen
gcloud
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
).
Firebase CLI
Legen Sie das Flag--recurrence
auf DAILY
fest, um einen täglichen Sicherungszeitplan zu erstellen:
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 dafür einen Wert von bis zu 14 Wochen fest (
14w
).
Terraform
Erstellen Sie einegoogle_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. Legen Sie für die Standarddatenbank
'(default)'
fest.
Sie können auch einen Ressourcenverweis auf eine Terraform-Ressource vom Typ - RETENTION_PERIOD_SECONDS: Legen Sie dafür einen Wert in Sekunden fest, gefolgt von „s“. Der maximale Wert beträgt
8467200s
(14 Wochen).
google_firestore_database
verwenden.
Wöchentlichen Sicherungszeitplan erstellen
gcloud
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=DAYErsetzen 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 SonntagMON
für MontagTUE
für DienstagWED
für MittwochTHU
für DonnerstagFRI
für FreitagSAT
für Samstag
Firebase CLI
Legen Sie das Flag--recurrence
auf WEEKLY
fest, um einen wöchentlichen Zeitplan für die Sicherung zu erstellen:
firebase firestore:backups:schedules:create \ --database 'DATABASE_ID' \ --recurrence 'WEEKLY' \ --retention RETENTION_PERIOD --day-of-week DAYErsetzen 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:
SUNDAY
für SonntagMONDAY
für MontagTUESDAY
für DienstagWEDNESDAY
für MittwochTHURSDAY
für DonnerstagFRIDAY
für FreitagSATURDAY
für Samstag
Terraform
Wenn Sie einen wöchentlichen Zeitplan für die Sicherung erstellen möchten, erstellen Sie einegoogle_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 einen Ressourcenverweis auf eine Terraform-Ressource vom Typ - RETENTION_PERIOD_SECONDS: Legen Sie dafür einen Wert in Sekunden fest, gefolgt von „s“. Der maximale Wert beträgt
8467200s
(14 Wochen). - DAY: Der Wochentag, an dem die Sicherung erstellt werden soll. Legen Sie dafür einen der folgenden Werte fest:
SUNDAY
für SonntagMONDAY
für MontagTUESDAY
für DienstagWEDNESDAY
für MittwochTHURSDAY
für DonnerstagFRIDAY
für FreitagSATURDAY
für Samstag
google_firestore_database
verwenden.
Sicherungspläne auflisten
Verwenden Sie eine der folgenden Methoden, um alle Sicherungspläne für eine Datenbank aufzulisten:
gcloud
Führen Sie den Befehlgcloud alpha firestore backups schedules list
aus.
gcloud alpha firestore backups schedules list \ --database='DATABASE_ID'Ersetzen Sie DATABASE_ID durch die ID der Datenbank. Verwenden Sie
'(default)'
als Standarddatenbank.
Firebase CLI
Führen Sie den Befehlfirebase 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)'
als Standarddatenbank.
Sicherungszeitplan beschreiben
Verwenden Sie eine der folgenden Methoden, um Informationen zu einem Sicherungszeitplan abzurufen:
gcloud
Verwenden Sie den Befehlgcloud alpha firestore backups schedules describe
:
gcloud alpha firestore backups schedules describe \ --database='DATABASE_ID' \ --backup-schedule=BACKUP_SCHEDULE_IDErsetzen 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 eine der folgenden Methoden, um die Aufbewahrungsdauer eines Sicherungszeitplans zu aktualisieren:
gcloud
Verwenden Sie den Befehlgcloud alpha firestore backups schedules update
:
gcloud alpha firestore backups schedules update \ --database='DATABASE_ID' \ --backup-schedule=BACKUP_SCHEDULE_ID \ --retention=RETENTION_PERIODErsetzen 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.
- RETENTION_PERIOD: Legen Sie dafür einen Wert von bis zu 14 Wochen fest (
14w
).
Firebase CLI
Verwenden Sie den Befehlfirebase firestore:backups:schedules:update
:
firebase firestore:backups:schedules:update \ BACKUP_SCHEDULE \ --retention RETENTION_PERIODErsetzen Sie Folgendes:
- BACKUP_SCHEDULE: Der vollständige Ressourcenname eines Sicherungszeitplans. Sie können den Namen jedes Sicherungszeitplans sehen, wenn Sie alle Sicherungszeitpläne auflisten.
- RETENTION_PERIOD: Legen Sie dafür einen Wert von bis zu 14 Wochen fest (
14w
).
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, falls 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
Verwenden Sie den Befehlgcloud alpha firestore backups schedules delete
:
gcloud alpha firestore backups schedules delete \ --database='DATABASE_ID' \ --backup-schedule=BACKUP_SCHEDULE_IDErsetzen 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.
Firebase CLI
Verwenden Sie den Befehlfirebase firestore:backups:schedules:delete
:
firebase firestore:backups:schedules:delete \ BACKUP_SCHEDULEErsetzen Sie Folgendes:
- BACKUP_SCHEDULE: Der vollständige Ressourcenname eines Sicherungszeitplans. Sie können den Namen 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 eine der folgenden Methoden, um verfügbare Sicherungen aufzulisten:
gcloud
Verwenden Sie den Befehlgcloud alpha firestore backups list
:
gcloud alpha firestore backups list \ --format="table(name, database, state)"Das Flag
--format="table(name, database, state)"
formatiert die Ausgabe in ein besser lesbares 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-Speicherorts.
Firebase CLI
Verwenden Sie den Befehlfirebase firestore:backups:list
:
firebase firestore:backups:listWenn Sie nur die Sicherungen von einem bestimmten Speicherort auflisten möchten, verwenden Sie das Flag
--location
:
firebase firestore:backups:list \ --location=LOCATIONErsetzen Sie
LOCATION
durch den Namen eines Firestore-Speicherorts.
Sicherung beschreiben
Wenn Sie Details zu einer Sicherung aufrufen möchten, verwenden Sie eine der folgenden Methoden:
gcloud
Verwenden Sie den Befehlgcloud alpha firestore backups describe
:
gcloud alpha firestore backups describe \ --location=LOCATION \ --backup=BACKUP_IDErsetzen Sie Folgendes:
- LOCATION: Der Speicherort der Datenbank.
- BACKUP_ID: Die ID einer Sicherung. Sie können die ID jeder Sicherung sehen, wenn Sie alle Sicherungen auflisten.
Firebase CLI
Verwenden Sie den Befehlfirebase firestore:backups:get
:
firebase firestore:backups:get BACKUPErsetzen Sie Folgendes:
- BACKUP: Der vollständige Ressourcenname einer Sicherung. Sie können den Namen jeder Sicherung sehen, wenn Sie alle Sicherungen auflisten.
Sicherung löschen
gcloud
Verwenden Sie den Befehlgcloud alpha firestore backups delete
:
gcloud alpha firestore backups delete \ --location=LOCATION \ --backup=BACKUP_IDErsetzen Sie Folgendes:
- LOCATION: Der Speicherort der Datenbank.
- BACKUP_ID: Die ID einer Sicherung. Sie können die ID jeder Sicherung sehen, wenn Sie alle Sicherungen auflisten.
Firebase CLI
Verwenden Sie den Befehlfirebase firestore:backups:delete
:
firebase firestore:backups:delete \ BACKUPErsetzen Sie Folgendes:
- BACKUP: Der vollständige Ressourcenname einer Sicherung. Sie können den Namen 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 eine der folgenden Methoden, um einen Wiederherstellungsvorgang zu starten:
gcloud
Verwenden Sie den Befehlgcloud alpha firestore databases restore
:
gcloud alpha 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: 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 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.
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 bisherigen Wiederherstellung angibt, 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. Alternativ können Sie das Feld
name
aus der oben beschriebenen Ausgabe mit gcloud firestore operations describe
verwenden:
gcloud firestore operations describe OPERATION_NAME
Firebase CLI
Verwenden Sie den Befehlfirebase firestore:databases:restore
:
firebase firestore:databases:restore \ --backup 'BACKUP' \ --database 'DATABASE_ID'Ersetzen Sie Folgendes:
- BACKUP: Der vollständige Ressourcenname einer Sicherung. Sie können den Namen 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.