Wenn Sie eine neue Instanz in der Google Cloud Konsole erstellen, werden sowohl automatische Sicherungen als auch die Wiederherstellung zu einem bestimmten Zeitpunkt (Point-in-Time Recovery, PITR) automatisch aktiviert. Sie können PITR für jede vorhandene Instanz konfigurieren, indem Sie Folgendes tun:
- PITR aktivieren
- PITR deaktivieren
- Aufbewahrung von Transaktionslogs festlegen
- Speicherort von Transaktionslogs prüfen, die für PITR verwendet werden
PITR aktivieren
Wenn Sie in der Google Cloud -Konsole eine neue Instanz erstellen, werden sowohl Automatisierte Back-ups als auch Wiederherstellung zu einem bestimmten Zeitpunkt aktivieren automatisch aktiviert.Mit dem folgenden Verfahren wird die Wiederherstellung zu einem bestimmten Zeitpunkt für eine vorhandene primäre 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 mit Logs die Anzahl der Tage ein, für die Logs aufbewahrt werden sollen (1–35 für die Cloud SQL Enterprise Plus-Version oder 1–7 für die Cloud SQL Enterprise-Version).
- Klicken Sie auf Speichern.
gcloud
- Rufen Sie die Instanzübersicht auf:
gcloud sql instances describe INSTANCE_NAME
- Wenn im Abschnitt
backupConfigurationenabled: falseangezeigt wird, aktivieren Sie geplante Sicherungen:gcloud sql instances patch INSTANCE_NAME \ --backup-start-time=HH:MM
Dabei geben Sie den Parameter
backup-start-timeim 24-Stunden-Zeitformat und in der Zeitzone UTC±00 an. - PITR aktivieren:
gcloud sql instances patch INSTANCE_NAME \ --enable-bin-log
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
backupConfigurationwirdbinaryLogEnabled: trueangezeigt, ob die Änderung erfolgreich war.
Terraform
Verwenden Sie eine Terraform-Ressource, um die PITR 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 Standardprojekt Google Cloud 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
.tfhaben, z. B.main.tf. In dieser Anleitung wird die Datei alsmain.tfbezeichnet.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
-upgradeein, 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
yesan 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_protectionauffalse.deletion_protection = "false"
- Wenden Sie die aktualisierte Terraform-Konfiguration an. Führen Sie dazu den folgenden Befehl aus und geben Sie
yesan der Eingabeaufforderung ein:terraform apply
-
Entfernen Sie Ressourcen, die zuvor mit Ihrer Terraform-Konfiguration angewendet wurden, indem Sie den folgenden Befehl ausführen und
yesan 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,
"binaryLogEnabled": true
}
}
}
Wenn Sie die Anfrage senden möchten, maximieren Sie eine der folgenden Optionen:
Sie sollten eine JSON-Antwort ähnlich wie diese 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/v1beta4/projects/PROJECT_ID/instances/INSTANCE_NAME
JSON-Text anfordern:
{
"settings":
{
"backupConfiguration":
{
"startTime": "START_TIME",
"enabled": true,
"binaryLogEnabled": true
}
}
}
Wenn Sie die Anfrage senden möchten, maximieren Sie eine der folgenden Optionen:
Sie sollten eine JSON-Antwort ähnlich wie diese erhalten:
Wiederherstellung zu einem bestimmten Zeitpunkt 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-bin-log
- Bestätigen Sie die Änderung:
gcloud sql instances describe INSTANCE_NAME
Im Abschnitt
backupConfigurationwirdbinaryLogEnabled: falseangezeigt, 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,
"binaryLogEnabled": false
}
}
}
Wenn Sie die Anfrage senden möchten, maximieren Sie eine der folgenden Optionen:
Sie sollten eine JSON-Antwort ähnlich wie diese 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,
"binaryLogEnabled": false
}
}
}
Wenn Sie die Anfrage senden möchten, maximieren Sie eine der folgenden Optionen:
Sie sollten eine JSON-Antwort ähnlich wie diese erhalten:
Aufbewahrung von Transaktionslogs festlegen
So legen Sie die Anzahl der Tage fest, für die binäre Logs aufbewahrt werden sollen:
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 die Anzahl der Tage für die Aufbewahrung von binären Logs für die Instanz fest.
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 beibehalten 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 Sie keinen Wert angeben, verwendet Cloud SQL den Standardwert. Dies ist nur gültig, wenn PITR 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. Dies ist nur gültig, wenn PITR 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 eine JSON-Antwort ähnlich wie diese 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. Dies ist nur gültig, wenn PITR 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 eine JSON-Antwort ähnlich wie diese 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
Verwenden Sie den folgenden Befehl, um festzustellen, ob Ihre Instanz Logs für PITR auf der Festplatte oder in Cloud Storage speichert:
gcloud sql instances describe INSTANCE_NAME
Ersetzen Sie INSTANCE_NAME durch den Namen der Instanz.
Bei mehreren Instanzen im selben Projekt können Sie auch den Speicherort der Transaktionsprotokolle 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 MYSQL_8_0 us-central-1 DISK my_02 MYSQL_8_0 us-central-1 CLOUD_STORAGE ...
In der Ausgabe des Befehls enthält das Feld transactionalLogStorageState oder die Spalte TRANSACTIONAL_LOG_STORAGE_STATE Informationen dazu, wo die Transaktionslogs für PITR für die Instanz gespeichert werden.
Folgende Speicherstatus für das Transaktionsprotokoll sind möglich:
DISK: Die Instanz speichert die für PITR verwendeten Transaktionslogs auf der Festplatte. Wenn Sie eine Cloud SQL Enterprise-Instanz auf Cloud SQL Enterprise Plus aktualisieren, wird der Speicherort der Logs automatisch auf Cloud Storage umgestellt. Weitere Informationen finden Sie unter Upgrade einer Instanz auf Cloud SQL Enterprise Plus mithilfe eines direkten Upgrades ausführen. 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 Transaktionsprotokollspeicher auf Cloud Storage umstellen.SWITCHING_TO_CLOUD_STORAGE: Bei der Instanz wird der Speicherort für die PITR-Transaktionslogs zu Cloud Storage gewechselt.SWITCHED_TO_CLOUD_STORAGE: Die Instanz hat den Wechsel des Speicherorts für PITR-Transaktionslogs von der Festplatte zu Cloud Storage abgeschlossen.CLOUD_STORAGE: Die Instanz speichert die für PITR verwendeten Transaktionslogs in Cloud Storage.
Transaktionslog-Speicher auf Cloud Storage umstellen
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 gesamte Vorgang zum Ändern des Speicherorts dauert ungefähr so lange wie der Aufbewahrungszeitraum für das Transaktionslog (in Tagen). Sobald Sie die Umstellung starten, werden Transaktionslogs in Cloud Storage erfasst. Während des Vorgangs können Sie den Status des Gesamtprozesses mit dem Befehl unter Speicherort von Transaktionslogs prüfen, die für PITR verwendet werden prüfen.
Nach Abschluss des gesamten Vorgangs der Umstellung auf Cloud Storage verwendet Cloud SQL Transaktionslogs aus Cloud Storage für PITR.
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 Replikatinstanz sein. Das Ergebnis sieht etwa so aus:
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 beim Wechsel zu 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 Replikatinstanz 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 eine JSON-Antwort ähnlich wie diese 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 Replikatinstanz 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 eine JSON-Antwort ähnlich wie diese erhalten:
Wenn die Anfrage einen Fehler zurückgibt, finden Sie unter Fehlerbehebung beim Wechsel zu Cloud Storage mögliche nächste Schritte.
Speicherung und Konfiguration von Transaktionslogs nach dem Wechsel
Zu Replikationszwecken speichert Cloud SQL weiterhin Kopien binärer Logs auf dem Laufwerk.
Wenn Sie binäre Logs mit dem Dienstprogramm mysqlbinlog durchsuchen möchten, ist das Speichern binärer Logs auf einem Laufwerk nützlich.
Wenn Sie die Flags expire_logs_days oder binlog_expire_logs_seconds vor dem Wechsel auf Ihrer Instanz konfiguriert haben, bleiben die konfigurierten Werte erhalten.
Da die binären Logs, die zum Ausführen von PITR verwendet werden, nach der Umstellung jetzt in Cloud Storage gespeichert werden, müssen die Werte der Flags die Aufbewahrung von Transaktionslogs auf dem erwarteten Laufwerk widerspiegeln. Cloud SQL speichert Logs auf dem Laufwerk nur für einen der folgenden Mindestwert:
- die PITR-Konfigurationseinstellung
transactionLogRetentionDaysvor der Umstellung. Der Standardwert für diese Einstellung ist 7 Tage. - die Flags
expire_logs_daysoderbinlog_expire_logs_seconds, die Sie für Ihre Instanz manuell festgelegt haben.
Wenn Sie Speicherplatz sparen möchten, konfigurieren Sie nach Abschluss des Wechsels den Wert des Flags expire_logs_days oder binlog_expire_logs_seconds auf 1 Tag, damit Sie die zugewiesene Laufwerkgröße und Laufwerksspeicherkosten reduzieren können. Weitere Informationen zum Speichern von Transaktionslogs und PITR finden Sie unter Logspeicher für PITR.
Weitere Informationen zum Prüfen der Festplattennutzung finden Sie unter Logs und Festplattennutzung.
Probleme beim Wechsel zu Cloud Storage beheben
In der folgenden Tabelle sind mögliche Fehler aufgeführt, die mit dem INVALID REQUEST-Code zurückgegeben werden können, wenn Sie den Speicherort der Transaktionslogs von der Festplatte in 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.
|
Achten Sie darauf, dass Sie den gcloud CLI-Befehl ausführen oder die API-Anfrage für eine Cloud SQL for MySQL- oder Cloud SQL for PostgreSQL-Instanz stellen. Das Ändern des Speicherorts für Transaktionslogs mit der gcloud CLI oder der Cloud SQL Admin API wird für Cloud SQL for SQL Server nicht unterstützt. |
MySQL transactional logging is not enabled on this instance.
|
MySQL verwendet das binäre Logging als Transaktionslogs für die Wiederherstellung zu einem bestimmten Zeitpunkt. Damit PITR unterstützt wird, müssen Sie das binäre Logging für die MySQL-Instanz aktivieren. Weitere Informationen zum Aktivieren des binären Loggings finden Sie unter PITR aktivieren. |
This command is not supported on replica instances.
Run the command on the primary instance instead.
|
Achten Sie darauf, dass Sie beim Ausführen des Befehls oder beim Senden der API-Anfrage eine primäre Instanz angeben. |
This instance is already storing transaction logs used for PITR in
Cloud Storage
|
Führen Sie den Befehl unter Speicherort der für PITR verwendeten Transaktionslogs prüfen aus, um den Speicherort der Transaktionslogs zu prüfen. |
The instance is already switching transaction logs used for PITR from disk
to Cloud Storage.
|
Warten Sie, bis der Vorgang abgeschlossen ist. Führen Sie den Befehl unter Speicherort der für PITR verwendeten Transaktionslogs prüfen aus, um den Status des Vorgangs und den Speicherort der Transaktionslogs zu prüfen. |