Replikasyon kopmasını ve sonsuz full resync döngüsünü çöz (backlog, replica buffer)
RedisReplikasyonKomut
INFO replication
# Master: connected_slaves, slaveN:...,state=online,offset=,lag= Replika: master_link_status, master_last_io_seconds_ago, master_sync_in_progress
INFO stats
# sync_full / sync_partial_ok / sync_partial_err: tekrarlayan full sync = backlog yetersiz
CONFIG GET repl-backlog-size
CONFIG SET repl-backlog-size 256mb
# Full sync sirasinda replika buffer'i limiti asarsa baglanti kopar ve sync bastan baslar:
CONFIG GET client-output-buffer-limit
CONFIG SET client-output-buffer-limit "replica 1gb 512mb 120"Ne yapar?
Master ve replika tarafında link durumunu, offset farkını ve partial/full sync sayaçlarını gösterir; kısa kopmaların full sync'e dönmemesi için replication backlog'u, full sync'in yarıda kesilmemesi için replica output buffer limitini büyütür.
Ne zaman kullanılır?
Replika sürekli 'MASTER <-> REPLICA sync started' döngüsüne girdiğinde, sync_full sayacı arttığında veya master log'unda 'scheduled to be closed ASAP for overcoming of output buffer limits' görüldüğünde.
Dikkat
Her full sync master'da fork + RDB üretimi demektir; döngü master'ın belleğini ve diskini zorlar. repl-backlog-size master belleğinden ayrılır. Replica buffer limitini büyütmek, full sync sırasında master'da o kadar ek bellek kullanılabileceği anlamına gelir; maxmemory hesabına dahil et. Değişiklikleri kalıcı yapmak için CONFIG REWRITE veya redis.conf gerekir.