Auf dieser Seite wird gezeigt, wie Sie mit der Wiederherstellung zu einem bestimmten Zeitpunkt (PITR) Ihre primäre Cloud SQL-Instanz wiederherstellen.
Weitere Informationen zur PITR finden Sie unter Wiederherstellung zu einem bestimmten Zeitpunkt (PITR).
Standardmäßig ist PITR aktiviert, wenn Sie eine Cloud SQL Enterprise Plus-Instanz erstellen, unabhängig davon, ob Sie die Instanz mit der Google Cloud Console, der gcloud CLI, Terraform oder Cloud SQL Admin API verwenden.
Wenn Sie eine Cloud SQL Enterprise-Instanz in der Google Cloud Console erstellen, ist PITR standardmäßig aktiviert. Wenn Sie die Instanz jedoch mit der gcloud CLI, Terraform oder der Cloud SQL Admin API erstellen, müssen Sie PITR manuell aktivieren.
Logspeicher für PITR
Cloud SQL verwendet für die PITR die WAL-Archivierung (Write-Ahead Logging).Am 9. Januar 2023 haben wir die Speicherung von Write-Ahead-Logs für die Wiederherstellung zu einem bestimmten Zeitpunkt in Cloud Storage eingeführt. Seit der Einführung gelten die folgenden Bedingungen:
- Alle Instanzen der Cloud SQL Enterprise Plus-Version speichern ihre Write-Ahead-Logs in Cloud Storage. Nur Instanzen der Cloud SQL Enterprise Plus-Version, die Sie von der Cloud SQL Enterprise-Version aktualisiert und PITR vor dem 9. Januar 2023 aktiviert hatten, speichern ihre Logs weiterhin auf dem Laufwerk.
- Cloud SQL Enterprise-Instanzen, die vor dem 9. Januar 2023 mit aktivierter PITR erstellt wurden, speichern ihre Logs weiterhin auf dem Laufwerk.
- Wenn Sie nach dem 15. August 2024 eine Cloud SQL Enterprise-Instanz aktualisieren, in der Transaktionslogs für PITR auf dem Laufwerk auf Cloud SQL Enterprise Plus gespeichert werden, wechselt der Upgradeprozess den Speicherort der für PITR verwendeten Transaktionslogs auf Cloud Storage. Weitere Informationen finden Sie unter Instanz mithilfe eines direkten Upgrades auf Cloud SQL Cloud SQL Enterprise Plus aktualisieren.
- Alle Cloud SQL Enterprise-Instanzen, die Sie nach dem 9. Januar 2023 mit aktivierter PITR erstellen, speichern Logs in Cloud Storage.
Bei Instanzen, die Write-Ahead-Logs nur auf dem Laufwerk speichern, können Sie den Speicherort der Transaktionslogs, die für PITR verwendet werden, mit der gcloud CLI oder der Cloud SQL Admin API von Laufwerk zu Cloud Storage wechseln, ohne dass es zu einer Ausfallzeit kommt. Weitere Informationen finden Sie unter Speicherort für Transaktionsprotokolle zu Cloud Storage wechseln.
Aufbewahrungsdauer für Protokolle
Wenn Sie prüfen möchten, ob eine Instanz die für PITR verwendeten Protokolle in Cloud Storage speichert, verwenden Sie Speicherort von Transaktionslogs prüfen, die für PITR verwendet werden.
Nachdem Sie einen PostgreSQL-Client wie psql
oder pgAdmin
verwendet haben, um eine Verbindung zur Datenbank der Instanz herzustellen, führen Sie den folgenden Befehl aus: show archive_command
. Wenn Write-Ahead-Logs in Cloud Storage archiviert sind, wird -async_archive -remote_storage
angezeigt.
Bei allen anderen Instanzen, für die die Wiederherstellung zu einem bestimmten Zeitpunkt aktiviert ist, werden die zugehörigen Logs weiterhin auf dem Laufwerk gespeichert.
Wenn die Logs in Cloud Storage gespeichert sind, lädt Cloud SQL Logs mindestens alle fünf Minuten hoch. Wenn eine Cloud SQL-Instanz verfügbar ist, kann die Instanz gemäß dem neuesten Zeitpunkt wiederhergestellt werden. Wenn jedoch die Instanz nicht verfügbar ist, beträgt das Recovery Point Objective in der Regel maximal fünf Minuten. Verwenden Sie die gcloud CLI oder die Admin API, um nach dem neuesten Zeitpunkt zu suchen, gemäß dem Sie die Instanz wiederherstellen können, und führen Sie die Wiederherstellung bis zu diesem Zeitpunkt durch.
Die Write-Ahead-Logs, die mit der PITR verwendet werden, werden automatisch mit der zugehörigen automatischen Sicherung gelöscht. Dies geschieht in der Regel, wenn der für
transactionLogRetentionDays
festgelegte Wert erreicht ist. Dies ist die Anzahl der Tage an Transaktionslogs, die Cloud SQL für die PITR aufbewahrt. Bei Cloud SQL Enterprise Plus kann die Anzahl der Tage für aufbewahrte Transaktionslogs zwischen 1 und 35 festgelegt werden. Für die Cloud SQL Enterprise-Version kann der Wert zwischen 1 und 7 festgelegt werden.
Wenn Sie eine Sicherung auf einer Cloud SQL-Instanz wiederherstellen, bevor Sie die Point-in-Time-Wiederherstellung aktivieren, verlieren Sie die Write-Ahead-Logs, die die Wiederherstellung zu einem bestimmten Zeitpunkt ermöglichen.
Bei vom Kunden verwalteten Verschlüsselungs-Schlüsselinstanzen (Customer-Managed Encryption Key, CMEK) werden Write-Ahead-Logs mit der neuesten Version des CMEK verschlüsselt. Zum Wiederherstellen müssen alle Versionen des Schlüssels verfügbar sein, die für die Anzahl der Tage konfiguriert sind, die Sie für den Parameter retained-transaction-log-days
konfiguriert haben.
Bei Instanzen mit Write-Ahead-Logs in Cloud Storage werden die Logs in derselben Region wie die primäre Instanz gespeichert. Für diesen Logspeicher (bis zu 35 Tage für Cloud SQL Enterprise Plus und sieben Tage für Cloud SQL Enterprise, die maximale Länge für die Wiederherstellung zu einem bestimmten Zeitpunkt) fallen keine zusätzlichen Kosten pro Instanz an.
Protokolle und Laufwerksnutzung
Wenn für Ihre Instanz die Wiederherstellung zu einem bestimmten Zeitpunkt aktiviert ist und die Größe Ihrer Write-Ahead-Logs auf dem Laufwerk ein Problem für die Instanz verursacht:
Mit der gcloud CLI oder der Cloud SQL Admin API können Sie den Speicherort der für PITR verwendeten Logs ohne Ausfallzeit vom Laufwerk zu Cloud Storage wechseln.
Sie können Ihre Instanz auf die Cloud SQL Enterprise Plus-Version umstellen.
Sie können die Speichergröße der Instanz erhöhen. Die Größe des Write-Ahead-Logs nimmt aber bei der Laufwerknutzung nur temporär zu.
Wir empfehlen die Aktivierung der automatischen Speichererweiterung, um unerwartete Speicherplatzprobleme zu vermeiden. Diese Empfehlung gilt nur, wenn für Ihre Instanz PITR aktiviert ist und Ihre Logs auf dem Laufwerk gespeichert sind.
Sie können die PITR deaktivieren, wenn Sie Protokolle löschen und Speicherplatz wiederherstellen möchten. Durch das Verringern der verwendeten Write-Ahead-Logs reduziert sich die Größe des für die Instanz bereitgestellten Laufwerks nicht.
Die Logs werden einmal täglich, nicht kontinuierlich gelöscht. Das Festlegen der Logaufbewahrung auf zwei Tage bedeutet, dass mindestens zwei Tage an Logs und höchstens Logs von drei Tagen aufbewahrt werden. Wir empfehlen, die Anzahl der Sicherungen auf eine mehr als die Anzahl von Tagen für die Logaufbewahrung festzulegen.
Wenn Sie beispielsweise
7
für den Wert des ParameterstransactionLogRetentionDays
angeben, legen Sie für den ParameterbackupRetentionSettings
die Anzahl derretainedBackups
auf8
fest.
PITR aktivieren
Wenn Sie in der Google Cloud Console eine neue Instanz erstellen, sind die Optionen Automatische Sicherungen und Wiederherstellung zu einem bestimmten Zeitpunkt aktivieren automatisch aktiviert.Mit dem folgenden Verfahren wird PITR auf einer vorhandenen primären Instanz aktiviert.
Console
-
Wechseln Sie in der Google Cloud Console zur Seite Cloud SQL-Instanzen.
- Rufen Sie das Dreipunkt-Menü der Instanz auf, für die Sie die Wiederherstellung zu einem bestimmten Zeitpunkt aktivieren möchten, und klicken Sie auf Bearbeiten.
- Maximieren Sie unter Instanz anpassen den Abschnitt Datenschutz.
- Klicken Sie auf das Kästchen Wiederherstellung zu einem bestimmten Zeitpunkt aktivieren.
- Geben Sie im Feld Tage für Protokolle die Anzahl der Tage ein, für die Protokolle aufbewahrt werden sollen. Geben Sie dazu eine Zahl zwischen 1 und 35 für die Cloud SQL Enterprise Plus-Version oder zwischen 1 und 7 für die Cloud SQL Enterprise-Version ein.
- Klicken Sie auf Speichern.
gcloud
- Rufen Sie die Instanzübersicht auf:
gcloud sql instances describe INSTANCE_NAME
- Wenn im Abschnitt
backupConfiguration
enabled: false
angezeigt wird, aktivieren Sie geplante Sicherungen:gcloud sql instances patch INSTANCE_NAME \ --backup-start-time=HH:MM
Dabei geben Sie den Parameter
backup-start-time
im 24-Stunden-Zeitformat und in der Zeitzone UTC±00 an. - PITR aktivieren:
gcloud sql instances patch INSTANCE_NAME \ --enable-point-in-time-recovery
Wenn Sie die Wiederherstellung zu einem bestimmten Zeitpunkt auf einer primären Instanz aktivieren, können Sie auch die Anzahl der Tage konfigurieren, für die Sie Transaktionslogs aufbewahren möchten. Fügen Sie dazu den folgenden Parameter hinzu:
--retained-transaction-log-days=RETAINED_TRANSACTION_LOG_DAYS
- Bestätigen Sie die Änderung:
gcloud sql instances describe INSTANCE_NAME
Im Abschnitt
backupConfiguration
wirdpointInTimeRecoveryEnabled: true
angezeigt, ob die Änderung erfolgreich war.
Terraform
Verwenden Sie eine Terraform-Ressource, um die Wiederherstellung zu einem bestimmten Zeitpunkt zu aktivieren.
Änderungen anwenden
Führen Sie die Schritte in den folgenden Abschnitten aus, um Ihre Terraform-Konfiguration auf ein Google Cloud-Projekt anzuwenden.
Cloud Shell vorbereiten
- Rufen Sie Cloud Shell auf.
-
Legen Sie das Google Cloud-Standardprojekt fest, auf das Sie Ihre Terraform-Konfigurationen anwenden möchten.
Sie müssen diesen Befehl nur einmal pro Projekt und in jedem beliebigen Verzeichnis ausführen.
export GOOGLE_CLOUD_PROJECT=PROJECT_ID
Umgebungsvariablen werden überschrieben, wenn Sie in der Terraform-Konfigurationsdatei explizite Werte festlegen.
Verzeichnis vorbereiten
Jede Terraform-Konfigurationsdatei muss ein eigenes Verzeichnis haben (auch als Stammmodul bezeichnet).
-
Erstellen Sie in Cloud Shell ein Verzeichnis und eine neue Datei in diesem Verzeichnis. Der Dateiname muss die Erweiterung
.tf
haben, z. B.main.tf
. In dieser Anleitung wird die Datei alsmain.tf
bezeichnet.mkdir DIRECTORY && cd DIRECTORY && touch main.tf
-
Wenn Sie einer Anleitung folgen, können Sie den Beispielcode in jedem Abschnitt oder Schritt kopieren.
Kopieren Sie den Beispielcode in das neu erstellte
main.tf
.Kopieren Sie optional den Code aus GitHub. Dies wird empfohlen, wenn das Terraform-Snippet Teil einer End-to-End-Lösung ist.
- Prüfen und ändern Sie die Beispielparameter, die auf Ihre Umgebung angewendet werden sollen.
- Speichern Sie die Änderungen.
-
Initialisieren Sie Terraform. Dies ist nur einmal für jedes Verzeichnis erforderlich.
terraform init
Fügen Sie optional die Option
-upgrade
ein, um die neueste Google-Anbieterversion zu verwenden:terraform init -upgrade
Änderungen anwenden
-
Prüfen Sie die Konfiguration und prüfen Sie, ob die Ressourcen, die Terraform erstellen oder aktualisieren wird, Ihren Erwartungen entsprechen:
terraform plan
Korrigieren Sie die Konfiguration nach Bedarf.
-
Wenden Sie die Terraform-Konfiguration an. Führen Sie dazu den folgenden Befehl aus und geben Sie
yes
an der Eingabeaufforderung ein:terraform apply
Warten Sie, bis Terraform die Meldung „Apply complete“ anzeigt.
- Öffnen Sie Ihr Google Cloud-Projekt, um die Ergebnisse aufzurufen. Rufen Sie in der Google Cloud Console Ihre Ressourcen in der Benutzeroberfläche auf, um sicherzustellen, dass Terraform sie erstellt oder aktualisiert hat.
Änderungen löschen
So löschen Sie das Projekt:
- Um den Löschschutz zu deaktivieren, setzen Sie in der Terraform-Konfigurationsdatei das Argument
deletion_protection
auffalse
.deletion_protection = "false"
- Wenden Sie die aktualisierte Terraform-Konfiguration an. Führen Sie dazu den folgenden Befehl aus und geben Sie
yes
an der Eingabeaufforderung ein:terraform apply
-
Entfernen Sie Ressourcen, die zuvor mit Ihrer Terraform-Konfiguration angewendet wurden, indem Sie den folgenden Befehl ausführen und
yes
an der Eingabeaufforderung eingeben:terraform destroy
REST Version 1
Ersetzen Sie diese Werte in den folgenden Anfragedaten:
- PROJECT_ID: die ID oder Projektnummer des Google Cloud-Projekts, das die Instanz enthält
- INSTANCE_NAME: der Name der primären Instanz oder der Lesereplikatinstanz, die Sie für Hochverfügbarkeit konfigurieren
- START_TIME: die Uhrzeit (in Stunden und Minuten)
HTTP-Methode und URL:
PATCH https://sqladmin.googleapis.com/v1/projects/PROJECT_ID/instances/INSTANCE_NAME
JSON-Text anfordern:
{ "settings": { "backupConfiguration": { "startTime": "START_TIME", "enabled": true, "pointInTimeRecoveryEnabled": true } } }
Wenn Sie die Anfrage senden möchten, maximieren Sie eine der folgenden Optionen:
Sie sollten in etwa folgende JSON-Antwort erhalten:
REST v1beta4
Ersetzen Sie diese Werte in den folgenden Anfragedaten:
- PROJECT_ID: die ID oder Projektnummer des Google Cloud-Projekts, das die Instanz enthält
- INSTANCE_NAME: der Name der primären Instanz oder der Lesereplikatinstanz, die Sie für Hochverfügbarkeit konfigurieren
- START_TIME: die Uhrzeit (in Stunden und Minuten)
HTTP-Methode und URL:
PATCH https://sqladmin.googleapis.com/sql/v1beta4/projects/PROJECT_ID/instances/INSTANCE_NAME
JSON-Text anfordern:
{ "settings": { "backupConfiguration": { "startTime": "START_TIME", "enabled": true, "pointInTimeRecoveryEnabled": true } } }
Wenn Sie die Anfrage senden möchten, maximieren Sie eine der folgenden Optionen:
Sie sollten in etwa folgende JSON-Antwort erhalten:
PITR auf einer nicht verfügbaren Instanz ausführen
Console
Sie können aus folgenden Gründen eine nicht verfügbare Instanz in einer anderen Zone wiederherstellen:
- Auf die Zone, in der die Instanz konfiguriert ist, kann nicht zugegriffen werden. Diese Instanz hat den Status
FAILED
. - Die Instanz wird gerade gewartet. Diese Instanz hat den Status
MAINTENANCE
.
Führen Sie die folgenden Schritte aus, um eine nicht verfügbare Instanz wiederherzustellen:
-
Wechseln Sie in der Google Cloud Console zur Seite Cloud SQL-Instanzen.
- Suchen Sie die Zeile der zu klonenden Instanz.
- Klicken Sie in der Spalte Aktionen auf das Menü Weitere Aktionen.
- Klicken Sie auf Klon erstellen.
- Führen Sie auf der Seite Klon erstellen die folgenden Aktionen aus:
- Aktualisieren Sie bei Bedarf im Feld Instanz-ID die Instanz-ID.
- Klicken Sie auf Von einem früheren Zeitpunkt klonen.
- Wählen Sie im Feld Zeitpunkt ein Datum und eine Uhrzeit aus, von der Sie Daten klonen möchten. Dadurch wird der Status der Instanz gemäß diesem Zeitpunkt wiederhergestellt.
- Klicken Sie auf Klon erstellen.
Während der Initialisierung des Klons werden Sie zur Seite mit der Instanzliste zurückgeleitet.
gcloud
Sie können eine nicht verfügbare Instanz in einer anderen Zone wiederherstellen, da die Zone, in der die Instanz konfiguriert ist, nicht zugänglich ist.
gcloud sql instances clone SOURCE_INSTANCE_NAME TARGET_INSTANCE_NAME \ --point-in-time DATE_AND_TIME_STAMP \ --preferred-zone ZONE_NAME \ --preferred-secondary-zone SECONDARY_ZONE_NAME
Das Nutzer- oder Dienstkonto, mit dem der Befehl gcloud sql instances clone
ausgeführt wird, muss die Berechtigung cloudsql.instances.clone
haben. Weitere Informationen zu den erforderlichen Berechtigungen zum Ausführen von gcloud CLI-Befehlen finden Sie unter Cloud SQL-Berechtigungen.
REST Version 1
Sie können eine nicht verfügbare Instanz in einer anderen Zone wiederherstellen, da die Zone, in der die Instanz konfiguriert ist, nicht zugänglich ist.
Ersetzen Sie diese Werte in den folgenden Anfragedaten:
- PROJECT_ID: Projekt-ID.
- SOURCE_INSTANCE_NAME: der Name der Quellinstanz.
- TARGET_INSTANCE_NAME: der Name der (geklonten) Zielinstanz.
- DATE_AND_TIME_STAMP: ein Datums- und Uhrzeitstempel für die Quellinstanz in der UTC-Zeitzone und im RFC 3339-Format (z. B.
2012-11-15T16:19:00.094Z
). - ZONE_NAME: Optional. Der Name der primären Zone für die Zielinstanz. Damit wird eine andere primäre Zone für die Cloud SQL-Instanz festgelegt, die Sie klonen möchten. Bei einer regionalen Instanz ersetzt diese Zone die primäre Zone, die sekundäre Zone bleibt jedoch so wie bei der Instanz.
- SECONDARY_ZONE_NAME: Optional. Der Name der sekundären Zone für die Zielinstanz. Damit wird eine andere sekundäre Zone für die regionale Cloud SQL-Instanz festgelegt, die Sie klonen möchten.
HTTP-Methode und URL:
POST https://sqladmin.googleapis.com/v1/projects/PROJECT_ID/instances/SOURCE_INSTANCE_NAME/clone
JSON-Text anfordern:
{ "cloneContext": { "destinationInstanceName": "TARGET_INSTANCE_NAME", "pointInTime": "DATE_AND_TIME_STAMP", "preferredZone": "ZONE_NAME", "preferredSecondaryZone": "SECONDARY_ZONE_NAME" } }
Wenn Sie die Anfrage senden möchten, maximieren Sie eine der folgenden Optionen:
Sie sollten in etwa folgende JSON-Antwort erhalten:
Das Nutzer- oder Dienstkonto, das die API-Methode instances.clone
verwendet, muss die Berechtigung cloudsql.instances.clone
haben. Weitere Informationen zu den erforderlichen Berechtigungen für API-Methoden finden Sie unter Cloud SQL-Berechtigungen.
REST v1beta4
Sie können eine nicht verfügbare Instanz in einer anderen Zone wiederherstellen, da die Zone, in der die Instanz konfiguriert ist, nicht zugänglich ist.
Ersetzen Sie diese Werte in den folgenden Anfragedaten:
- PROJECT_ID: Projekt-ID.
- SOURCE_INSTANCE_NAME: der Name der Quellinstanz.
- TARGET_INSTANCE_NAME: der Name der (geklonten) Zielinstanz.
- DATE_AND_TIME_STAMP: ein Datums- und Uhrzeitstempel für die Quellinstanz in der UTC-Zeitzone und im RFC 3339-Format (z. B.
2012-11-15T16:19:00.094Z
). - ZONE_NAME: Optional. Der Name der primären Zone für die Zielinstanz. Damit wird eine andere primäre Zone für die Cloud SQL-Instanz festgelegt, die Sie klonen möchten. Bei einer regionalen Instanz ersetzt diese Zone die primäre Zone, die sekundäre Zone bleibt jedoch so wie bei der Instanz.
- SECONDARY_ZONE_NAME: Optional. Der Name der sekundären Zone für die Zielinstanz. Damit wird eine andere sekundäre Zone für die regionale Cloud SQL-Instanz festgelegt, die Sie klonen möchten.
HTTP-Methode und URL:
POST https://sqladmin.googleapis.com/sql/v1beta4/projects/PROJECT_ID/instances/SOURCE_INSTANCE_NAME/clone
JSON-Text anfordern:
{ "cloneContext": { "destinationInstanceName": "TARGET_INSTANCE_NAME", "pointInTime": "DATE_AND_TIME_STAMP", "preferredZone": "ZONE_NAME", "preferredSecondaryZone": "SECONDARY_ZONE_NAME" } }
Wenn Sie die Anfrage senden möchten, maximieren Sie eine der folgenden Optionen:
Sie sollten in etwa folgende JSON-Antwort erhalten:
Das Nutzer- oder Dienstkonto, das die API-Methode instances.clone
verwendet, muss die Berechtigung cloudsql.instances.clone
haben. Weitere Informationen zu den erforderlichen Berechtigungen für API-Methoden finden Sie unter Cloud SQL-Berechtigungen.
Neuesten Wiederherstellungszeitpunkt abrufen
Für eine verfügbare Instanz können Sie die PITR bis zum neuesten Zeitpunkt ausführen. Wenn die Instanz nicht verfügbar ist und die Instanzlogs in Cloud Storage gespeichert sind, können Sie die neueste Wiederherstellungszeit abrufen und die Wiederherstellung zu einem bestimmten Zeitpunkt gemäß diesem Zeitpunkt ausführen. In beiden Fällen können Sie die Instanz in einer anderen primären oder sekundären Zone wiederherstellen. Dazu geben Sie Werte für die bevorzugten Zonen an.
gcloud
Rufen Sie den neuesten Zeitpunkt ab, gemäß dem Sie eine nicht verfügbare Cloud SQL-Instanz wiederherstellen können.
Ersetzen Sie INSTANCE_NAME durch den Namen der abgefragten Instanz.
gcloud sql instances get-latest-recovery-time INSTANCE_NAME
REST Version 1
Ersetzen Sie diese Werte in den folgenden Anfragedaten:
- PROJECT_ID: die Projekt-ID
- INSTANCE_NAME: der Name der Instanz, für die Sie den neuesten Wiederherstellungszeitpunkt abfragen
HTTP-Methode und URL:
GET https://sqladmin.googleapis.com/v1/projects/PROJECT_ID/instances/INSTANCE_NAME/getLatestRecoveryTime
Wenn Sie die Anfrage senden möchten, maximieren Sie eine der folgenden Optionen:
Sie sollten in etwa folgende JSON-Antwort erhalten:
{ "kind": "sql#getLatestRecoveryTime", "latestRecoveryTime": "2023-06-20T17:23:59.648821586Z" }
REST v1beta4
Ersetzen Sie diese Werte in den folgenden Anfragedaten:
- PROJECT_ID: die Projekt-ID
- INSTANCE_NAME: der Name der Instanz, für die Sie den neuesten Wiederherstellungszeitpunkt abfragen
HTTP-Methode und URL:
GET https://sqladmin.googleapis.com/sql/v1beta4/projects/PROJECT_ID/instances/INSTANCE_NAME/getLatestRecoveryTime
Wenn Sie die Anfrage senden möchten, maximieren Sie eine der folgenden Optionen:
Sie sollten in etwa folgende JSON-Antwort erhalten:
{ "kind": "sql#getLatestRecoveryTime", "latestRecoveryTime": "2023-06-20T17:23:59.648821586Z" }
Perform PITR
Console
-
Wechseln Sie in der Google Cloud Console zur Seite Cloud SQL-Instanzen.
- Rufen Sie das Dreipunkt-Menü der Instanz auf, die Sie wiederherstellen möchten, und klicken Sie auf Klon erstellen.
- Optional können Sie auf der Seite Klon erstellen die ID des neuen Klon aktualisieren.
- Wählen Sie Von einem früheren Zeitpunkt klonen aus.
- Geben Sie die Uhrzeit für die Wiederherstellung auf einen bestimmten Zeitpunkt ein.
- Klicken Sie auf Klon erstellen.
gcloud
Erstellen Sie einen Klon mithilfe der PITR.
Ersetzen Sie Folgendes:
- SOURCE_INSTANCE_NAME: der Name der Instanz, von der aus Sie wiederherstellen möchten.
- NEW_INSTANCE_NAME: der Name für den Klon.
- TIMESTAMP: die UTC-Zeitzone für die Quellinstanz im Format RFC 3339. Beispiel: 2012-11-15T16:19:00.094Z.
gcloud sql instances clone SOURCE_INSTANCE_NAME \ NEW_INSTANCE_NAME \ --point-in-time 'TIMESTAMP'
REST Version 1
Ersetzen Sie diese Werte in den folgenden Anfragedaten:
- project-id: die Projekt-ID
- target-instance-id: die ID der Zielinstanz
- source-instance-id: die ID der Quellinstanz
- restore-timestamp der Zeitpunkt, zu dem wiederhergestellt werden soll
HTTP-Methode und URL:
POST https://sqladmin.googleapis.com/v1/projects/project-id/instances/source-instance-id/clone
JSON-Text anfordern:
{ "cloneContext": { "kind": "sql#cloneContext", "destinationInstanceName": "target-instance-id", "pointInTime": "restore-timestamp" } }
Wenn Sie die Anfrage senden möchten, maximieren Sie eine der folgenden Optionen:
Sie sollten in etwa folgende JSON-Antwort erhalten:
REST v1beta4
Ersetzen Sie diese Werte in den folgenden Anfragedaten:
- project-id: die Projekt-ID
- target-instance-id: die ID der Zielinstanz
- source-instance-id: die ID der Quellinstanz
- restore-timestamp der Zeitpunkt, zu dem wiederhergestellt werden soll
HTTP-Methode und URL:
POST https://sqladmin.googleapis.com/sql/v1beta4/projects/project-id/instances/source-instance-id/clone
JSON-Text anfordern:
{ "cloneContext": { "kind": "sql#cloneContext", "destinationInstanceName": "target-instance-id", "pointInTime": "restore-timestamp" } }
Wenn Sie die Anfrage senden möchten, maximieren Sie eine der folgenden Optionen:
Sie sollten in etwa folgende JSON-Antwort erhalten:
PITR deaktivieren
Console
-
Wechseln Sie in der Google Cloud Console zur Seite Cloud SQL-Instanzen.
- Rufen Sie das Dreipunkt-Menü der Instanz auf, die Sie deaktivieren möchten, und wählen Sie Bearbeiten aus.
- Maximieren Sie unter Instanz anpassen den Abschnitt Datenschutz.
- Entfernen Sie das Häkchen von der Option Wiederherstellung zu einem bestimmten Zeitpunkt aktivieren.
- Klicken Sie auf Speichern.
gcloud
- Wiederherstellung zu einem bestimmten Zeitpunkt deaktivieren:
gcloud sql instances patch INSTANCE_NAME \ --no-enable-point-in-time-recovery
- Bestätigen Sie die Änderung:
gcloud sql instances describe INSTANCE_NAME
Im Abschnitt
backupConfiguration
wirdpointInTimeRecoveryEnabled: false
angezeigt, ob die Änderung erfolgreich war.
REST Version 1
Ersetzen Sie diese Werte in den folgenden Anfragedaten:
- project-id: die Projekt-ID
- instance-id: die Instanz-ID
HTTP-Methode und URL:
PATCH https://sqladmin.googleapis.com/v1/projects/project-id/instances/instance-id
JSON-Text anfordern:
{ "settings": { "backupConfiguration": { "enabled": false, "pointInTimeRecoveryEnabled": false } } }
Wenn Sie die Anfrage senden möchten, maximieren Sie eine der folgenden Optionen:
Sie sollten in etwa folgende JSON-Antwort erhalten:
REST v1beta4
Ersetzen Sie diese Werte in den folgenden Anfragedaten:
- project-id: die Projekt-ID
- instance-id: die Instanz-ID
HTTP-Methode und URL:
PATCH https://sqladmin.googleapis.com/sql/v1beta4/projects/project-id/instances/instance-id
JSON-Text anfordern:
{ "settings": { "backupConfiguration": { "enabled": false, "pointInTimeRecoveryEnabled": false } } }
Wenn Sie die Anfrage senden möchten, maximieren Sie eine der folgenden Optionen:
Sie sollten in etwa folgende JSON-Antwort erhalten:
Speicherort der für PITR verwendeten Transaktionslogs prüfen
Sie können prüfen, wo Ihre Cloud SQL-Instanz die Transaktionslogs speichert, die für PITR verwendet werden.
gcloud
Mit dem folgenden Befehl können Sie feststellen, ob Ihre Instanz Protokolle für PITR auf dem Laufwerk oder in Cloud Storage speichert:
gcloud sql instances describe INSTANCE_NAME
Ersetzen Sie INSTANCE_NAME durch den Namen der Instanz.
Sie können auch den Speicherort der Transaktionsprotokolle für mehrere Instanzen im selben Projekt prüfen. Verwenden Sie den folgenden Befehl, um den Speicherort für mehrere Instanzen zu ermitteln:
gcloud sql instances list --show-transactional-log-storage-state
Beispielantwort:
NAME DATABASE_VERSION LOCATION TRANSACTIONAL_LOG_STORAGE_STATE my_01 POSTGRES_12 us-central-1 DISK my_02 POSTGRES_12 us-central-1 CLOUD_STORAGE ...
In der Befehlsausgabe enthält das Feld transactionalLogStorageState
oder die Spalte TRANSACTIONAL_LOG_STORAGE_STATE
Informationen dazu, wo die Transaktionsprotokolle für die PITR-Wiederherstellung für die Instanz gespeichert werden.
Mögliche Speicherstatus für Transaktionsprotokolle:
DISK
: Die Instanz speichert die für die PITR verwendeten Transaktionslogs auf dem Laufwerk. Wenn Sie eine Cloud SQL Enterprise-Instanz auf die Cloud SQL Enterprise Plus-Version umstellen, wird der Speicherort der Protokolle während des Upgrades automatisch auf Cloud Storage umgestellt. Weitere Informationen finden Sie unter Instanz mithilfe eines direkten Upgrades auf Cloud SQL Cloud SQL Enterprise Plus aktualisieren. Sie können den Speicherort auch mit der gcloud CLI oder der Cloud SQL Admin API ändern, ohne die Version Ihrer Instanz zu aktualisieren und ohne Ausfallzeiten. Weitere Informationen finden Sie unter Speicherort für Transaktionsprotokolle zu Cloud Storage wechseln.SWITCHING_TO_CLOUD_STORAGE
: In der Instanz wird der Speicherort für die PITR-Transaktionsprotokolle auf Cloud Storage umgestellt.SWITCHED_TO_CLOUD_STORAGE
: Der Speicherort der PITR-Transaktionsprotokolle wurde von der Festplatte zu Cloud Storage geändert.CLOUD_STORAGE
: Die Instanz speichert die für die PITR verwendeten Transaktionslogs in Cloud Storage.
Speicherort für Transaktionsprotokolle zu Cloud Storage wechseln
Wenn Ihre Instanz die für PITR verwendeten Transaktionslogs auf dem Laufwerk speichert, können Sie den Speicherort ohne Ausfallzeit auf Cloud Storage umstellen. Der Wechsel des Speicherorts dauert ungefähr so lange wie die Aufbewahrungsdauer des Transaktionslogs (in Tagen). Sobald Sie die Umstellung starten, werden Transaktionsprotokolle in Cloud Storage erstellt. Während des Vorgangs können Sie den Status des gesamten Prozesses mit dem Befehl in Speicherort von Transaktionslogs prüfen, die für PITR verwendet werden prüfen.
Nach Abschluss des gesamten Wechsels zu Cloud Storage verwendet Cloud SQL Transaktionslogs aus Cloud Storage für die Wiederherstellung zu einem bestimmten Zeitpunkt.
gcloud
Verwenden Sie den folgenden Befehl, um den Speicherort zu Cloud Storage zu wechseln:
gcloud sql instances patch INSTANCE_NAME \ --switch-transaction-logs-to-cloud-storage
Ersetzen Sie INSTANCE_NAME durch den Namen der Instanz. Die Instanz muss eine primäre Instanz und keine Replikationsinstanz sein. Die Antwort ähnelt dem folgenden Beispiel.
The following message is used for the patch API method. {"name": "INSTANCE_NAME", "project": "PROJECT_NAME", "switchTransactionalLogsToCloudStorageEnabled": "true"} Patching Cloud SQL instance...done. Updated [https://sqladmin.prod.googleapis.com/v1/projects/PROJECT_NAME/instances/INSTANCE_NAME].
Wenn der Befehl einen Fehler zurückgibt, finden Sie unter Fehlerbehebung bei der Umstellung auf Cloud Storage mögliche nächste Schritte.
REST Version 1
Ersetzen Sie diese Werte in den folgenden Anfragedaten:
- PROJECT_ID: Projekt-ID.
- INSTANCE_ID: Instanz-ID. Die Instanz muss eine primäre Instanz und keine Replikationsinstanz sein.
HTTP-Methode und URL:
PATCH https://sqladmin.googleapis.com/v1/projects/PROJECT_ID/instances/INSTANCE_ID
JSON-Text anfordern:
{ "switchTransactionLogsToCloudStorageEnabled": true }
Wenn Sie die Anfrage senden möchten, maximieren Sie eine der folgenden Optionen:
Sie sollten in etwa folgende JSON-Antwort erhalten:
Wenn die Anfrage einen Fehler zurückgibt, finden Sie unter Fehlerbehebung beim Wechsel zu Cloud Storage mögliche nächste Schritte.
REST v1beta4
Ersetzen Sie diese Werte in den folgenden Anfragedaten:
- PROJECT_ID: Projekt-ID.
- INSTANCE_ID: Instanz-ID. Die Instanz muss eine primäre Instanz und keine Replikationsinstanz sein.
HTTP-Methode und URL:
PATCH https://sqladmin.googleapis.com/sql/v1beta4/projects/PROJECT_ID/instances/INSTANCE_ID
JSON-Text anfordern:
{ "switchTransactionLogsToCloudStorageEnabled": true }
Wenn Sie die Anfrage senden möchten, maximieren Sie eine der folgenden Optionen:
Sie sollten in etwa folgende JSON-Antwort erhalten:
Wenn die Anfrage einen Fehler zurückgibt, finden Sie unter Fehlerbehebung beim Wechsel zu Cloud Storage mögliche nächste Schritte.
Aufbewahrung von Transaktionslogs festlegen
So legen Sie die Anzahl der Tage fest, für die Write-Ahead-Logs aufbewahrt werden:
Console
-
Wechseln Sie in der Google Cloud Console zur Seite Cloud SQL-Instanzen.
- Rufen Sie das Dreipunkt-Menü der Instanz auf, für die Sie das Transaktionslog festlegen möchten, und wählen Sie Bearbeiten aus.
- Maximieren Sie unter Instanz anpassen den Abschnitt Datenschutz.
- Maximieren Sie im Abschnitt Wiederherstellung zu einem bestimmten Zeitpunkt aktivieren die Option Erweiterte Optionen.
- Geben Sie die Anzahl der Tage ein (von 1 bis 35 für die Cloud SQL Enterprise Plus-Version oder 1 bis 7 für die Cloud SQL Enterprise-Version).
- Klicken Sie auf Speichern.
gcloud
Legen Sie fest, wie viele Tage die Write-Ahead-Logs aufbewahrt werden sollen.
Ersetzen Sie Folgendes:
- INSTANCE_NAME: der Name der Instanz, für die Sie das Transaktionslog festlegen möchten.
DAYS_TO_RETAIN: Die Anzahl der Tage, für die Transaktionslogs aufbewahrt werden sollen. Bei Cloud SQL Enterprise Plus liegt der gültige Bereich zwischen 1 und 35 Tagen, wobei der Standardwert 14 Tage beträgt. Bei Cloud SQL Enterprise liegt der gültige Bereich zwischen 1 und 7 Tagen, wobei der Standardwert 7 Tage beträgt.
Wenn kein Wert angegeben ist, wird der Standardwert verwendet. Das ist nur gültig, wenn die PITR-Funktion aktiviert ist. Wenn Sie Transaktionslogs länger speichern möchten, ist mehr Speicherplatz erforderlich.
gcloud sql instances patch INSTANCE_NAME \ --retained-transaction-log-days=DAYS_TO_RETAIN
REST Version 1
Ersetzen Sie diese Werte in den folgenden Anfragedaten:
- PROJECT_ID: Projekt-ID.
- INSTANCE_ID: Instanz-ID.
DAYS_TO_RETAIN: die Anzahl der Tage, für die Transaktionslogs aufbewahrt werden sollen. Bei Cloud SQL Enterprise Plus liegt der gültige Bereich zwischen 1 und 35 Tagen, wobei der Standardwert 14 Tage beträgt. Bei Cloud SQL Enterprise liegt der gültige Bereich zwischen 1 und 7 Tagen, wobei der Standardwert 7 Tage beträgt.
Wenn kein Wert angegeben ist, wird der Standardwert verwendet. Das ist nur gültig, wenn die PITR-Funktion aktiviert ist. Wenn Sie Transaktionslogs länger speichern möchten, ist mehr Speicherplatz erforderlich.
HTTP-Methode und URL:
PATCH https://sqladmin.googleapis.com/v1/projects/PROJECT_ID/instances/INSTANCE_ID
JSON-Text anfordern:
{ "settings": { "backupConfiguration": { "transactionLogRetentionDays": "DAYS_TO_RETAIN" } } }
Wenn Sie die Anfrage senden möchten, maximieren Sie eine der folgenden Optionen:
Sie sollten in etwa folgende JSON-Antwort erhalten:
REST v1beta4
Ersetzen Sie diese Werte in den folgenden Anfragedaten:
- PROJECT_ID: Projekt-ID.
- INSTANCE_ID: Instanz-ID.
DAYS_TO_RETAIN: die Anzahl der Tage, für die Transaktionslogs aufbewahrt werden sollen. Bei Cloud SQL Enterprise Plus liegt der gültige Bereich zwischen 1 und 35 Tagen, wobei der Standardwert 14 Tage beträgt. Bei Cloud SQL Enterprise liegt der gültige Bereich zwischen 1 und 7 Tagen, wobei der Standardwert 7 Tage beträgt.
Wenn kein Wert angegeben ist, wird der Standardwert verwendet. Das ist nur gültig, wenn die PITR-Funktion aktiviert ist. Wenn Sie Transaktionslogs länger speichern möchten, ist mehr Speicherplatz erforderlich.
HTTP-Methode und URL:
PATCH https://sqladmin.googleapis.com/sql/v1beta4/projects/PROJECT_ID/instances/INSTANCE_ID
JSON-Text anfordern:
{ "settings": { "backupConfiguration": { "transactionLogRetentionDays": "DAYS_TO_RETAIN" } } }
Wenn Sie die Anfrage senden möchten, maximieren Sie eine der folgenden Optionen:
Sie sollten in etwa folgende JSON-Antwort erhalten:
Fehlerbehebung
Problem | Fehlerbehebung |
---|---|
ODER
|
Der von Ihnen angegebene Zeitstempel ist ungültig. |
ODER
|
Der angegebene Zeitstempel gilt für einen Zeitpunkt, an dem keine Sicherungen oder binlog-Koordinaten gefunden wurden. |
Probleme beim Wechsel zu Cloud Storage beheben
In der folgenden Tabelle sind mögliche Fehler aufgeführt, die mit dem Code INVALID REQUEST
zurückgegeben werden können, wenn Sie den Speicherort der Transaktionsprotokolle vom Laufwerk zu Cloud Storage ändern.
Problem | Fehlerbehebung |
---|---|
Switching the storage location of the transaction logs
used for PITR is not supported for instances with database type %s.
|
Führen Sie den Befehl gcloud aus oder senden Sie die API-Anfrage an eine Cloud SQL for MySQL- oder Cloud SQL for PostgreSQL-Instanz. Der Speicherort für Transaktionsprotokolle kann bei Cloud SQL for SQL Server nicht mit der gcloud CLI oder der Cloud SQL Admin API geändert werden. |
PostgreSQL transactional logging is not enabled on this instance.
|
PostgreSQL verwendet Write-Ahead-Logging als Transaktionsprotokolle für die Wiederherstellung zu einem bestimmten Zeitpunkt (Point-In-Time Recovery, PITR). Damit PITR unterstützt wird, müssen Sie in PostgreSQL das Write-Ahead-Logging auf der Instanz aktivieren. Weitere Informationen zum Aktivieren der Vorabschreibprotokollierung finden Sie unter PITR aktivieren. |
This instance is already storing transaction logs used for PITR in
Cloud Storage
|
Um den Speicherort der Transaktionsprotokolle zu prüfen, führen Sie den Befehl aus, der unter Speicherort der für PITR verwendeten Transaktionslogs prüfen beschrieben wird. |
The instance is already switching transaction logs used for PITR from disk
to Cloud Storage.
|
Warten Sie, bis der Vorgang abgeschlossen ist. Um den Status des Vorgangs und den Speicherort der Transaktionsprotokolle zu prüfen, führen Sie den Befehl unter Speicherort der für PITR verwendeten Transaktionslogs prüfen aus. |