本发明涉及云信息,具体提供一种redis链式复制故障检测修复方法及装置。
背景技术:
1、在云计算、大数据背景下,越来越多的用户加入到云计算平台中,redis作为一个内存数据库,有着极高的性能、丰富的数据类型、数据原子性执行、支持发布订阅模式等优势,越来越多的用户开始认识并使用redis作为缓存数据库。
2、单服务系统部署虽然简单易用,但是单服务部署redis只能有一个节点来对外提供读和写的能力,碍于redis单线程模式的架构,无法对redis的性能做出更一步的提升,多从节点可以依靠从节点的只读特性,利用从节点对外提供读能力,多从节点可以使redis的读能力成倍数增加。目前redis多从节点间数据复制有两种复制模式,星型模式和链型模式。
3、星型复制就是将所有的replica直接和master保持同步,每个replica之间相互独立,任何一个节点异常不影响到其他节点,同时因为复制链比较短, replica上的复制延迟比较小。redis是单进程单线程模型,主从之间的数据复制也在主线程中处理, replica数量越多,数据同步对master的cpu消耗就越严重,集群的写入性能会随着replica的增加而降低。此外,星型架构会让master的出口带宽随着replica的增加而成倍增长。master上较高的cpu和网络负载会抵消掉星型复制延迟较低的优势,因此,星型复制架构会带来比较严重的扩展问题,整个集群的性能会受限于master。
4、链式复制将所有的replica组织成一个复制链,master只需要将数据同步给replica和复制链上的第一个 replica。链式复制解决了星型复制的扩展问题,理论上可以无限增加replica的数量,随着节点的增加整个集群的性能也可以基本上呈线性增长。
5、链式复制难点在实现复制链上,如何判断链上某个节点的状态是否正常,且数据是否同步正常,是解决链式复制可用性的重要步骤。
技术实现思路
1、本发明是针对上述现有技术的不足,提供一种实用性强的redis链式复制故障检测修复方法。
2、本发明进一步的技术任务是提供一种设计合理,安全适用的redis链式复制故障检测修复装置。
3、本发明解决其技术问题所采用的技术方案是:
4、一种redis链式复制故障检测修复方法,具有如下步骤:
5、s1、获取链式集群的节点信息;
6、s2、遍历检查节点,获取节点状态信息;
7、s3、检查节点间同步进度;
8、s4、发现节点异常解决异常节点;
9、s5、发现数据同步差异,进行节点链式降级。
10、进一步的,在步骤s1中,获取链式集群的各节点信息,从首个节点获取缓存节点信息的文件,读取并缓存到方法中。
11、进一步的,读取并缓存到方法中的具体步骤如下:
12、(1.1)将要检查的链式集群信息,链式集群各节点所在宿主机的登录方式和redis的连接信息配置到方法中;
13、(1.2)方法启动时,检查是否缓存了链式集群信息,如果存在集群信息,将跳过此步骤;
14、(1.3)如果方法没有缓存链式复制集群信息,将读取配置文件,连接链式集群的首个节点所在的宿主机,获取节点宿主机缓存目录下的成链信息,将成链信息缓存到方法。
15、进一步的,在步骤s2中,首次执行检查时按照链上各节点的排列顺序,挨个连接各节点redis服务,执行info获取redis信息,查看redis是否服务正常;
16、如果redis节点正常联通,则标记所述redis节点可用;
17、如果redis节点访问不通,则标记所述redis节点不可用;
18、缓存当前检查结果。
19、进一步的,在步骤s2中,第二次执行检查时,重复首次检查时的步骤,获取首次检查的结果,同当前结果做对比;
20、如果两次检查结果都展示某一个节点连接异常,则说明当前节点无法联通;
21、如果两次检查结果展示没有某一个节点两次连接不通过,则覆盖上次检查的缓存结果。
22、进一步的,在步骤s3中,首次检查时,获取链式集群的各节点信息,具体操作如下:
23、遍历各个节点redis,并通过info replication命令获取当前节点的同步信息,当前节点和下游节点的复制偏移量master_repl_offset及slave_repl_offset,计算两节点之间的复制偏移量差值,与阈值对比,如果大于阈值,设置节点的下游节点复制异常,缓存复制迁移量差异和复制异常标签。
24、进一步的,在步骤s3中,下次检查时,执行首次检查时的操作流程,取出上次检查的结果缓存,对比当前结果缓存的结果信息;
25、如果当前节点的复制偏移量差异有增大趋势且同样被标记节点异常,则判定下游节点复制异常。
26、进一步的,在步骤s4中,进一步包括:
27、(4.1)定时任务,来检查上步骤s2和步骤s3检查获取的最终结果;
28、(4.2)获取连接异常的节点,将下游节点执行slaveof no one,取消当前节点和下游节点的主从复制关系;
29、(4.3)在下游节点执行slaveof<当前节点上游节点的ip><当前节点上游节点的访问端口>进行当前节点的跳过操作;
30、(4.4)更新各节点所在宿主机上缓存的成链信息,将最新的链条信息保存到各宿主机上;
31、(4.5)节点检查发现异常节点上线之后将异常节点放置到链条的最后一位,再次成为完整链条。
32、进一步的,在步骤s5中,进一步包括:
33、(5.1)定时任务中检查节点同步信息,获取到复制异常的节点;
34、(5.2)将复制异常的节点的下游节点链接到所述复制异常节点的上游节点上;
35、(5.3)通知管理员同步异常信息;
36、(5.4)当管理员修复同步异常节点后,通知本方法节点正常;
37、(5.5)本方法再次将异常节点追加到链尾。
38、一种redis链式复制故障检测修复装置,包括:至少一个存储器和至少一个处理器;
39、所述至少一个存储器,用于存储机器可读程序;
40、所述至少一个处理器,用于调用所述机器可读程序,执行一种redis链式复制故障检测修复方法。
41、本发明的一种redis链式复制故障检测修复方法及装置和现有技术相比,具有以下突出的有益效果:
42、本发明使redis多从节点链式检查故障和修复故障更加智能,在此基础上,使整个redis服务的性能更加优异。
1.一种redis链式复制故障检测修复方法,其特征在于,具有如下步骤:
2.根据权利要求1所述的一种redis链式复制故障检测修复方法,其特征在于,在步骤s1中,获取链式集群的各节点信息,从首个节点获取缓存节点信息的文件,读取并缓存到方法中。
3.根据权利要求2所述的一种redis链式复制故障检测修复方法,其特征在于,读取并缓存到方法中的具体步骤如下:
4.根据权利要求3所述的一种redis链式复制故障检测修复方法,其特征在于,在步骤s2中,首次执行检查时按照链上各节点的排列顺序,挨个连接各节点redis服务,执行info获取redis信息,查看redis是否服务正常;
5.根据权利要求4所述的一种redis链式复制故障检测修复方法,其特征在于,在步骤s2中,第二次执行检查时,重复首次检查时的步骤,获取首次检查的结果,同当前结果做对比;
6.根据权利要求5所述的一种redis链式复制故障检测修复方法,其特征在于,在步骤s3中,首次检查时,获取链式集群的各节点信息,具体操作如下:
7.根据权利要求6所述的一种redis链式复制故障检测修复方法,其特征在于,在步骤s3中,下次检查时,执行首次检查时的操作流程,取出上次检查的结果缓存,对比当前结果缓存的结果信息;
8.根据权利要求6所述的一种redis链式复制故障检测修复方法,其特征在于,在步骤s4中,进一步包括:
9.根据权利要求8所述的一种redis链式复制故障检测修复方法,其特征在于,在步骤s5中,进一步包括:
10.一种redis链式复制故障检测修复装置,其特征在于,包括:至少一个存储器和至少一个处理器;