
本文主要总结与主从复制架构相关的重要配置,以及这些配置的作用和配置方法。
REPLICAOFREPLICAOF <host port | NO ONE>Redis启动时起作用,作用是建立主从关系,开启了该配置后Redis服务器在启动后成为从节点。
如果Redis服务器已经充当从节点,则命令REPLICAOF NO ONE将关闭主从复制,将 Redis 服务器变为主服务器。
repl-ping-replica-periodrepl-ping-replica-period 10命令传播阶段主从节点的超时判断,主节点每隔repl-ping-replica-period秒向从节点发送ping指定。默认为10秒。
repl-timeoutrepl-timeout 60与各个阶段主从节点连接超时判断有关。repl-timeout参数值一定要大于 repl-ping-replica-period ,否则每次主节点和从节点之间的流量较低时都会检测到超时。默认值是60秒。
repl-diskless-syncrepl-diskless-sync yes作用于全量复制阶段,控制主节点是否使用无盘diskless复制。所谓无盘复制,是指在全量复制时主节点不再是把数据写入RDB文件,而是直接写入从节点的socket中,整个过程中不涉及硬盘。无盘复制在磁盘IO很慢而网速很快时更有优势,这个配置项默认是开启的。
repl-diskless-sync-delayrepl-diskless-sync-delay 5该配置作用于全量复制阶段,当主节点使用无盘复制时,该配置决定主节点向从节点发送之前延迟的时间,单位是秒;只有当无盘复制启用时有效,默认为5秒。之所以设置延迟时间,是基于两个考虑:一是向从节点的socket传输一旦开始,新连接的从节点只能等待当前数据传输结束才能进行新的数据传输;二是多个从节点有较大的概率在短时间内建立主从复制。
client-output-buffer-limit语法:
client-output-buffer-limit <class> <hard limit> <soft limit> <soft seconds>默认值
client-output-buffer-limit replica 256mb 64mb 60与全量复制阶段主节点的缓冲区大小有关,如果在复制期间内存缓冲区持续消耗超过64MB或者一次性超过256MB,就会停止复制,造成复制失败,主从就要重新建立连接。
repl-disable-tcp-nodelayrepl-disable-tcp-nodelay no与命令传播阶段的延迟有关,默认为关闭。
masterauthmasterauth <master-password>与连接建立阶段的身份验证有关,需要输入在主节点设置的密码。
masterusermasteruser <username>redis 6.0开始新增的配置,与连接建立阶段的身份验证有关,需要输入在主节点设置的用户名。
repl-backlog-sizerepl-backlog-size 1mb复制积压缓冲区的大小,默认为1mb。
repl-backlog-ttlrepl-backlog-ttl 3600当主节点没有从节点时,复制积压缓冲区保留的时间,这样当断开的从节点重新连进来时可以进行部分复制,默认为3600秒。如果设置为0,则永远不会释放复制积压缓冲区。
min-replicas-to-write与min-replicas-max-lagmin-replicas-to-write 3
min-replicas-max-lag 10min-replicas-to-write 3与min-replicas-max-lag 10用于设定主节点的最小从节点数目及对应的最大延迟,含义是如果从节点数量小于3个或所有从节点的延迟都大于10秒,那么主节点在拒绝执行写命令时会给客户端返回错误。
replica-serve-stale-datareplica-serve-stale-data yesreplica-serve-stale-data与从节点数据陈旧时是否响应客户端命令有关,它用于控制在这种情况下从节点的表现。如果为yes(默认值),则从节点仍能够响应客户端的命令;如果为no,则从节点只能响应info、replicaof等少数命令。该参数的设置与应用数据一致性的要求有关,如果对数据一致性要求很高,就应设置为no。
replica-read-onlyreplica-read-only yes从节点是否只读:默认是yes只读的。由于从节点开启写操作容易导致主从节点的数据不一致,因此尽量不要修改该配置。