Mit Spanner Omni können Sie Vollsicherungen von Datenbanken nach Bedarf oder mithilfe eines Sicherungszeitplans erstellen. In Sicherungen werden die gesamten Daten einer Datenbank gespeichert. Sie können die Sicherungen wiederherstellen, wenn Operator- oder Anwendungsfehler zu einer logischen Datenbeschädigung führen.
Spanner Omni-Sicherung – Übersicht
Sicherungen sind hochverfügbar und können bis zu einem Jahr ab dem Erstellungszeitpunkt aufbewahrt werden. Jeder Sicherung ist ein createTime und ein versionTime zugeordnet. createTime ist der Zeitstempel, zu dem Spanner Omni mit dem Erstellen der Sicherung beginnt. versionTime ist der Zeitstempel, der angibt, wann die Sicherung den Datenbankinhalt erfasst. Die Sicherung enthält eine konsistente Ansicht der Datenbank zum Zeitpunkt versionTime.
Bei On-Demand-Sicherungen sind createTime und versionTime standardmäßig identisch. Bei Bedarf können Sie beim Erstellen einer On-Demand-Sicherung eine ältere versionTime angeben, sofern diese innerhalb der Aufbewahrungsdauer der Datenbankversion liegt.
Bei geplanten Sicherungen ist versionTime die Zeit, die Sie beim Erstellen des Sicherungszeitplans auswählen. Spanner Omni beginnt innerhalb von vier Stunden nach dem versionTime mit der Erstellung der Sicherung. Die createTime fällt also in dieses vierstündige Zeitfenster. Dies unterscheidet sich von On-Demand-Sicherungen, bei denen Spanner Omni mit der Erstellung der Sicherung beginnt, sobald die Anfrage eingeht.
Angenommen, Sie erstellen einen Sicherungszeitplan mit der Häufigkeit 0 7 * * *
UTC (täglich um 07:00 Uhr UTC). Das bedeutet, dass für jede Sicherung die versionTime 7:00 Uhr UTC und die createTime ein Zeitstempel innerhalb des vierstündigen Zeitfensters zwischen 7:00 Uhr UTC und 11:00 Uhr UTC ist.
Spanner Omni-Sicherungen können nur in Spanner Omni-Bereitstellungen wiederhergestellt werden. Sie können eine verwaltete Cloud Spanner-Sicherung nicht in Cloud Spanner Omni wiederherstellen und eine Cloud Spanner Omni-Sicherung nicht in verwaltetem Cloud Spanner wiederherstellen. Wenn Sie Daten zwischen Spanner und Spanner Omni übertragen möchten, verwenden Sie Änderungsstreams oder exportieren und importieren Sie Avro-Dateien. Weitere Informationen finden Sie unter Daten von Spanner nach Spanner Omni replizieren und Daten importieren und exportieren.
Wichtige Features
Spanner Omni-Sicherungen bieten Datenkonsistenz, robuste externe Replikation und automatischen Ablauf.
Datenkonsistenz: Sicherungen einer Spanner Omni-Datenbank sind zum
versionTimeder Sicherung transaktional und extern konsistent.Replikation: Sicherungsdateien werden in einem externen Speichersystem außerhalb der Spanner Omni-Bereitstellung gespeichert.
Automatischer Ablauf: Alle Sicherungen haben ein benutzerdefiniertes Ablaufdatum, das bestimmt, wann sie gelöscht werden. Spanner Omni löscht abgelaufene Sicherungen asynchron. Daher kann es zu einer Verzögerung zwischen dem Ablauf einer Sicherung und dem tatsächlichen Löschen kommen.
Externer Speicher
Externer Speicher ist ein Remotespeicher, der sich außerhalb der Spanner Omni-Bereitstellung befindet. Sie können Amazon Simple Storage Service (Amazon S3), Cloud Storage oder einen beliebigen Amazon S3-kompatiblen Speicher als externen Speicher konfigurieren. Spanner Omni speichert die Sicherungsdateien in diesem externen Speicher.
Verwaltung des externen Speichers
Verwalten Sie den externen Speicher, indem Sie Speicherorte für Ihre Sicherungen erstellen, löschen und auflisten.
Externen Speicher erstellen
Führen Sie den folgenden Befehl aus, um einen externen Amazon S3-Speicher zu erstellen:
spanner external-storages create EXTERNAL_STORAGE_ID \
--s3-bucket-name=BUCKET_NAME \
--s3-region=AWS_REGION \
--s3-assume-role-arn=ASSUME_ROLE_ARN
Externen Cloud Storage-Speicher erstellen
Bevor Sie den externen Cloud Storage-Speicher konfigurieren, benötigen Sie Folgendes:
- Einen Cloud Storage-Ziel-Bucket in Ihrem Google Cloud -Projekt.
- Ein Google Cloud -Dienstkonto, dem die IAM-Rolle (Identity and Access Management) „Storage-Objekt-Administrator“ (
roles/storage.objectAdmin) für den Ziel-Bucket zugewiesen wurde. Weitere Informationen finden Sie unter IAM-Rollen für Cloud Storage. - In Ihrer Spanner Omni-Umgebung konfigurierte Authentifizierungsdaten, z. B. eine Dienstkonto-Schlüsseldatei oder über die Workload Identity-Föderation ausgetauschte Anmeldedaten. Weitere Informationen zur Authentifizierung aus externen Umgebungen finden Sie unter Workload Identity-Föderation mit AWS-VMs konfigurieren und Workload Identity-Föderation mit Kubernetes konfigurieren.
Führen Sie den folgenden Befehl aus, um Ihren Cloud Storage-Bucket als externen Speicher zu registrieren:
spanner external-storages create EXTERNAL_STORAGE_ID \
--gcs-bucket-name=BUCKET_NAME
Ersetzen Sie Folgendes:
EXTERNAL_STORAGE_ID: eine eindeutige Kennung für die externe Speicherkonfiguration, z. B.gcp-gcs-backup-target.BUCKET_NAME: der Name Ihres Cloud Storage-Bucket.
Amazon S3-kompatiblen externen Speicher erstellen
Führen Sie den folgenden Befehl aus, um einen Amazon S3-kompatiblen externen Speicher zu erstellen:
spanner external-storages create EXTERNAL_STORAGE_ID \
--s3-compatible-bucket-name=BUCKET_NAME \
--s3-compatible-endpoint=ENDPOINT \
--s3-compatible-credential-file-path=FILE
Externen Speicher löschen
Wenn Sie einen externen Speicher löschen möchten, dürfen keine vorhandenen oder laufenden Sicherungen vorhanden sein. Führen Sie dann den folgenden Befehl aus:
spanner external-storages delete EXTERNAL_STORAGE_ID
Externen Speicher beschreiben
Führen Sie den folgenden Befehl aus, um Informationen zum externen Speicher abzurufen:
spanner external-storages describe EXTERNAL_STORAGE_ID
Externen Speicher auflisten
Führen Sie den folgenden Befehl aus, um eine Liste der externen Speicher abzurufen:
spanner external-storages list
Sicherungsdeskriptor
Ein Sicherungsdeskriptor stellt die Metadaten und Sicherungsdateipfade abgeschlossener Sicherungen dar, die in einem externen Speicher gespeichert sind.
spanner external-storages backup-descriptors list EXTERNAL_STORAGE_ID
Sicherungsinformationen
Wenn Sie eine Sicherung erstellen, werden die Sicherungsmetadaten in Spanner Omni gespeichert und die Sicherungsdateien befinden sich im externen Speicher.
Eine Sicherung enthält die folgenden Informationen aus der Datenbank zum versionTime der Sicherung:
Eine Vollsicherung enthält alle Daten.
Schemainformationen, einschließlich Tabellennamen, Feldern, Datentypen, sekundären Indexen, Änderungsstreams und den Beziehungen zwischen diesen Entitäten.
Alle Datenbankoptionen, die mit dem Befehl
ALTER DATABASE SET OPTIONSfestgelegt werden.
Eine Spanner Omni-Sicherung enthält die folgenden Informationen nicht:
Alle Änderungen an den Daten oder am Schema nach dem
versionTime.abgelehnt wurden.
Änderungsstream-Datensätze. Obwohl das Änderungsstream-Schema gespeichert wird, sollten die Änderungsstream-Daten ungefähr zur gleichen Zeit wie die darin beschriebenen Änderungen gestreamt und genutzt werden.
Um die externe Konsistenz der Sicherung zu gewährleisten, pinnt Spanner Omni den Inhalt der Datenbank bei versionTime an. Dadurch wird verhindert, dass das Speicherbereinigungssystem die relevanten Datenwerte für die Dauer des Sicherungsvorgangs entfernt.
Sicherungsverwaltung
Zum Erstellen von Sicherungen benötigen Sie die folgenden Berechtigungen. Bitten Sie Ihren Administrator, Ihnen die folgenden IAM-Rollen für ein Deployment zuzuweisen:
| Aktion | IAM-Rolle |
|---|---|
| Sicherungen erstellen, ansehen, aktualisieren und löschen | roles/spanner.backupAdmin |
| Sicherungen erstellen und ansehen | roles/spanner.backupWriter |
Sicherung erstellen
On-Demand-Sicherung erstellen
spanner backups create BACKUP_NAME \
--database=DATABASE_ID \
--retention-period=RETENTION_PERIOD \
--async
Sicherung löschen
Löschen Sie die Sicherungsmetadaten und -dateien.
spanner backups delete BACKUP_NAME
Sicherung beschreiben
Informationen zu einer Sicherung abrufen.
spanner backups describe BACKUP_NAME
Sicherungen auflisten
Listen Sie vorhandene Spanner Omni-Sicherungen in der Bereitstellung auf.
spanner backups list
Ablaufzeit der Sicherung aktualisieren
Ablaufdatum einer Sicherung aktualisieren.
spanner backups update-metadata BACKUP_NAME \
--expiration-date=EXPIRATION_DATE
Sicherung importieren
Wenn Sie eine Datenbank in einer anderen Spanner Omni-Bereitstellung wiederherstellen möchten, z. B. zwischen Spanner Omni-Bereitstellungen oder wenn Sie die ursprüngliche Bereitstellung löschen, können Sie Sicherungen importieren, sofern die Sicherungsdateien im externen Speicher verbleiben:
Erstellen Sie in der neuen Bereitstellung einen externen Speicher, der denselben Amazon S3- oder Cloud Storage-Bucket wie die ursprüngliche Bereitstellung verwendet, z. B.:
spanner external-storages create EXTERNAL_STORAGE_ID \ --gcs-bucket-name=BUCKET_NAMEListen Sie die Sicherungsdeskriptoren im externen Speicher auf:
spanner external-storages backup-descriptors list EXTERNAL_STORAGE_IDImportieren Sie die Sicherungsmetadaten in das neue Deployment:
spanner backups import BACKUP_NAME \ --external-storage=EXTERNAL_STORAGE_ID \ --backup-descriptor=BACKUP_DESCRIPTOR \ --retention-period=RETENTION_PERIODErsetzen Sie Folgendes:
BACKUP_NAME: ein Name für die importierte Sicherung.EXTERNAL_STORAGE_ID: die ID Ihrer externen Speicherkonfiguration.BACKUP_DESCRIPTOR: die im vorherigen Schritt zurückgegebene Deskriptor-ID.RETENTION_PERIOD: Die Dauer, für die die Sicherung aufbewahrt werden soll, z. B.24hoder30d.
Nachdem Sie die Sicherungsmetadaten importiert haben, können Sie die Sicherung in einer neuen Datenbank im Deployment wiederherstellen. Weitere Informationen finden Sie unter Spanner Omni-Sicherung wiederherstellen.
Sicherungszeitpläne
Mit Spanner Omni können Sie Vollsicherungen für Datenbanken planen. Sie können im Zeitplan festlegen, wie oft Spanner Omni Sicherungen erstellt.
Bei einem Zeitplan für Vollsicherungen werden alle 12 Stunden oder mehr Sicherungen erstellt. Sicherungen werden innerhalb eines 30-minütigen Zeitfensters ab dem geplanten Zeitpunkt gestartet. Pro Datenbank können maximal vier Sicherungszeitpläne erstellt werden.
Sicherungszeitpläne verwalten
Zum Erstellen und Verwalten von Sicherungszeitplänen benötigen Sie die folgenden Berechtigungen. Bitten Sie Ihren Administrator, Ihnen die folgenden IAM-Rollen für das Deployment zuzuweisen:
Sicherungszeitpläne erstellen, ansehen, aktualisieren und löschen:
roles/spanner.backupAdminSicherungszeitpläne erstellen und ansehen:
roles/spanner.backupWriter
Sicherungszeitplan erstellen
Erstellen Sie einen neuen Sicherungszeitplan für die Spanner Omni-Datenbank.
spanner backup-schedules create SCHEDULE_ID \
--database=DATABASE_ID \
--retention-duration=RETENTION_DURATION \
--cron="CRONTAB_EXPRESSION"
Sicherungszeitplan abrufen
Informationen zu einem bestimmten Sicherungszeitplan abrufen.
spanner backup-schedules describe SCHEDULE_ID --database=DATABASE_ID
Sicherungszeitpläne auflisten
Alle Sicherungszeitpläne für eine bestimmte Datenbank auflisten.
spanner backup-schedules list --database=DATABASE_ID
Sicherungszeitplan aktualisieren
Aktualisieren Sie die Attribute eines vorhandenen Sicherungszeitplans.
spanner backup-schedules update SCHEDULE_ID \
--database=DATABASE_ID \
--retention-duration=RETENTION_DURATION \
--cron="CRONTAB_EXPRESSION"
Sicherungszeitplan löschen
Löschen Sie einen Sicherungszeitplan aus der Datenbank.
spanner backup-schedules delete SCHEDULE_ID --database=DATABASE_ID
IAM-Zugriffssteuerungsrichtlinie festlegen
Legen Sie die IAM-Zugriffssteuerungsrichtlinie für einen Sicherungszeitplan fest.
spanner backup-schedules set-iam-policy SCHEDULE_ID \
--database=DATABASE_ID \
policy.json
IAM-Richtlinie zur Zugriffssteuerung abrufen
Rufen Sie die IAM-Zugriffssteuerungsrichtlinie für einen Sicherungszeitplan ab.
spanner backup-schedules get-iam-policy SCHEDULE_ID --database=DATABASE_ID
Sicherungsspeicher mit Datenbankspeicher vergleichen
Die Speichergröße einer Sicherung kann kleiner oder größer als die Speichergröße der Quelldatenbank zum Zeitpunkt der Erstellung sein.
Der Speicher einer Sicherung kann kleiner sein als der Speicher der Datenbank, da eine Sicherung nur eine Version der Daten enthält, während die Live-Datenbank aufgrund laufender Vorgänge mehrere Versionen enthalten kann. Unterschiede im Datenformat und in der Komprimierung können ebenfalls zu einer kleineren Sicherungsgröße führen.
Umgekehrt kann der Speicher einer Sicherung größer sein als der Speicher der Datenbank, je nach Status der Datenbank und dem Zeitpunkt, zu dem Sie die Sicherung erstellen.
Aus ähnlichen Gründen kann der Speicher einer Datenbank, die aus einer Sicherung wiederhergestellt wird, größer sein als der Speicher der Datenbank. Dies kann passieren, wenn nach dem Erstellen der Sicherung eine große Datenmenge gelöscht und komprimiert wurde. Daher hängt die Größe der Sicherung davon ab, wann die Sicherung erstellt wurde und welche nachfolgenden Vorgänge für die Datenbank ausgeführt wurden.
Es gibt keine Formel, mit der sich die Größe einer Sicherung im Verhältnis zur Live-Datenbank vorhersagen lässt. Bei einer Datenbank mit einer hohen Rate an Schreibvorgängen (einer Hot-Datenbank) ist die Sicherung wahrscheinlich kleiner als die Live-Datenbank. In einigen Situationen kann die Sicherung jedoch größer sein.