redis主从同步,显示master_link_status:down的解决思路

时间:2022-07-22
本文章向大家介绍redis主从同步,显示master_link_status:down的解决思路,主要内容包括其使用实例、应用技巧、基本知识点总结和需要注意事项,具有一定的参考价值,需要的朋友可以参考一下。

当通过info replication指令查看到master的连接状态为:master_link_status:down时。肯定要先瞅瞅日志。 下面是两个可能造成master连接状态为down的日志信息:

  • 日志中有大量的I/O error trying to sync with MASTER:connection lost字样。
  • 日志持续输出Unable to AUTH to MASTER: -ERR Client sent AUTH, but no password is set,这个翻译一下就知道咯,和master的授权密码不匹配。

下面就单独说一下第一个错误日志信息怎么解决。 通过资料发现,是client-output-buffer-limit这个参数配置不当造成的。配置文件中关于此配置的注释如下: 一旦达到硬限制或者达到软限制并保持达到指定的秒数(连续)。客户端将立即断开连接,比如硬限制是32MB软限制是16MB,时间是10s,如果输出缓冲区的大小达到32MB,客户端将立即断开连接,或者客户端达到16MB并持续时间为10s,客户端同样会断开连接。 关于client-output-buffer-limit参数的配置格式在配置文件注释中也有示例,如下:

client-output-buffer-limit <class> <hard limit> <soft limit> <soft seconds>

注:该配置项默认存在配置文件中,对于不同的版本,class对应的可能不一样,可能是slave,可能是replication,不用过多纠结这个。

这里修改这个限制有两种方式: 1.修改配置文件 client-output-buffer-limit,要重启redis生效。 2.在redis命令行中config set client-output-buffer-limit ‘slave 512mb 128mb 120’但是下次重启redis会失效。

所以最好的方法就是做了步骤1之后再把步骤2给做了。