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

Posted 射手Mr吴

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了redis 数据量大,异常停机导致全量同步问题相关的知识,希望对你有一定的参考价值。

一、问题概述reids 从机服务器宕机,当机器恢复,启动redis服务,redis从机自动发布全量同步且数据量超过5G以上,同步完一次,redis继续发出全量同步命令,循环进行同步全量。

二、现象描述

redis从机收到了主机的dump.rdb传输过来的文件,但是读取完毕后,从机继续向主机发起全量同步命令,并报IO error,另一个错误是主机超时,主机在一定时间内ping从机无法得到回应,导致主机认为从机宕机,当从机恢复继续发出全量同步命令

redis


三、问题跟踪及分析

这个问题是由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文件,重新同步

以上是关于redis 数据量大,异常停机导致全量同步问题的主要内容,如果未能解决你的问题,请参考以下文章

Redis 复制过程详解

Redis 复制过程详解

Redis 复制过程详解

Redis的持久化方案

Redis主从架构之全量同步原理与增量同步原理

redis主从同步机制