场景风险不清空数据 + 全量同步主节点 RDB 数据与从节点旧数据混合,导致键覆盖、过期时间错乱等问题。不清空数据 + 部分同步仅当复制 ID 和偏移量匹配时安全,否则数据可能不完整或逻辑冲突。
如何避免全量同步(减少清库开销)
(1) 合理配置
repl-backlog-size
复制代码
增大主节点的复制积压缓冲区(默认 1MB),允许更长时间的断线后仍能触发部分同步:
# 主节点配置(redis.conf)
repl-backlog-size 64mb # 根据业务写入量调整
复制代码
(2) 避免频繁主从切换
减少主节点故障转移次数(如优化 Sentinel 参数
down-after-milliseconds
复制代码
),避免复制 ID 变更。
(3) 持久化复制 ID 和偏移量
从节点重启时,若复制 ID 和偏移量仍有效,可触发部分同步:
# 从节点配置(redis.conf)
repl-diskless-sync no # 启用磁盘备份(默认)
复制代码
示例:同步流程的日志分析
(1) 全量同步日志
# 主节点日志[19042] 01 Jan 12:00:00.123 * Replica 127.0.0.1:6380 asks for synchronization[19042] 01 Jan 12:00:00.123 * Full resync requested by replica 127.0.0.1:6380[19042] 01 Jan 12:00:00.123 * Starting BGSAVE for SYNC with target: disk
# 从节点日志[19043] 01 Jan 12:00:00.125 * MASTER <-> REPLICA sync started[19043] 01 Jan 12:00:00.125 * MASTER <-> REPLICA sync: Flushing old data[19043] 01 Jan 12:00:00.125 * MASTER <-> REPLICA sync: Loading DB in memory
复制代码
(2) 部分同步日志
# 主节点日志[19042] 01 Jan 12:00:00.123 * Replica 127.0.0.1:6380 requests partial resynchronization[19042] 01 Jan 12:00:00.123 * Partial resynchronization request accepted
# 从节点日志[19043] 01 Jan 12:00:00.125 * MASTER <-> REPLICA sync: Master accepted a Partial Resynchronization