한국어English日本語简体中文繁體中文DeutschไทยTiếng ViệtРусскийPortuguês (Brasil)EspañolBahasa Indonesia

Game-Lag-Whitepaper › L12 Datenbank

DB-Failover Database failover

Ursachen-ID db-failover · Hauptzuständig DB-Infrastruktur (Infrastrukturteam) · Beteiligt Server-Entwicklung (Entwicklungsteam)

In der interaktiven Fassung mit Grafiken und Experimenten öffnen →

Fällt die Primär-DB aus und wird auf die Reserve-DB umgeschaltet, sind währenddessen keine Schreibvorgänge möglich, und die letzten noch nicht replizierten Daten können verloren gehen.

Warum Primär-DB fällt aus, die Reserve-DB wird zur Primär-DB hochgestuft → Folge Während der Umschaltung einige Sekunden bis einige Minuten keine Schreibvorgänge möglich, bei asynchroner Replikation droht Verlust nicht replizierter Daten → Auf dem Bildschirm Kurzzeitig schlägt jedes Speichern fehl, Rollback von Items und Erfahrungspunkten

Symptome
Verschluckte Aktion / Rollback, Freeze, Verbindungsabbruch, Kein Login / Endlos-Laden
Faktoren
Stillstand, Paketverlust
Wer ist betroffen
Ganzer Server
Wann
Gelegentlich, zufällig
Zuständigkeit
Hauptzuständig DB-Infrastruktur (Infrastrukturteam) · Beteiligt Server-Entwicklung (Entwicklungsteam)
Aufgaben Entwicklungsteam
Speichern wiederholbar gestalten, abgerissene Verbindungen schnell verwerfen und zur neuen Adresse neu aufbauen lassen (Einstellungen von Connection-Pool und DNS-Cache), bei Failover-Übungen den Reconnect prüfen.
Aufgaben Infrastrukturteam
Synchrone oder semisynchrone Replikation einsetzen (kostet Schreiblatenz), Failover regelmäßig üben, Failover-Dauer und Replikationsverzögerung überwachen.
Größenordnungen
Das automatische Failover verwalteter Datenbanken dauert meist einige Dutzend Sekunden bis 2 Minuten. Bei asynchroner Replikation können die jüngsten Speicherstände im Umfang der Replikationsverzögerung (unter 1 s bis einige Sekunden) verloren gehen.
Im Graphen
Verbindungen brechen gleichzeitig ab · DB-Verbindungen, Schreibfehler
Wo nachsehen
Failover-Protokoll der DB (bei RDS die Events RDS-EVENT-0013 Failover gestartet und RDS-EVENT-0049 Failover abgeschlossen, bei selbst betriebenen DBs das Promotion-Log) zusammen mit DB-Verbindungen und Verbindungsfehlern der Spielserver in einen Graphen legen. Bei asynchroner Replikation auch die Replikationsverzögerung direkt vor dem Ausfall prüfen (RDS ReplicaLag, replay_lag in PostgreSQL pg_stat_replication)
Spricht dafür
Fehlgeschlagenes Speichern ballt sich in einem Zeitraum zwischen Beginn und Ende des Failovers. Der zurückgesetzte Umfang entspricht etwa der Replikationsverzögerung direkt vor dem Ausfall. Spielserver, bei denen die Fehler nach Abschluss des Failovers weitergehen, nutzen noch Verbindungen zur alten Adresse
Spricht dagegen
Verbindungsabbrüche zu Zeiten ohne Failover-Eintrag: eher Netzwerk oder überlastete DB
Prüfmittel
Mit Infrastruktur-Tools prüfbar (ohne Spielcode)
Reale Fälle
Riot Games 2021: League of Legends EUW, 5-stündiger Ausfall: Eine einzige Neben-DB legt den ganzen Server lahm

Quellen

  1. Failing over a Multi-AZ DB instance for Amazon RDS AWS
    Multi-AZ-Failover dauert meist 60–120 s, danach müssen Verbindungen neu aufgebaut werden; empfohlen wird eine DNS-Cache-TTL der JVM von höchstens 60 s
  2. High availability for Amazon Aurora AWS
    Während des Ausfalls schlagen Lese- und Schreibzugriffe fehl, die Wiederherstellung erfolgt meist innerhalb von 60 s (oft innerhalb von 30 s)
  3. Semisynchronous Replication MySQL
    Bei asynchroner Replikation können committete Transaktionen auf dem Replikat fehlen, wenn die Primär-DB ausfällt; semisynchrone Replikation wartet auf die Empfangsbestätigung eines Replikats und verringert so das Risiko, erhöht aber die Latenz
  4. Log-Shipping Standby Servers (PostgreSQL Documentation) PostgreSQL
    Log-Shipping ist asynchron, beim Ausfall des Primärservers gehen noch nicht übertragene Transaktionen verloren; die Verzögerung der Streaming-Replikation liegt meist unter 1 s
  5. Amazon RDS event categories and event messages AWS
    RDS-EVENT-0013: Multi-AZ-Failover gestartet, RDS-EVENT-0049: Multi-AZ-Failover abgeschlossen
  6. Amazon CloudWatch metrics for Amazon RDS AWS
    ReplicaLag: Zeit, um die ein Lesereplikat hinter der Quelle zurückliegt (s)
  7. The Cumulative Statistics System (PostgreSQL Documentation) PostgreSQL
    replay_lag in pg_stat_replication: Zeit vom Schreiben des WAL auf dem Primärserver, bis das Replikat meldet, es angewendet zu haben

Verwandte Ursachen

Gleiche Schicht: L12 Datenbank

Ursachen aus anderen Schichten mit demselben Symptom (Verschluckte Aktion / Rollback)

Karte in der interaktiven Fassung mit Grafiken und Experimenten ansehen