Redis配置之主从配置
简介
redis 主从模式复制,可以保证数据的安全性。
有些人认为 master-slave 暗指“奴隶制度”,因此建议修改掉,这个看似简单的修改实际上要付出昂贵的代价。
在redis5的时候,将 master-slave 架构的描述改为 master-replica,并且兼容之前的slave命令。
只是为 SLAVEOF 提供别名 REPLICAOF,所以仍然可以使用 SLAVEOF,但多了一个选项。
复制
1、redis复制是异步的,但是也指定几个从节点接受到复制后,才表示写成功。
2、如果网络出现抖动或者延迟,相对时间比较断,Redis副本可以与主节点进行增量同步即可。这个可以通过配置的缓存大小来控制。
3、复制过程是自动的,不需要手动干预,如果是网络断开了,Redis副本会自动重新尝试连接主节点,进行增量或者全量同步。
master-replica 配置
replicaof 192.168.122.100 7000
密码验证
如果主节点设置了密码验证,从节点同步的时候就需要设置masterauth这个参数进行同步验证。
masterauth cjwdVD6B2NXSDShBWWzD3sdPjISbOBrw
同步断开,副本继续回复请求
当副本节点与主节点断开,当从节点服务还可以用的时候,有两种不同的操作方式:
1、当replica-serve-stale-data 设置成yes(默认选项),副本将继续回复客户端的请求,只是这时候的数据跟主节点可能不一致;如果是第一次同步就会出现空数据的情况。
2、如果replica-serve-stale-data 设置成no,副本将对所有请求回复“SYNC with master in progress”的错误,除了 INFO, replicaOF, AUTH, PING, SHUTDOWN, REPLCONF, ROLE, CONFIG, SUBSCRIBE, UNSUBSCRIBE, PSUBSCRIBE, PUNSUBSCRIBE, PUBLISH, PUBSUB, COMMAND, POST, HOST, LATENCY 这些命令。
replica-serve-stale-data yes
副本只读
可以配置副本节点是否接受写操作,如果接受写操作一般都会出现数据不一致的情况。
从redis 2.6 开始,默认副本节点都是只读的
replica-read-only yes
副本数据不落地磁盘
副本同步可以写到磁盘也可以不写使用socket方式:
1、使用磁盘的方式,新的副本或者断开长时间无法继续增量同步的副本,就需要进行全量同步。
2、如果是socket方式,不写到磁盘,主节点的rdb文件直接通过socket,写到副本节点内存,不同步到磁盘。这样子可以有更快的同步数据和性能。
注意:目前socket的方式还是处于实验阶段
repl-diskless-sync no
无盘同步延迟
当使用socket方式同步的时候,多个节点同步可能导致主节点出现异常,这是延迟同步可以缓解这种情况,默认是延迟5s。完全禁用延迟,尽快的同步数据设置为0即可。
repl-diskless-sync-delay 5
ping存活
副本会间隔一段时间发送ping操作,可以通过repl_ping_replica_period参数进行设置,默认是10s
同步超时
同步超时时间设置
repl-timeout 60
TCP_NODELAY
启用这个参数可以减少TCP包,使用更少的带宽进行同步。但是可以会导致副本节点的数据延迟,最多40毫秒。
repl-disable-tcp-nodelay no
设置复制缓存大小
当副本断开的时候,数据同步将写在backlog的缓冲区里面,重新连接的时候直接从缓冲区开始进行增量同步即可。
这个缓冲区之后副本连接的时候才会分配。缓冲区越大,可以缓存数据越多,意味着副本断开时间越长,还可以进行增量同步。
repl-backlog-size 1mb
缓冲区释放时间
当副本不再连接,backlog缓冲区将被释放。如果设置为0,表示永远不释放。
repl-backlog-ttl 3600
副本优先级
当主节点不可用的时候,哨兵根据优先级提升为主节点,数字越低表示优先级越高,默认是100
replica-priority 100
副本写延迟,禁用主节点的写操作
副本同步会存在延迟,至少3个写操作,时间延迟小于等于10秒的副本,主节点就停止写入操作。这两个参数只要一个设置为0,就禁用该功能。
min-replicas-to-write 3
min-replicas-max-lag 10
副本通知IP和端口
redis服务没有跟哨兵在同一个网络,比如:在容器里面跑,info replication查看到IP和端口,哨兵就有可能访问不到,这时候就需要,指定对外的IP和端口,提供给哨兵检测。
replica-announce-ip 192.168.122.100
replica-announce-port 1234
- 原文作者:Linux运维菜
- 原文链接:https://www.opcai.top/post/2020/2020-05/redis_replication/
- 版权声明:本作品采用进行许可,非商业转载请注明出处(作者,原文链接),商业转载请联系作者获得授权。