Referenz zu Cloud SQL-Failover-Fehlern

Auf dieser Seite wird beschrieben, was bei einem Test mit dem Cloud SQL-Fehlertyp „Failover“ passiert.

Funktionsweise des Cloud SQL-Fehlers „Failover“

Der Cloud SQL-Fehler „Failover“ löst ein Hochverfügbarkeits-Failover für eine Cloud SQL-Instanz aus, indem die Methode failover in der Cloud SQL Admin API aufgerufen wird. Mit diesem Fehler können Sie das Verhalten und die Stabilität Ihres Dienstes testen, wenn die primäre Cloud SQL-Instanz zur Stand-by-Instanz in einer anderen Zone innerhalb derselben Region wechselt.

Das Ziel für diesen Fehler ist eine Cloud SQL-Instanz.

Was passiert während der Testausführung?

Im Laufe des Tests durchlaufen die beteiligten Ressourcen die folgenden Änderungen.

Ressource

PREPARING

INJECTING

REVERTING

Instanz

Keine

HA-Stand-by-Instanz hochstufen

Nicht zutreffend

HA-Failover-Validierung und -Wiederholungen

Das Backend für Fault Injection Testing führt Validierungsprüfungen durch, bevor das Failover initiiert wird, um sicherzustellen, dass die Umgebung geeignet ist. Dieser Vorgang findet in der Phase INJECTING statt, bevor der API-Aufruf sqladmin.instances.failover an die Cloud SQL-Steuerungsebene gesendet wird:

  • Das System prüft, ob der Status der Cloud SQL-Instanz RUNNABLE ist. Wenn die Instanz während eines laufenden Tests einen anderen Status hat, werden Sie von Fault Injection Testing benachrichtigt.
  • Es wird geprüft, ob der Messwert cloudsql.googleapis.com/database/available_for_failover TRUE ist.

Wenn diese Bedingungen nicht erfüllt sind, wird die Failover-Anfrage zur Wiederholung in die Warteschlange gestellt.

Fehlerbehandlung

Wenn das Failover bereits ausgeführt wird oder ein Fehler auftritt:

  • Während der Injektion:Wenn der Failover-Aufruf von der Cloud SQL-Steuerungsebene abgelehnt wird (z. B. wenn die Stand-by-Instanz fehlerhaft ist), wechselt der Test in den Status STOPPING.
  • Monitoring nach dem Failover:Wenn der Failover-Vorgang innerhalb einer vorgegebenen Dauer von 10 Minuten nicht den Status DONE erreicht, fragt das Backend für Fault Injection Testing die Vorgangsfehler ab, versetzt das Experiment in den Status STOPPING und kennzeichnet das Experiment als fehlerhaft.

Fault Injection Testing verwendet die Cloud SQL-Steuerungsebene als Quelle der Wahrheit. Die Steuerungsebene lehnt jeden Failover-Versuch ab, wenn die Stand-by-Instanz fehlerhaft ist. Fault Injection Testing verwendet Vorabprüfungen und Statusüberwachung, um diese Fehler zu vermeiden oder zu melden, anstatt nach einer Ablehnung automatische Wiederholungen zu versuchen.

Manuelles Failback

Da das Failover eine zustandsbehaftete Änderung ist, wird durch das Beenden des Tests nicht automatisch ein Failback zur ursprünglichen primären Instanz ausgeführt (wie durch „Nicht zutreffend“ in der Phase REVERTING angegeben). Die Datenbank wird weiterhin in der sekundären Zone ausgeführt.

Wenn Sie die Instanz nach Abschluss des Tests wieder in die ursprüngliche Zone zurückversetzen möchten, müssen Sie über die Google Cloud Console oder die gcloudBefehlszeile ein weiteres Failover manuell initiieren.