redis 数据量大,异常停机导致全量同步问题

世事洞明皆学问,人情练达即文章。这篇文章主要讲述redis 数据量大,异常停机导致全量同步问题相关的知识,希望能为你提供帮助。
【redis 数据量大,异常停机导致全量同步问题】一、问题概述reids 从机服务器宕机,当机器恢复,启动redis服务,redis从机自动发布全量同步且数据量超过5G以上,同步完一次,redis继续发出全量同步命令,循环进行同步全量。
二、现象描述redis从机收到了主机的dump.rdb传输过来的文件,但是读取完毕后,从机继续向主机发起全量同步命令,并报IO error,另一个错误是主机超时,主机在一定时间内ping从机无法得到回应,导致主机认为从机宕机,当从机恢复继续发出全量同步命令



三、问题跟踪及分析这个问题是由redis配置文件中一个参数设置导致,在redis.conf中有client-output-buffer-limit slave 256mb 64mb 60 这个参数配置,这个参数代表含义:负责发数据给slave的client,如果buffer超过256m或者连续60秒超过64m,就会被立刻强行关闭,就会导致循环同步.
?
四、解决方案设置client-output-buffer-limit 增加buffer和超时时间,可以在redis运行中设置(2.8.8版本中可以),删除已经生成的dump.rdb文件,再执行./redis-cli
suningconfig set  client-output-buffer-limit slave 2gb 1gb 1200
这样再次进行同步,循环同步数据问题解决.本次问题中,同步数据量为8GB,要根据数据量的大小来合理设置参数.
在数据量低于7G情况下,可以不修改参数尝试去同步,但是数据量在超过7G(包括7GB),必须修改上面参数,主机先修改,从机再修改,删除dump文件,重新同步




    推荐阅读