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