Self-Service-Wartung

Diese Seite beschreibt die Self-Service-Wartung, mit der Sie ein Wartungsupdate für Ihre Instanz außerhalb des normalen Ablaufs der geplanten Wartung annehmen können.

Überblick

Cloud SQL veröffentlicht regelmäßig Softwareverbesserungen wie z. B. Patches für bekannte Sicherheitslücken über neue Wartungsversionen. Cloud SQL führt geplante Wartungen alle paar Monate standardmäßig aus, damit Sie immer die neueste Wartungsversion haben. Sie sollten aber eine Self-Service-Wartung ausführen, wenn:

  • Sie ein Update vor dem nächsten geplanten Wartungsereignis benötigen.
  • Sie möchten die neueste Wartungsversion installieren, nachdem Sie das letzte geplante Wartungsereignis übersprungen haben.

Sie müssen keine manuellen Updates auf die neueste Version ausführen. Sie können festlegen, dass Cloud SQL Ihre Wartungsversion während des nächsten geplanten Wartungsereignisses automatisch aktualisiert.

Wartung für alle Lesereplikate einer primären Instanz verwalten

Wenn Sie eine Self-Service-Wartung auf einer primären Instanz mit Lesereplikaten durchführen, wendet Cloud SQL das Wartungsupdate automatisch auf alle ihre Lesereplikate an. Wenn Sie mehr als drei Lesereplikatinstanzen haben, werden die Instanzen in Gruppen unterteilt und parallel aktualisiert. Als letzten Schritt wird das Wartungsupdate auf die primäre Instanz angewendet.

Bei Bedarf können Sie weiterhin Self-Service-Wartung für ein einzelnes Lesereplikat ausführen. Damit alle Lesereplikatinstanzen und die primäre Instanz mit derselben Wartungsversion ausgeführt werden, empfehlen wir jedoch eine Self-Service-Wartung für alle Lesereplikate einer primären Instanz zur selben Zeit.

Zum Aktualisieren einer einzelnen Lesereplikatinstanz geben Sie diese Lesereplikatinstanz bei der Self-Service-Wartung an.

Hinweise

Vor jeder Self-Service-Wartung sollten Sie Ihre aktuelle Wartungsversion prüfen. Anschließend können Sie die Zielwartungsversion ermitteln, auf die Sie aktualisieren möchten, und die Instanz auf diese Version aktualisieren. Wenn Sie Lesereplikate verwenden, aktualisieren Sie alle Lesereplikate der primären Instanz auf diese Version.

So rufen Sie die aktuelle Wartungsversion einer Instanz auf:

gcloud

Bevor Sie den folgenden gcloud-Befehl ausführen, ersetzen Sie den folgenden Wert:

  • INSTANCE_ID: Die abzufragende Instanz
gcloud sql instances describe INSTANCE_ID
  

Die auf der Instanz installierte Wartungsversion wird neben dem maintenanceVersion-Attribut angezeigt.

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 Instanz, die Sie für Hochverfügbarkeit konfigurieren

HTTP-Methode und URL:

GET https://sqladmin.googleapis.com/v1/projects/PROJECT_ID/instances/INSTANCE_NAME

Wenn Sie die Anfrage senden möchten, maximieren Sie eine der folgenden Optionen:

Sie sollten in etwa folgende JSON-Antwort erhalten:

{
  "kind": "sql#instance",
  "state": "RUNNABLE",
  "databaseVersion": "POSTGRES_13"
}

Suchen Sie im DatabaseInstance-Abschnitt der Antwort nach dem maintenanceVersion-Element.

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 Instanz, die Sie für Hochverfügbarkeit konfigurieren

HTTP-Methode und URL:

GET https://sqladmin.googleapis.com/sql/v1beta4/projects/PROJECT_ID/instances/INSTANCE_NAME

Wenn Sie die Anfrage senden möchten, maximieren Sie eine der folgenden Optionen:

Sie sollten in etwa folgende JSON-Antwort erhalten:

{
  "kind": "sql#instance",
  "state": "RUNNABLE",
  "databaseVersion": "POSTGRES_13"
}

Suchen Sie im DatabaseInstance-Abschnitt der Antwort nach dem maintenanceVersion-Element.

Zielwartungsversion ermitteln

Verwenden Sie folgende Methode, um die Wartungsversionen aufzurufen, die Sie als Ziel auswählen können. Sie können kein Update auf eine frühere als die aktuelle Wartungsversion ausführen.

gcloud

Bevor Sie den folgenden gcloud-Befehl ausführen, ersetzen Sie den folgenden Wert:

  • INSTANCE_ID: Die abzufragende Instanz
gcloud sql instances describe INSTANCE_ID
  

Die verfügbare Wartungsversion wird neben dem availableMaintenanceVersions-Attribut angezeigt.

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 Instanz, die Sie für Hochverfügbarkeit konfigurieren

HTTP-Methode und URL:

GET https://sqladmin.googleapis.com/v1/projects/PROJECT_ID/instances/INSTANCE_NAME

Wenn Sie die Anfrage senden möchten, maximieren Sie eine der folgenden Optionen:

Sie sollten in etwa folgende JSON-Antwort erhalten:

{
  "kind": "sql#instance",
  "state": "RUNNABLE",
  "databaseVersion": "POSTGRES_13"
}

Suchen Sie im DatabaseInstance-Abschnitt der Antwort nach dem availableMaintenanceVersions-Element.

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 Instanz, die Sie für Hochverfügbarkeit konfigurieren

HTTP-Methode und URL:

GET https://sqladmin.googleapis.com/sql/v1beta4/projects/PROJECT_ID/instances/INSTANCE_NAME

Wenn Sie die Anfrage senden möchten, maximieren Sie eine der folgenden Optionen:

Sie sollten in etwa folgende JSON-Antwort erhalten:

{
  "kind": "sql#instance",
  "state": "RUNNABLE",
  "databaseVersion": "POSTGRES_13"
}

Suchen Sie im DatabaseInstance-Abschnitt der Antwort nach dem availableMaintenanceVersions-Element.

Alle Lesereplikate einer primären Instanz auf die Zielwartungsversion aktualisieren

Mit dem folgenden Verfahren können Sie ein Wartungsupdate für alle Lesereplikatinstanzen einer primären Instanz ausführen.

gcloud

Bevor Sie den folgenden gcloud-Befehl verwenden, ersetzen Sie die folgenden Werte:

  • PRIMARY_INSTANCE_ID: Die ID der primären Instanz
  • MAINTENANCE_VERSION: Die anzuwendende Cloud SQL-Wartungsversion
gcloud sql instances patch PRIMARY_INSTANCE_ID \
   --maintenance-version=MAINTENANCE_VERSION
  

Wenn Sie zur Bestätigung aufgefordert werden, geben Sie Y ein, um fortzufahren, oder N, um den Vorgang abzubrechen.

Wenn Sie Y auswählen, wendet der Aktualisierungsvorgang die angegebene Wartungsversion zuerst auf alle Lesereplikate an, bevor die primäre Instanz aktualisiert wird. Alle Lesereplikatinstanzen, die bereits auf die Zielwartungsversion aktualisiert wurden, werden übersprungen.

Wenn Sie N auswählen, werden keine Instanzen aktualisiert.

Nach Abschluss der Aktualisierung der Lesereplikate und der primären Instanz wird eine Meldung wie die folgende angezeigt:

  Patching Cloud SQL instance....done.
  Patching Cloud SQL instance....done.
  Patching Cloud SQL instance....done.
  Updated [https://sqladmin.googleapis.com/v1/projects/PROJECT_ID/instances/PRIMARY_INSTANCE_ID]
  

Terraform

Verwenden Sie zum Erstellen einer Instanz eine Terraform-Ressource.

resource "google_sql_database_instance" "postgres_ssm_instance_name" {
  name                = "postgres-ssm-instance-name"
  region              = "asia-northeast1"
  database_version    = "POSTGRES_14"
  maintenance_version = "POSTGRES_14_4.R20220710.01_07"
  settings {
    tier = "db-f1-micro"
  }
  # set `deletion_protection` to true, will ensure that one cannot accidentally delete this instance by
  # use of Terraform whereas `deletion_protection_enabled` flag protects this instance at the GCP level.
  deletion_protection = false
}

Ä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

  1. Rufen Sie Cloud Shell auf.
  2. 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).

  1. 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 als main.tf bezeichnet.
    mkdir DIRECTORY && cd DIRECTORY && touch main.tf
  2. 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.

  3. Prüfen und ändern Sie die Beispielparameter, die auf Ihre Umgebung angewendet werden sollen.
  4. Speichern Sie die Änderungen.
  5. 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

  1. 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.

  2. 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.

  3. Ö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:

  1. Um den Löschschutz zu deaktivieren, setzen Sie in der Terraform-Konfigurationsdatei das Argument deletion_protection auf false.
    deletion_protection =  "false"
  2. 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
  1. 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 Projekt-ID
  • PROJECT_ID: Die Instanz-ID der primären Instanz
  • MAINTENANCE_VERSION: Die anzuwendende Cloud SQL-Softwarewartungsversion

HTTP-Methode und URL:

PATCH https://sqladmin.googleapis.com/v1/projects/PROJECT_ID/instances/INSTANCE_ID

JSON-Text anfordern:

{
  "maintenanceVersion": "MAINTENANCE_VERSION"
}

Wenn Sie die Anfrage senden möchten, maximieren Sie eine der folgenden Optionen:

Sie sollten in etwa folgende JSON-Antwort erhalten:

{
  "kind": "sql#operation",
  "targetLink": "https://sqladmin.googleapis.com/v1/projects/PROJECT_ID/instances/INSTANCE_ID",
  "status": "PENDING",
  "user": "user@example.com",
  "insertTime": "2020-01-16T02:32:12.281Z",
  "startTime": "08:00",
  "endTime": "08:01",
  "operationType": UPDATE,
  "name": "OPERATION_ID",
  "targetId": "PRIMARY_INSTANCE_ID",
  "selfLink": "https://sqladmin.googleapis.com/v1/projects/PROJECT_ID/operations/OPERATION_ID",
  "targetProject": "PROJECT_ID"
}

REST v1beta4

Ersetzen Sie diese Werte in den folgenden Anfragedaten:

  • PROJECT_ID: die Projekt-ID
  • INSTANCE_ID: Die Instanz-ID der primären Instanz
  • MAINTENANCE_VERSION: Die anzuwendende Cloud SQL-Softwarewartungsversion

HTTP-Methode und URL:

PATCH https://sqladmin.googleapis.com/sql/v1beta4/projects/PROJECT_ID/instances/INSTANCE_ID

JSON-Text anfordern:

{
  "maintenanceVersion": "MAINTENANCE_VERSION"
}

Wenn Sie die Anfrage senden möchten, maximieren Sie eine der folgenden Optionen:

Sie sollten in etwa folgende JSON-Antwort erhalten:

{
  "kind": "sql#operation",
  "targetLink": "https://sqladmin.googleapis.com/sql/v1beta4/projects/PROJECT_ID/instances/INSTANCE_ID",
  "status": "PENDING",
  "user": "user@example.com",
  "insertTime": "2020-01-16T02:32:12.281Z",
  "startTime": "08:00",
  "endTime": "08:01",
  "operationType": UPDATE,
  "name": "OPERATION_ID",
  "targetId": "INSTANCE_ID",
  "selfLink": "https://sqladmin.googleapis.com/sql/v1beta4/projects/PROJECT_ID/operations/OPERATION_ID",
  "targetProject": "PROJECT_ID"
}

Einzelne Instanz auf die Zielwartungsversion aktualisieren

So führen Sie ein Wartungsupdate für eine einzelne Instanz durch. Bei Bedarf können Sie mit diesem Verfahren eine einzelne Lesereplikatinstanz aktualisieren.

gcloud

Bevor Sie den folgenden gcloud-Befehl ausführen, ersetzen Sie die folgenden Werte:

  • INSTANCE_ID: Die ID der Instanz. Diese Instanz kann eine Lesereplikatinstanz sein.
  • MAINTENANCE_VERSION: Die anzuwendende Cloud SQL-Wartungsversion
  gcloud sql instances patch INSTANCE_ID \
     --maintenance-version=MAINTENANCE_VERSION
  

Wenn Sie ein Lesereplikat angeben, wird eine Bestätigungsaufforderung angezeigt. Geben Sie Y ein, um fortzufahren, oder N, um den Vorgang abzubrechen.

  • Wenn Sie Y auswählen, wendet der Aktualisierungsprozess die angegebene Wartungsversion nur auf das angegebene Lesereplikat an.
  • Wenn Sie N auswählen, werden keine Instanzen aktualisiert.

Nach Abschluss des Updates der Instanz wird eine Meldung wie die folgende angezeigt:

  Patching Cloud SQL instance....done.
  Updated [https://sqladmin.googleapis.com/v1/projects/PROJECT_ID/instances/INSTANCE_ID]
  

Terraform

Verwenden Sie zum Erstellen einer Instanz eine Terraform-Ressource.

resource "google_sql_database_instance" "postgres_ssm_instance_name" {
  name                = "postgres-ssm-instance-name"
  region              = "asia-northeast1"
  database_version    = "POSTGRES_14"
  maintenance_version = "POSTGRES_14_4.R20220710.01_07"
  settings {
    tier = "db-f1-micro"
  }
  # set `deletion_protection` to true, will ensure that one cannot accidentally delete this instance by
  # use of Terraform whereas `deletion_protection_enabled` flag protects this instance at the GCP level.
  deletion_protection = false
}

Ä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

  1. Rufen Sie Cloud Shell auf.
  2. 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).

  1. 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 als main.tf bezeichnet.
    mkdir DIRECTORY && cd DIRECTORY && touch main.tf
  2. 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.

  3. Prüfen und ändern Sie die Beispielparameter, die auf Ihre Umgebung angewendet werden sollen.
  4. Speichern Sie die Änderungen.
  5. 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

  1. 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.

  2. 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.

  3. Ö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:

  1. Um den Löschschutz zu deaktivieren, setzen Sie in der Terraform-Konfigurationsdatei das Argument deletion_protection auf false.
    deletion_protection =  "false"
  2. 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
  1. 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 Projekt-ID
  • PROJECT_ID: Die Instanz-ID, die eine Lesereplikatinstanz sein kann
  • MAINTENANCE_VERSION: Die anzuwendende Cloud SQL-Softwarewartungsversion

HTTP-Methode und URL:

PATCH https://sqladmin.googleapis.com/v1/projects/PROJECT_ID/instances/INSTANCE_ID

JSON-Text anfordern:

{
  "maintenanceVersion": "MAINTENANCE_VERSION"
}

Wenn Sie die Anfrage senden möchten, maximieren Sie eine der folgenden Optionen:

Sie sollten in etwa folgende JSON-Antwort erhalten:

{
  "kind": "sql#operation",
  "targetLink": "https://sqladmin.googleapis.com/v1/projects/PROJECT_ID/instances/INSTANCE_ID",
  "status": "PENDING",
  "user": "user@example.com",
  "insertTime": "2020-01-16T02:32:12.281Z",
  "startTime": "08:00",
  "endTime": "08:01",
  "operationType": UPDATE,
  "name": "OPERATION_ID",
  "targetId": "PRIMARY_INSTANCE_ID",
  "selfLink": "https://sqladmin.googleapis.com/v1/projects/PROJECT_ID/operations/OPERATION_ID",
  "targetProject": "PROJECT_ID"
}

REST v1beta4

Ersetzen Sie diese Werte in den folgenden Anfragedaten:

  • PROJECT_ID: die Projekt-ID
  • INSTANCE_ID: Die Instanz-ID, die eine Lesereplikatinstanz sein kann
  • MAINTENANCE_VERSION: Die anzuwendende Cloud SQL-Softwarewartungsversion

HTTP-Methode und URL:

PATCH https://sqladmin.googleapis.com/sql/v1beta4/projects/PROJECT_ID/instances/INSTANCE_ID

JSON-Text anfordern:

{
  "maintenanceVersion": "MAINTENANCE_VERSION"
}

Wenn Sie die Anfrage senden möchten, maximieren Sie eine der folgenden Optionen:

Sie sollten in etwa folgende JSON-Antwort erhalten:

{
  "kind": "sql#operation",
  "targetLink": "https://sqladmin.googleapis.com/sql/v1beta4/projects/PROJECT_ID/instances/INSTANCE_ID",
  "status": "PENDING",
  "user": "user@example.com",
  "insertTime": "2020-01-16T02:32:12.281Z",
  "startTime": "08:00",
  "endTime": "08:01",
  "operationType": UPDATE,
  "name": "OPERATION_ID",
  "targetId": "INSTANCE_ID",
  "selfLink": "https://sqladmin.googleapis.com/sql/v1beta4/projects/PROJECT_ID/operations/OPERATION_ID",
  "targetProject": "PROJECT_ID"
}

Fehlerbehebung

Problem Fehlerbehebung
Ein Wartungsupdate kann nicht auf eine beendete Instanz angewendet werden. Starten Sie zur Behebung des Problems die Instanz, bevor Sie das Self-Service-Wartungsupdate ausführen.
Aufgrund eines Unterschieds in der Hauptversion der Datenbank ist das Wartungsupdate fehlgeschlagen.

Sie können die Self-Service-Wartung nicht verwenden, um die Hauptversion der Datenbank einer Instanz zu aktualisieren.

Verwenden Sie eines der folgenden Verfahren, um die Hauptversion einer Instanz zu aktualisieren:

Nächste Schritte