Legacy-Konfiguration für Hochverfügbarkeit

Auf dieser Seite wird die Legacy-Konfiguration einer MySQL-Instanz für Hochverfügbarkeit (High Availability, HA) erläutert.

Bei einer Legacy-HA-Konfiguration verwendet eine Cloud SQL for MySQL-Instanz ein Failover-Replikat, um der Instanz Hochverfügbarkeit zu verleihen. Diese Funktion ist in der Google Cloud Console nicht verfügbar. Die empfohlene Konfiguration nutzt keine Failover-Replikate. Stattdessen werden die regionalen nichtflüchtigen Speicher von Google verwendet, die Daten auf Blockebene zwischen zwei Zonen in einer Region synchron replizieren.

Weitere Informationen zur aktuellen Konfiguration für Hochverfügbarkeit finden Sie unter Hochverfügbarkeit konfigurieren – Übersicht.

Instanz von Legacy-Version auf aktuelle Hochverfügbarkeit aktualisieren

So aktualisieren Sie Ihre Instanz von der Legacy-Konfiguration auf die neue Hochverfügbarkeitskonfiguration:

  1. Löschen Sie das Failover-Replikat auf den MySQL-Instanzen, die Sie aktualisieren möchten. Weitere Informationen finden Sie unter Hochverfügbarkeit für eine Instanz deaktivieren.
  2. Konfigurieren Sie die Instanz so, dass sie die aktuelle Version der Hochverfügbarkeit verwendet. Weitere Informationen finden Sie unter Bestehende Instanz für Hochverfügbarkeit konfigurieren.

Legacy-Konfiguration: Neue Instanz für Hochverfügbarkeit erstellen

Wenn Sie eine Instanz erstellen und sie für Hochverfügbarkeit konfigurieren können, erstellt Cloud SQL das Failover-Replikat zur selben Zeit wie die primäre Instanz. Das Legacy-Feature ist in der Google Cloud Console nicht verfügbar. Verwenden Sie stattdessen die gcloud CLI- oder cURL-Befehle.

Eine Instanz mit konfigurierter Hochverfügbarkeit erstellen:

gcloud

  1. Erstellen Sie die primäre Instanz und das zugehörige Failover-Replikat:
    gcloud sql instances create PRIMARY_INSTANCE_NAME \
    --backup-start-time=BACKUP_WINDOW_START_TIME \
    --failover-replica-name=FAILOVER_REPLICA_NAME \
    --cpu=CPU \
    --database-version=DATABASE_VERSION \
    --memory=MEMORY \
    --enable-bin-log

    Die Startzeit des Sicherungszeitraums hat das Format HH:MM.

    Ersetzen Sie den Platzhalter DATABASE_VERSION durch MySQL 5.6 oder MySQL 5.7 (--database-version=MYSQL_5_6 oder
    --database-version=MYSQL_5_7).

    Wenn Sie für den Parameter database-version keine Version angeben, wird standardmäßig MySQL 8.0 ausgewählt. Die Legacy-Konfiguration für Hochverfügbarkeit für MySQL unterstützt Version 8.0 nicht.

    Die vollständige Liste der verfügbaren Parameter finden Sie auf der Referenzseite für gcloud sql instances create.

  2. Konfigurieren Sie den Root-Nutzer auf der primären Instanz:
    gcloud sql users set-password root --host=% \
    --instance PRIMARY_INSTANCE_NAME \
    --password PASSWORD

    Das Failover-Replikat wird mit denselben CPU- und Arbeitsspeicherressourcen wie die primäre Instanz erstellt. Sie können die CPU- und Arbeitsspeicherressourcen des Failover-Replikats später ändern, sie müssen jedoch mindestens so groß wie die primäre Instanz sein.

curl

  1. Erstellen Sie die primäre Instanz und das zugehörige Failover-Replikat:
    gcloud auth login
    ACCESS_TOKEN="$(gcloud auth print-access-token)"
    curl --header "Authorization: Bearer ${ACCESS_TOKEN}" \
         --header 'Content-Type: application/json' \
         --data '{"name":"PRIMARY_INSTANCE_NAME", "region":"REGION",
                  "settings": {
                               "tier":"MACHINE_TYPE",
                               "backupConfiguration": {"binaryLogEnabled": true, "enabled": true}},
                               "failoverReplica": {"name": "FAILOVER_REPLICA_NAME"}}' \
         -X POST \
         https://www.googleapis.com/sql/v1beta4/projects/PROJECT-ID/instances
    Die vollständige Liste der Parameter für die Anfrage finden Sie auf der Seite instances:insert.
  2. Wenn die Initialisierung der primären Instanz abgeschlossen ist, aktualisieren Sie das Root-Passwort auf der primären Instanz:
    gcloud auth login
    ACCESS_TOKEN="$(gcloud auth print-access-token)"
    curl --header "Authorization: Bearer ${ACCESS_TOKEN}" \
         --header 'Content-Type: application/json' \
         --data '{"name": "root", "host": "%", "password": "ROOT_PASSWORD"}' \
         'https://www.googleapis.com/sql/v1beta4/projects/PROJECT-ID/instances/INSTANCE_NAME/users?host=%25&name=root'
    Diese Änderung wird automatisch für das Replikat übernommen.

Legacy-Konfiguration: Eine bestehende Instanz für Hochverfügbarkeit konfigurieren

Während des Konfigurierens einer vorhandenen Instanz für Hochverfügbarkeit kommt es zu einer Ausfallzeit von einigen Minuten.

So konfigurieren Sie eine vorhandene Instanz für Hochverfügbarkeit:

gcloud

  1. Prüfen Sie den Status der primären Instanz:
    gcloud sql instances describe PRIMARY_INSTANCE_NAME

    Wenn das Attribut databaseReplicationEnabled den Wert true hat, ist die Instanz ein Replikat. Für ein Replikat können Sie kein Failover-Replikat erstellen.

  2. Wenn das Attribut enabled unter backupConfiguration den Wert false hat, aktivieren Sie jetzt die Sicherungen für die primäre Instanz:
    gcloud sql instances patch PRIMARY_INSTANCE_NAME \
    --backup-start-time HH:MM

    Der Parameter backup-start-time wird im 24-Stunden-Format in der Zeitzone UTC±00 angegeben und definiert den Beginn eines vierstündigen Sicherungszeitraums. Die Sicherungen können zu einem beliebigen Zeitpunkt innerhalb dieses Sicherungszeitraums gestartet werden.

  3. Wenn das Attribut binaryLogEnabled den Wert false hat, aktivieren Sie das binäre Logging:
    gcloud sql instances patch PRIMARY_INSTANCE_NAME \
    --enable-bin-log

    Nach der Aktivierung der binären Logs wird die Instanz neu gestartet.

  4. Erstellen Sie das Replikat:
    gcloud sql instances create FAILOVER_REPLICA_NAME \
    --master-instance-name=PRIMARY_INSTANCE_NAME \
    --replica-type=FAILOVER

curl

  1. Prüfen Sie den Status der primären Instanz:
    gcloud auth login
    ACCESS_TOKEN="$(gcloud auth print-access-token)"
    curl --header "Authorization: Bearer ${ACCESS_TOKEN}" \
         -X GET \
         https://www.googleapis.com/sql/v1beta4/projects/PROJECT-ID/instances/PRIMARY_INSTANCE_NAME?fields=settings

    Die Ausgabe enthält die backupConfiguration. Beispiel:

    "backupConfiguration": {
        "kind": "sql#backupConfiguration",
        "startTime": "12:00",
        "enabled": true,
        "binaryLogEnabled": true
    }
    
  2. Wenn entweder enabled oder binaryLogEnabled den Wert false hat, verwenden Sie die Methode patch der Instanzressource, um beide Parameter zu aktivieren. Legen Sie die Attribute der Sicherungskonfiguration fest, die Sie beibehalten bzw. ändern möchten.

    Legen Sie für enabled den Wert true fest und geben Sie als Wert für startTime den Beginn des Sicherungszeitraums an, um die Sicherungen zu aktivieren. Legen Sie für binaryLogEnabled den Wert true fest, um das binäre Logging zu aktivieren.

    gcloud auth login
    ACCESS_TOKEN="$(gcloud auth print-access-token)"
    curl --header "Authorization: Bearer ${ACCESS_TOKEN}" \
         --header 'Content-Type: application/json' \
         --data '{"settings" : {"backupConfiguration" : {"startTime": "HH:MM", "enabled": true, "binaryLogEnabled": true}}}' \
         -X PATCH \
         https://www.googleapis.com/sql/v1beta4/projects/PROJECT-ID/instances/PRIMARY_INSTANCE_NAME/
  3. Erstellen Sie mit der Methode insert der Instanzenressource das Failover-Replikat:

    gcloud auth login
    ACCESS_TOKEN="$(gcloud auth print-access-token)"
    curl --header "Authorization: Bearer ${ACCESS_TOKEN}" \
         --header 'Content-Type: application/json' \
         --data '{"name": "REPLICA_NAME", "masterInstanceName": "PRIMARY_INSTANCE_NAME",
                  "region": "PRIMARY_IMSTANCE_REGION", "databaseVersion": "PRIMARY_DATABASE_VERSION",
                  "replicaConfiguration": {"failoverTarget": true},
                  "settings": {"tier":"MACHINE_TYPE"}}' \
         -X POST \
         https://www.googleapis.com/sql/v1beta4/projects/PROJECT-ID/instances

    MACHINE_TYPE muss mindestens so groß wie der Maschinentyp der primären Instanz sein.

Failover auslösen

Der Test des Failovers ist optional. Er wird jedoch empfohlen, damit Sie wissen, wie Ihre Anwendung auf ein Failover reagiert.

Weitere Informationen zu Failovers finden Sie unter Failover – Übersicht.

gcloud

Failover initialisieren:

gcloud sql instances failover PRIMARY_INSTANCE_NAME

curl

  1. Beschreiben Sie die primäre Instanz, um den Wert des Felds settingsVersion zu erhalten.
    gcloud auth login
    ACCESS_TOKEN="$(gcloud auth print-access-token)"
    curl --header "Authorization: Bearer ${ACCESS_TOKEN}" \
         -X GET \
         https://www.googleapis.com/sql/v1beta4/projects/PROJECT-ID/instances/PRIMARY_INSTANCE_NAME
  2. Initialisieren Sie den Failover:
    gcloud auth login
    ACCESS_TOKEN="$(gcloud auth print-access-token)"
    curl --header "Authorization: Bearer ${ACCESS_TOKEN}" \
         --header 'Content-Type: application/json' \
         --data '{"failoverContext":{"settingsVersion":"SETTINGS_VERSION"}}' \
         -X POST \
         https://www.googleapis.com/sql/v1beta4/projects/PROJECT-ID/instances/PRIMARY_INSTANCE_NAME/failover

Die Instanz kann während des Failovers einige Minuten keine Daten bereitstellen.

Legacy-Konfiguration: Benachrichtigung über Replikationsverzögerung erstellen

Die Zeit, die ein Failover-Vorgang beansprucht, hängt von der Replikationsverzögerung bei der Initialisierung des Failovers ab. Sie können Cloud Monitoring in der Google Cloud Console verwenden, um sich benachrichtigen zu lassen, wenn die Replikationsverzögerung einen Schwellenwert überschreitet.

Weitere Informationen über Replikationsverzögerungen erhalten Sie in der MySQL-Dokumentation auf der Seite SHOW SLAVE STATUS Syntax, indem Sie nach "seconds_behind_master" suchen.

Weitere Informationen zu Cloud Monitoring finden Sie in der Cloud Monitoring-Dokumentation.

Legacy-Konfiguration: Benachrichtigung für ein bestimmtes Failover-Replikat einstellen

  1. Wählen Sie im Navigationsbereich der Google Cloud Console Monitoring und anschließend Benachrichtigungen aus.
  2. Klicken Sie auf Benachrichtigungsrichtlinie erstellen.
  3. Geben Sie für die Benachrichtigung einen aussagekräftigen Namen ein.
  4. Wählen Sie Messwertschwelle aus und klicken Sie auf Weiter, um den zugehörigen Tab zu öffnen.
  5. Wählen Sie Cloud SQL als Ressourcentyp aus.
  6. Wählen Sie unter Gilt für die Option Einzeln und dann Ihr Failover-Replikat aus.
  7. Klicken Sie auf Weiter, um den Konfigurations-Tab zu öffnen.
  8. Geben Sie die folgenden Werte ein:

    Feld Wert
    Wenn Messwert Sekunden nach Master
    Bedingung darüber
    Grenzwerte 120 (oder ein anderer, für Ihre Umgebung geeigneter Wert)
    Für 3 Minuten

  9. Wählen Sie die Methoden der Benachrichtigung aus und klicken Sie auf Bedingung speichern.

Legacy-Konfiguration: Benachrichtigung für eine Gruppe von Failover-Replikaten festlegen

Wenn Sie innerhalb eines Projekts mehrere Failover-Replikate erstellen, ist es einfacher, die Benachrichtigung für die gesamte Gruppe als für jedes einzelne Replikat zu konfigurieren. Erweitern Sie die Namen der Failover-Replikate um ein Suffix wie "-failover", um eine Gruppe für die Überwachung zu erstellen. Achten Sie darauf, dass dieses Suffix nicht für andere Cloud SQL-Instanzen verwendet wird.

Gruppe von Failover-Replikaten erstellen:

  1. Rufen Sie in der Google Cloud Console die Seite Monitoring auf.

    Zu Monitoring

  2. Wählen Sie in der oberen Menüleiste Gruppen > Erstellen... aus.
  3. Geben Sie einen aussagekräftigen Namen für die Gruppe ein.
  4. Lassen Sie Name und Enthält aktiviert und geben Sie Ihren Teilstring für den Namen ein.
  5. Klicken Sie auf Gruppe speichern. Es wird eine Übersichtsseite der neuen Gruppe geöffnet.
  6. Prüfen Sie, ob alle erwarteten Instanzen in der Gruppe enthalten sind.

Benachrichtigung für Failover-Replikatgruppen erstellen:

  1. Wählen Sie im Navigationsbereich der Google Cloud Console Monitoring und anschließend Benachrichtigungen aus.
  2. Klicken Sie auf Benachrichtigungsrichtlinie erstellen.
  3. Geben Sie für die Gruppenbenachrichtigung einen aussagekräftigen Namen ein.
  4. Wählen Sie Messwertschwelle aus und klicken Sie auf Weiter, um den zugehörigen Tab zu öffnen.
  5. Wählen Sie Cloud SQL als Ressourcentyp aus.
  6. Wählen Sie unter Gilt für die Option Gruppe und dann Ihre Failover-Gruppe aus.
  7. Lassen Sie Verstoß bei jedem Mitglied aktiviert und klicken Sie auf Weiter, um den Konfigurations-Tab zu öffnen.
  8. Die folgenden Werte eingeben:

    Feld Wert
    Wenn Messwert Sekunden nach Master
    Bedingung darüber
    Grenzwerte 120 (oder ein anderer, für Ihre Umgebung geeigneter Wert)
    Für 3 Minuten

  9. Wählen Sie die gewünschten Methoden der Benachrichtigung aus und klicken Sie auf Bedingung speichern.

Legacy-Konfiguration: Hochverfügbarkeit für eine Instanz deaktivieren

Sie müssen die Failover-Replikatinstanz löschen, um Hochverfügbarkeit aus der primären Instanz zu entfernen.

Bestätigen Sie vor dem Ausführen dieser Schritte, dass derzeit keine Vorgänge für die primäre Instanz ausgeführt werden.

So deaktivieren Sie Hochverfügbarkeit:

Console

  1. Wechseln Sie in der Google Cloud Console zur Seite Cloud SQL-Instanzen.

    Cloud SQL-Instanzen aufrufen

  2. Wählen Sie die Failover-Instanz aus, die der Instanz zugeordnet ist, für die Sie Hochverfügbarkeit deaktivieren möchten.
  3. Klicken Sie auf der Seite Instanzdetails auf LÖSCHEN.
  4. Geben Sie im Fenster Replikat löschen den Namen der Failover-Instanz noch einmal ein.
  5. Klicken Sie auf löschen. Die Konfiguration für die ursprüngliche Instanz ändert sich in zonal.

gcloud

Weitere Informationen finden Sie unter gcloud sql instances delete.
gcloud sql instances delete FAILOVER_REPLICA_NAME

curl

In der folgenden Anfrage wird mit der Methode instances:delete die Instanz gelöscht:
gcloud auth login
ACCESS_TOKEN="$(gcloud auth print-access-token)"
curl --header "Authorization: Bearer ${ACCESS_TOKEN}" \
     --header 'Content-Type: application/json'\
      -X DELETE\
https://www.googleapis.com/sql/v1beta4/projects/PROJECT-ID/instances/INSTANCE_NAME

Nächste Schritte