Mit der Wiederherstellung zu einem bestimmten Zeitpunkt (Point-in-Time Recovery, PITR) arbeiten
Auf dieser Seite wird beschrieben, wie Sie mit der Wiederherstellung zu einem bestimmten Zeitpunkt (PITR) Daten in Firestore mit MongoDB-Kompatibilität speichern und wiederherstellen.
Informationen zu den Konzepten der Wiederherstellung zu einem bestimmten Zeitpunkt finden Sie unter Wiederherstellung zu einem bestimmten Zeitpunkt.
Berechtigungen
Bitten Sie Ihren Administrator, Ihnen die Berechtigungen zu erteilen, die
Sie zum Verwalten der PITR-Einstellungen benötigen,
indem er Ihnen die
Cloud Datastore-Inhaber (roles/datastore.owner) IAM-Rolle für das Projekt gewährt, dessen PITR-Einstellungen Sie aktivieren möchten.
Weitere Informationen zum Zuweisen von Rollen finden Sie unter Zugriff auf Projekte, Ordner und Organisationen verwalten.
Diese vordefinierte Rolle enthält die Berechtigungen, die zum Verwalten der PITR-Einstellungen erforderlich sind. Maximieren Sie den Abschnitt Erforderliche Berechtigungen , um die notwendigen Berechtigungen anzuzeigen, die erforderlich sind:
Erforderliche Berechtigungen
Die folgenden Berechtigungen sind zum Verwalten der PITR-Einstellungen erforderlich:
-
Zum Aktivieren der Wiederherstellung zu einem bestimmten Zeitpunkt beim Erstellen einer Datenbank:
datastore.databases.create -
Zum Aktualisieren der PITR-Einstellungen für eine vorhandene Datenbank:
datastore.databases.update,datastore.databases.list -
Zum Ausführen von Lesevorgängen aus PITR-Daten:
datastore.databases.get,datastore.entities.get,datastore.entities.list -
Zum Exportieren von PITR-Daten:
datastore.databases.export -
Zum Importieren von PITR-Daten:
datastore.databases.import -
Zum Klonen einer Datenbank:
datastore.databases.clone
Sie können diese Berechtigungen auch mit benutzerdefinierten Rollen oder anderen vordefinierten Rollen erhalten.
Hinweis
Beachten Sie die folgenden Punkte, bevor Sie die Wiederherstellung zu einem bestimmten Zeitpunkt verwenden:
- Sie können nicht sofort nach dem Aktivieren der Wiederherstellung zu einem bestimmten Zeitpunkt mit dem Lesen von Daten beginnen, die sieben Tage in der Vergangenheit liegen.
- Wenn Sie die Wiederherstellung zu einem bestimmten Zeitpunkt beim Erstellen einer Datenbank aktivieren möchten, müssen Sie den Befehl
gcloud firestore databases createverwenden. Das Aktivieren der Wiederherstellung zu einem bestimmten Zeitpunkt beim Erstellen einer Datenbank mit der Google Cloud Console wird nicht unterstützt. - Firestore mit MongoDB-Kompatibilität behält Versionen ab dem Zeitpunkt nach dem Aktivieren der Wiederherstellung zu einem bestimmten Zeitpunkt bei.
- Sie können PITR-Daten im PITR-Fenster nicht lesen, nachdem Sie die Wiederherstellung zu einem bestimmten Zeitpunkt deaktiviert haben.
- Wenn Sie die Wiederherstellung zu einem bestimmten Zeitpunkt sofort nach dem Deaktivieren wieder aktivieren, sind die vorherigen PITR-Daten nicht mehr verfügbar. Alle PITR-Daten, die vor dem Deaktivieren der Wiederherstellung zu einem bestimmten Zeitpunkt erstellt wurden, werden nach dem Ablaufdatum der Wiederherstellung zu einem bestimmten Zeitpunkt gelöscht.
- Wenn Sie versehentlich Daten in der letzten Stunde gelöscht haben und die Wiederherstellung zu einem bestimmten Zeitpunkt deaktiviert ist, können Sie Ihre Daten wiederherstellen, indem Sie die Wiederherstellung zu einem bestimmten Zeitpunkt innerhalb einer Stunde nach dem Löschen aktivieren.
- Alle Lesevorgänge für abgelaufene PITR-Daten schlagen fehl.
Wiederherstellung zu einem bestimmten Zeitpunkt aktivieren
Aktivieren Sie vor der Verwendung der Wiederherstellung zu einem bestimmten Zeitpunkt die Abrechnung für Ihr Google Cloud Projekt. Die PITR-Funktion kann nur für Google Cloud-Projekte mit aktivierter Abrechnung verwendet werden.
So aktivieren Sie die Wiederherstellung zu einem bestimmten Zeitpunkt für Ihre Datenbank:
Console
Rufen Sie in der Google Cloud Console die Seite Datenbanken auf.
Wählen Sie die benötigte Datenbank aus der Liste der Datenbanken aus.
Klicken Sie im Navigationsmenü auf Notfallwiederherstellung.
Klicken Sie auf Bearbeiten , um die Einstellungen zu bearbeiten.
Klicken Sie auf das Kästchen Wiederherstellung zu einem bestimmten Zeitpunkt aktivieren und dann auf Speichern.
Durch das Aktivieren der Wiederherstellung zu einem bestimmten Zeitpunkt fallen Speicherkosten an. Weitere Informationen finden Sie unter Preise.
Wenn Sie die Wiederherstellung zu einem bestimmten Zeitpunkt deaktivieren möchten, entfernen Sie das Häkchen aus dem Kästchen Wiederherstellung zu einem bestimmten Zeitpunkt aktivieren auf der Seite „Notfallwiederherstellung“ in der Google Cloud Console.
gcloud
Aktivieren Sie die Wiederherstellung zu einem bestimmten Zeitpunkt beim Erstellen der Datenbank mit dem gcloud firestore databases create und dem --enable-ptir Befehl so:
gcloud firestore databases create\
--location=LOCATION\
--database=DATABASE_ID\
--edition=enterprise\
--enable-pitr
Ersetzen Sie die Werte so:
LOCATION: Der Standort, an dem Sie Ihre Datenbank erstellen möchten.DATABASE_ID: Auf eine Datenbank-ID festlegen.
Sie können die Wiederherstellung zu einem bestimmten Zeitpunkt mit dem gcloud firestore databases update Befehl so deaktivieren:
gcloud firestore databases update\
--database=DATABASE_ID\
--no-enable-pitr
Ersetzen Sie die Werte so:
DATABASE_ID: Auf die Datenbank-ID oder `'(default)'` festlegen.
Aufbewahrungsdauer und Zeitstempel der ältesten Version abrufen
Console
Rufen Sie in der Google Cloud Console die Seite Datenbanken auf.
Wählen Sie die benötigte Datenbank aus der Liste der Datenbanken aus.
Klicken Sie im Navigationsmenü auf Notfallwiederherstellung.
Notieren Sie sich im Abschnitt Einstellungen die Werte für Aufbewahrungsdauer und Zeitstempel der ältesten Version.
- Aufbewahrungsdauer: Der Zeitraum, in dem Firestore mit MongoDB-Kompatibilität alle Versionen der Daten für die Datenbank beibehält. Der Wert ist eine Stunde, wenn die Wiederherstellung zu einem bestimmten Zeitpunkt deaktiviert ist, und sieben Tage, wenn sie aktiviert ist.
- Zeitstempel der ältesten Version: Der früheste Zeitstempel, zu dem ältere Versionen von Daten im PITR-Fenster gelesen werden können. Dieser Wert wird von Firestore mit MongoDB-Kompatibilität kontinuierlich aktualisiert und ist in dem Moment veraltet, in dem er abgefragt wird. Wenn Sie diesen Wert zur Wiederherstellung von Daten verwenden, müssen Sie die Zeit in dem Moment berücksichtigen, in dem der Wert abgefragt wird, bis zu dem Zeitpunkt, an dem Sie die Wiederherstellung initiieren.
- Wiederherstellung zu einem bestimmten Zeitpunkt: Zeigt
Enabledan, wenn die Wiederherstellung zu einem bestimmten Zeitpunkt aktiviert ist. Wenn die Wiederherstellung zu einem bestimmten Zeitpunkt deaktiviert ist, wirdDisabledangezeigt.
gcloud
Führen Sie den Befehl gcloud firestore databases describe so aus:
gcloud firestore databases describe --database=DATABASE_ID
Ersetzen Sie DATABASE_ID durch die Datenbank-ID oder '(default)'.
Hier ist die Ausgabe:
appEngineIntegrationMode: ENABLED
concurrencyMode: PESSIMISTIC
createTime: '2021-03-24T17:02:35.234Z'
deleteProtectionState: DELETE_PROTECTION_DISABLED
earliestVersionTime: '2023-06-12T16:17:25.222474Z'
etag: IIDayqOevv8CMNTvyNK4uv8C
keyPrefix: s
locationId: nam5
name: projects/PROJECT_ID/databases/DATABASE_ID
pointInTimeRecoveryEnablement: POINT_IN_TIME_RECOVERY_DISABLED
type: FIRESTORE_NATIVE
uid: 5230c382-dcd2-468f-8cb3-2a1acfde2b32
updateTime: '2021-11-17T17:48:22.171180Z'
versionRetentionPeriod: 3600s
Dabei gilt:
earliestVersionTime: Zeitstempel der frühesten gespeicherten PITR-Daten.pointInTimeRecoveryEnablement: ZeigtPOINT_IN_TIME_RECOVERY_ENABLEDan, wenn die Wiederherstellung zu einem bestimmten Zeitpunkt aktiviert ist. Wenn die Wiederherstellung zu einem bestimmten Zeitpunkt deaktiviert ist, wird entwederPOINT_IN_TIME_RECOVERY_DISABLEDangezeigt oder das FeldpointInTimeRecoveryEnablementwird nicht angezeigt.versionRetentionPeriod: Zeitraum, für den PITR-Daten in Millisekunden aufbewahrt werden. Der Wert kann eine Stunde sein, wenn die Wiederherstellung zu einem bestimmten Zeitpunkt deaktiviert ist, oder sieben Tage, wenn sie aktiviert ist.
PITR-Daten lesen
Sie können PITR-Daten mit der Snapshot-Sitzung in verschiedenen MongoDB-Clienttreibern lesen. Legen Sie einen snapshotTimestamp für die Sitzung fest. Im folgenden Beispiel wird der MongoDB-Java-Treiber verwendet. Eine ähnliche Funktion ist in anderen Treibern verfügbar:
Java
var session =
mongoClient.startSession(ClientSessionOptions.builder().snapshot(true).build());
session.setSnapshotTimestamp(new BsonTimestamp(seconds, nanos));
// run a find query with PITR timestamp
collection.find(session, <filter>).toList();
// run an aggregation query pipeline with PITR timestamp
collection.aggregate(session, <aggregation pipeline stages>).toList();
// run distinct command with PITR timestamp
collection.distinct(session, <field>, <return value type class>).toList();
In MongoDB ist BsonTimestamp ein nur MongoDB-interner BSON-Typ mit 64 Bit. Die ersten 32 Bit stellen die Sekunden des Epoch-Zeitstempels dar und die letzten 32 Bit stellen eine ordinale Anzahl von Vorgängen in einem MongoDB-Cluster dar.
In Firestore mit MongoDB-Kompatibilität interpretiert der Snapshot-Zeitstempel, der weiterhin einen BsonTimestamp-Werttyp verwendet, die ersten 32 Bit als Sekunden des Epoch-Zeitstempels, die letzten 32 Bit jedoch als Nanosekunden innerhalb der Sekunde. Beachten Sie, dass nicht alle PITR-Snapshots mit Nanosekunden unterstützt werden. Zeitstempel mit Mikrosekunden in der letzten Stunde sind zulässig, ebenso Zeitstempel mit ganzen Minuten aus den letzten sieben Tagen. Unter Wiederherstellung zu einem bestimmten Zeitpunkt (PITR) – Übersicht finden Sie Informationen zu den unterstützten Zeitstempeln für Lesevorgänge.
Aus einer Datenbank klonen
Sie können eine vorhandene Datenbank zu einem ausgewählten Zeitstempel in eine neue Datenbank klonen:
Die geklonte Datenbank ist eine neue Datenbank, die am selben Standort wie die Quelldatenbank erstellt wird.
Zum Erstellen eines Klons verwendet Firestore Daten für die Wiederherstellung zu einem bestimmten Zeitpunkt (PITR) der Quelldatenbank. Die geklonte Datenbank enthält alle Daten und Indexe.
Standardmäßig wird die geklonte Datenbank auf dieselbe Weise wie die Quelldatenbank verschlüsselt, entweder mit der Standardverschlüsselung von Google oder mit der CMEK-Verschlüsselung. Sie können einen anderen Verschlüsselungstyp angeben oder einen anderen Schlüssel für die CMEK-Verschlüsselung verwenden.
Der Zeitstempel hat eine Granularität von einer Minute und gibt einen Zeitpunkt in der Vergangenheit an, im Zeitraum, der durch das PITR-Fensterdefiniert wird:
- Wenn die Wiederherstellung zu einem bestimmten Zeitpunkt für Ihre Datenbank aktiviert ist, können Sie eine beliebige Minute in den letzten sieben Tagen auswählen (oder weniger, wenn die Wiederherstellung zu einem bestimmten Zeitpunkt vor weniger als sieben Tagen aktiviert wurde).
- Wenn die Wiederherstellung zu einem bestimmten Zeitpunkt nicht aktiviert ist, können Sie eine beliebige Minute in der letzten Stunde auswählen.
- Den frühesten Zeitstempel, den Sie auswählen können, finden Sie in der Beschreibung Ihrer Datenbank.
Console
Rufen Sie in der Google Cloud Console die Seite Datenbanken auf.
Klicken Sie in der Tabellenzeile für die Datenbank, die Sie klonen möchten, auf Weitere Optionen. Klicken Sie auf Klonen. Das Dialogfeld Klon erstellen wird angezeigt.
Geben Sie im Dialogfeld Klon erstellen die Parameter für das Klonen der Datenbank an:
Geben Sie im Feld Klon eine ID zuweisen eine Datenbank-ID für eine neue geklonte Datenbank ein. Diese Datenbank-ID darf nicht mit einer vorhandenen Datenbank verknüpft sein.
Wählen Sie im Feld Klonen ab einen Zeitpunkt aus, der für das Klonen verwendet werden soll. Die ausgewählte Zeit entspricht einem PITR-Zeitstempel mit einer Granularität von einer Minute.
Klicken Sie auf Klon erstellen.
gcloud
Verwenden Sie den
gcloud firestore databases clone
Befehl, um eine Datenbank zu klonen:
gcloud firestore databases clone \
--source-database='SOURCE_DATABASE' \
--snapshot-time='PITR_TIMESTAMP' \
--destination-database='DESTINATION_DATABASE_ID'
Ersetzen Sie Folgendes:
SOURCE_DATABASE: Der Datenbankname einer vorhandenen Datenbank, die Sie klonen möchten. Der Name hat das Format
projects/PROJECT_ID/databases/SOURCE_DATABASE_ID.PITR_TIMESTAMP: Ein PITR-Zeitstempel im RFC 3339-Format mit einer Granularität von einer Minute. Beispiel:
2025-06-01T10:20:00.00Zoder2025-06-01T10:30:00.00-07:00.DESTINATION_DATABASE_ID: Eine Datenbank-ID für eine neue geklonte Datenbank. Diese Datenbank-ID darf nicht mit einer vorhandenen Datenbank verknüpft sein.
Beispiel:
gcloud firestore databases clone \
--source-database='projects/example-project/databases/(default)' \
--snapshot-time='2025-06-01T10:20:00.00Z' \
--destination-database='example-dest-db'
Wenn Sie beim Klonen einer Datenbank einige Tags binden möchten, verwenden Sie den vorherigen Befehl mit dem Flag --tags. Dies ist eine optionale Liste von Tags in Form von Schlüssel/Wert-Paaren, die gebunden werden sollen.
Beispiel:
gcloud firestore databases clone \
--source-database='projects/example-project/databases/(default)' \
--snapshot-time='2025-06-01T10:20:00.00Z' \
--destination-database='example-dest-db' \
--tags=key1=value1,key2=value2
Standardmäßig hat die geklonte Datenbank dieselbe Verschlüsselungskonfiguration wie die Quelldatenbank. Verwenden Sie das Argument --encryption-type, um die Verschlüsselungskonfiguration zu ändern:
- (Standard)
use-source-encryption: Verwenden Sie dieselbe Verschlüsselungskonfiguration wie die Quelldatenbank. google-default-encryption: Verwenden Sie die Standardverschlüsselung von Google.customer-managed-encryption: Verwenden Sie die CMEK-Verschlüsselung. Geben Sie eine Schlüssel-ID im--kms-key-nameArgument an.
Im folgenden Beispiel wird gezeigt, wie die CMEK-Verschlüsselung für die geklonte Datenbank konfiguriert wird:
gcloud firestore databases clone \
--source-database='projects/example-project/databases/(default)' \
--snapshot-time='2025-06-01T10:20:00.00Z' \
--destination-database='example-dest-db' \
--encryption-type='customer-managed-encryption' \
--kms-key-name='projects/example-project/locations/us-central1/keyRings/example-key-ring/cryptoKeys/example-key'
Firebase CLI
Verwenden Sie den Befehl firebase firestore:databases:clone, um eine Datenbank zu klonen:
firebase firestore:databases:clone \
'SOURCE_DATABASE' \
'DESTINATION_DATABASE' \
--snapshot-time 'PITR_TIMESTAMP'
Ersetzen Sie Folgendes:
SOURCE_DATABASE: Der Datenbankname einer vorhandenen Datenbank, die Sie klonen möchten. Der Name hat das Format
projects/PROJECT_ID/databases/SOURCE_DATABASE_ID.DESTINATION_DATABASE: Ein Datenbankname für eine neue geklonte Datenbank. Der Name hat das Format
projects/PROJECT_ID/databases/DESTINATION_DATABASE_ID. Dieser Datenbankname darf nicht mit einer vorhandenen Datenbank verknüpft sein.PITR_TIMESTAMP: Ein PITR-Zeitstempel im RFC 3339-Format mit einer Granularität von einer Minute. Beispiel:
2025-06-01T10:20:00.00Zoder2025-06-01T10:30:00.00-07:00. Wenn nichts angegeben ist, wird der ausgewählte Snapshot auf die aktuelle Zeit abgerundet.
Standardmäßig hat die geklonte Datenbank dieselbe Verschlüsselungskonfiguration wie die Quelldatenbank. Verwenden Sie das Argument --encryption-type, um die Verschlüsselungskonfiguration zu ändern:
- (Standard)
USE_SOURCE_ENCRYPTION: Verwenden Sie dieselbe Verschlüsselungskonfiguration wie die Quelldatenbank. GOOGLE_DEFAULT_ENCRYPTION: Verwenden Sie die Standardverschlüsselung von Google.CUSTOMER_MANAGED_ENCRYPTION: Verwenden Sie die CMEK-Verschlüsselung. Geben Sie eine Schlüssel-ID im--kms-key-nameArgument an.
Im folgenden Beispiel wird gezeigt, wie die CMEK-Verschlüsselung für die geklonte Datenbank konfiguriert wird:
firebase firestore:databases:clone \
'projects/example-project/databases/(default)' \
'projects/example-project/databases/example-dest-db' \
--snapshot-time 'PITR_TIMESTAMP' \
--encryption-type CUSTOMER_MANAGED_ENCRYPTION
Aus PITR-Daten exportieren und importieren
Sie können Ihre Datenbank mit dem gcloud firestore export Befehl aus PITR-Daten in Cloud Storage exportieren. Sie können PITR-Daten exportieren, deren Zeitstempel ein Zeitstempel mit einer ganzen Minute innerhalb der letzten sieben Tage ist, aber nicht früher als earliestVersionTime. Wenn zum angegebenen Zeitstempel keine Daten mehr vorhanden sind, schlägt der Exportvorgang fehl.
Der PITR-Exportvorgang unterstützt alle Filter, einschließlich des Exports aller Dokumente und des Exports bestimmter Sammlungen.
Exportieren Sie die Datenbank und geben Sie für den Parameter
snapshot-timeden ausgewählten Wiederherstellungszeitstempel an.gcloud
Führen Sie den folgenden Befehl aus, um die Datenbank in Ihren Bucket zu exportieren.
gcloud firestore export gs://BUCKET_NAME_PATH \ --snapshot-time=PITR_TIMESTAMP \ --collection-ids=COLLECTION_IDSErsetzen Sie Folgendes:
BUCKET_NAME_PATH: Ein gültiger Cloud Storage-Bucket mit einem optionalen Pfadpräfix, in dem Exportdateien gespeichert werden.PITR_TIMESTAMP: Ein PITR-Zeitstempel mit einer Granularität von einer Minute, z. B.2023-05-26T10:20:00.00Zoder2023-10-19T10:30:00.00-07:00.COLLECTION_IDS: Eine Liste von Sammlungs-IDs oder Sammlungsgruppen-IDs, z. B.'specific-collection-group1','specific-collection-group2'.
Beachten Sie die folgenden Punkte, bevor Sie PITR-Daten exportieren:
- Geben Sie den Zeitstempel im RFC 3339
Format an.
Beispiel:
2023-05-26T10:20:00.00Zoder2023-10-19T10:30:00.00-07:00. - Achten Sie darauf, dass der von Ihnen angegebene Zeitstempel ein Zeitstempel mit einer ganzen Minute innerhalb der letzten sieben Tage ist, aber nicht früher als
earliestVersionTime. Wenn zum angegebenen Zeitstempel keine Daten mehr vorhanden sind, wird ein Fehler generiert. Der Zeitstempel muss eine ganze Minute sein, auch wenn die angegebene Zeit innerhalb der letzten Stunde liegt. - Für einen fehlgeschlagenen PITR-Export werden keine Gebühren erhoben.
In eine Datenbank importieren.
Folgen Sie der Anleitung unter Alle Dokumente importieren, um Ihre exportierte Datenbank zu importieren. Wenn ein Dokument bereits in Ihrer Datenbank vorhanden ist, wird es überschrieben.