DBAtlas · Atlas für Datenbankbetrieb

Replikationsverzögerung / gestoppt

Symptom

Die Standby/Replica fällt zurück oder ist ganz stehen geblieben; Read Replicas zeigen veraltete Daten.

1. Wie groß ist der Lag, und wächst er oder bleibt er konstant

Wie groß ist der Lag in Sekunden/Bytes? Ist es ein konstanter Versatz oder wächst er ständig? Wächst er, kommt die Replica beim Apply nicht hinterher; ist er konstant, gab es einen kurzzeitigen Stillstand.

Oracle

SELECT name, value, unit FROM v$dataguard_stats WHERE name LIKE '%lag%';

PostgreSQL

SELECT client_addr, state, write_lag, flush_lag, replay_lag FROM pg_stat_replication;

MySQL

SHOW REPLICA STATUS\G  -- Seconds_Behind_Source

SQL Server

SELECT ar.replica_server_name, drs.redo_queue_size, drs.log_send_queue_size FROM sys.dm_hadr_database_replica_states drs JOIN sys.availability_replicas ar ON drs.replica_id=ar.replica_id;

Redis

INFO replication  # master_repl_offset vs slave offset

2. Läuft die Replikation, gibt es Fehler

Wie ist der Zustand des IO-/SQL-Threads und des Apply-Prozesses, ist die Verbindung abgerissen? Gibt es einen Fehler (z. B. kollidierende Zeile, fehlende Tabelle), ist das Apply gestoppt; lies die Fehlermeldung.

MySQL

SHOW REPLICA STATUS\G  -- Replica_IO_Running / Replica_SQL_Running / Last_Error

PostgreSQL

SELECT status, last_msg_receipt_time, latest_end_lsn FROM pg_stat_wal_receiver;  -- on the standby

Oracle

SELECT process, status, sequence#, thread# FROM v$managed_standby WHERE process LIKE 'MRP%' OR process LIKE 'RFS%';

3. Den Engpass finden

Warum kommt sie nicht hinterher? Single-Threaded Apply plus hohe Schreiblast (PG/MySQL wenden meist seriell an), ein I/O-Engpass auf der Standby, das Netzwerk oder eine lange Abfrage, die das Apply blockiert (PG hot_standby_feedback / Recovery-Konflikt)?

4. Den Lag abbauen

Apply beschleunigen: paralleles Apply aktivieren (MySQL replica_parallel_workers – vor 8.0.26 slave_parallel_workers; PG hat keines, aber es gibt Recovery-Einstellungen), die I/O der Standby verbessern, die Abfrage auflösen, die das Apply blockiert. Ist sie mit einem Fehler stehen geblieben: Fehler beheben (kollidierende Zeile manuell auflösen) und die Replikation fortsetzen.

5. Neu aufbauen, wenn sie defekt ist

Liegt die Replica weit zurück oder ist sie defekt, ist eine Neusynchronisation am saubersten: Baue die Standby aus einem frischen Backup neu auf (PG pg_basebackup, MySQL clone/xtrabackup, Oracle RMAN duplicate). Wichtig: Finde vor dem Neuaufbau die Ursache, sonst passiert es wieder.

In DBAtlas öffnen →