开发者学堂课程【Redis 入门到精通(进阶篇):主从复制-常见问题(1)】学习笔记与课程紧密联系,让用户快速学习知识
课程地址:https://developer.aliyun.com/learning/course/765/detail/13458
主从复制-常见问题(1)
目录
一,频繁的全量复制(1)
二,频繁的全量复制(2)
本章主要讲解主从复制常见问题中的频繁全量复制
一,频繁的全量复制(1)
1.伴随着系统的运行,master 的数据量会越来越大,一旦 master 重启,runid 将发生变化,会导致全部 slave 的全量复制操作
2.内部优化调整方案:
(1).master 内部创建 master replid 变量,使用 runid 相同的策略生成,长度41位,并发送给所有 slave
(2).在 master 关闭时执行命令 shutdowm save,进行 RDB 持久化,将 runid 与 offset 保存到 RDB 文件中
①.repl-id repl-offset
②.通过 redis-check-rdb 命令可以查看该信息
(3).master 重启后加载 RDB 文件,恢复数据
重启后,将 RDB 文件中保存的 repl-id与repl-offset 加载到内存中
①.master repl id = repl. master repl offset = repl-offset
②.通过 info 命令可以查看该信息
3.作用:
本机保存上次 runid,重启后恢复该值,使所有 slave 认为还是之前的 master。
二,频繁的全量复制(2)
1.问题现象
网络环境不佳,出现网络中断,slave 不提供服务
2.问题原因
复制缓冲区过小,断网后 slave 的 offset 越界,触发全量复制
3.最终结果
slave 反复进行全量复制
4.解决方案
修改复制缓冲区大小
rep1-backlog-size
5.建议设置如下:
(1).测算从 master 到 slave 的重连平均时长 second
(2).获取master平均每秒产生写命令数据总量 write_size_per_second
(3).最优复制缓冲区空间=2* second * write size per second