【Redis】主从复制之repl_backlog(部分复制、断点续传)
发布日期:2021-05-08 11:07:40 浏览次数:23 分类:精选文章

本文共 913 字,大约阅读时间需要 3 分钟。

文章目录

1. 前言

注意,repl_backlog只针对部分复制(Partial Replication),而非全量复制。

本文内容基于redis-5.0.5(截至2019/6/6的最新版本),本文深入介绍REdis主从复制的部分复制核心要素repl_backlog,与其相关的配置直接影响主从间的稳定性,对提升集群的稳定性十分重要。

注意REdis的主节点把所有从节点也当作一个Client看待,正常的数据同步并不涉及repl_backlog。当从节点断开重连,这个时候repl_backlog的作用就体现出来了。截至到5.0.5版本,从节点重启用不上repl_backlog,原因是从节点没有保存repl_backlog的信息,无法实现部分同步,但可少量改动REdis源代码,实现从节点重启后的部分复制。

正常情况下,主节点会往从节点连接缓冲区写一份数据,同时往repl_backlog也写一份数据,所有从节点共享同一份repl_backlog,因此可以考虑repl_backlog配置大一点,以容忍从节点更长时间失联。

从节点向主节点发送命令PSYNC,触发部分复制。有关REdis主从复制的细节,请参见《REdis复制研究》。

与PSYNC命令相对的是SYNC,没有P字母,这是之前旧版的同步方式

2. 配置项

REdis的复制分全量复制和部分复制,全量复制是个很重的过程,而部分复制则是轻量的,部分复制实际是一个增量复制。

REdis的主节点创建和维护一个环形缓冲复制队列(即repl_backlog),从节点部分复制(增量复制)的数据均来自于repl_backlog。

主节点只有一个repl_backlog,所有从节点共享,直接相关的配置项有两个:

  • repl-backlog-size
    环形缓冲复制队列大小,可不带单位,但同时支持单位:b、k、kb、m、mb、g、gb,单位不区分大小写,其中k、m、g间的计算倍数是1000,而kb、mb和gb的计算倍数是1024。
  • repl-backlog-ttl
    环形缓冲复制队列存活时长(所有slaves不可用时,保留repl_backlog多长时间,单位:秒)

参考:

上一篇:【Redis】复制风暴
下一篇:【linux】pid file解读

发表评论

最新留言

不错!
[***.144.177.141]2025年03月29日 19时05分47秒