一、问题描述
异常1:
主从中断报错
Unable to partial resync with the slave for lack of backlog (Slave request was: 2595405802583).
异常2:
Discarding previously cached master state
异常3:
1:signal-handler (1619081683) Received SIGTERM scheduling shutdown...
1:S 22 Apr 2021 16:54:43.610 # User requested shutdown...
1:S 22 Apr 2021 16:54:43.610 # Redis is now ready to exit, bye bye...
二、解决方案
1.先将主从状态恢复,再查找前边shutdown的问题
config set client-output-buffer-limit 'slave 0 0 0'
config set repl-timeout 1200 (默认是60s,日志上显示加载一次7分钟就断开了)
config set repl-backlog-size 10485760 (默认1048576 1M,设置这个是为了避免psync的时候大小不足)
2.shutdown问题
这个目前定位是jedis的版本问题,可以升级jedis版本到2.4.x以上或者是更换成lettuce,或重写close方法,或在destroymethod=""
三、问题分析
1.主从断开的问题
replication buffer由client-output-buffer-limit slave设置,当这个值太小会导致主从复制链接断开: 当master-slave复制连接

本文详细探讨了Redis中遇到的三个异常:主从中断、缓存清除和shutdown请求。解决策略涉及调整client-output-buffer-limit、repl-timeout和repl-backlog-size,以及升级jedis版本或重构close方法。分析深入到主从复制原理与shutdown问题的根源,提供了针对性的解决路径。

2333

被折叠的 条评论
为什么被折叠?



