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 |
|
|
|
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
RUNNABLEist. 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_failoverTRUEist.
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
DONEerreicht, fragt das Backend für Fault Injection Testing die Vorgangsfehler ab, versetzt das Experiment in den StatusSTOPPINGund 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.