频繁的全量复制(一)
伴随着系统的运行,master的数据会越来越大,一旦master重启,runid将发生变化,会导致所有的slave进行全量复制
内部优化调整方案:
- master 内部创建master_replid变量,使用runid相同的策略生成,长度41位,并发送给左右的slave
- 在master关闭时执行命令shutdown save,进行RDB持久化,将runid和offset存储到RDB文件中
- repl-id repl-offset
- 通过redis-check-rdb命令可以查看该信息
- master重启后加载RDB文件,恢复数据
重启后,将RDB文件中保存的repl-id与repl-offset加载到内存中master_repl_id = repl-id
master_repl_offset=repl-offset
通过info命令可以查看该信息
作用:本机保存上次runid,重启后恢复该值,使所有slave认为还是之前的master
频繁全量复制(二)
- 问题现象
- 网络环境不佳,出现网络中断,slave不提供服务
- 问题原因
- 复制缓存区过小,断网后slave的offset越界,出发全量复制
- 最终结果
- slave反复进行全量复制
- 解决方案
- 修改缓冲区大小
repl-backlog-size
- 建议设置如下
- 测算从master到slave重连的平均时长second
- 获