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_SourceSQL 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 offset2. 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_ErrorPostgreSQL
SELECT status, last_msg_receipt_time, latest_end_lsn FROM pg_stat_wal_receiver; -- on the standbyOracle
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.