DBAtlas · Atlas für Datenbankbetrieb

Replikationsabbrüche und eine endlose Full-Resync-Schleife beheben (Backlog, Replica-Puffer)

RedisReplikation

Befehl

INFO replication
# Master: connected_slaves, slaveN:...,state=online,offset=,lag=  Replica: master_link_status, master_last_io_seconds_ago, master_sync_in_progress
INFO stats
# sync_full / sync_partial_ok / sync_partial_err: repeated full syncs = backlog too small
CONFIG GET repl-backlog-size
CONFIG SET repl-backlog-size 256mb
# If the replica buffer exceeds its limit during a full sync, the link drops and sync starts over:
CONFIG GET client-output-buffer-limit
CONFIG SET client-output-buffer-limit "replica 1gb 512mb 120"

Was es tut

Zeigt auf Master und Replica Verbindungsstatus, Offset-Differenz und Zähler für Partial/Full Sync; vergrößert den Replikations-Backlog, damit kurze Verbindungsabbrüche nicht zu Full Syncs werden, und das Output-Buffer-Limit der Replica, damit eine Full Sync nicht mittendrin abbricht.

Wann einsetzen

Wenn eine Replica ständig in 'MASTER <-> REPLICA sync started' kreist, der Zähler sync_full wächst oder das Master-Log 'scheduled to be closed ASAP for overcoming of output buffer limits' zeigt.

Vorsicht

Jede Full Sync bedeutet einen Fork + RDB-Erzeugung auf dem Master; die Schleife belastet Speicher und Platte des Masters. repl-backlog-size wird aus dem Speicher des Masters belegt. Ein höheres Replica-Pufferlimit bedeutet, dass der Master während einer Full Sync entsprechend mehr Speicher nutzen kann; beziehe das in die maxmemory-Berechnung ein. Für dauerhafte Änderungen ist CONFIG REWRITE oder redis.conf nötig.

In DBAtlas öffnen →

Verwandte Einträge