主从同步主要用来做备份,可一主多从,但是master宕机时无法自动切换,需手动切换;
如果master有自动重启最好配置持久化,否则重启数据清空并直接同步到 同步到slave,导致slave数据也清空;
当前使用的redis版本为5.0.4;
设置master的ip地址和端口;
设置master的密码(如果master用requirepass指定了密码);
当slave跟master断开或者正在同步数据的时候,如果设置yes,则可能返回的数据是旧数据(首次启动slave可能数据是空的);如果设置no,会返回错误(除了以下命令:INFO, replicaOF, AUTH, PING, SHUTDOWN, REPLCONF, ROLE, CONFIG,SUBSCRIBE, UNSUBSCRIBE, PSUBSCRIBE, PUNSUBSCRIBE, PUBLISH, PUBSUB,COMMAND, POST, HOST:, LATENCY);(默认yes)
将slave设置为只读,禁止写操作;(还可以使用rename-command配置将危险命令屏蔽,从2.6版本开始默认yes)
当全量同步使用RDB时,设置同步方式为磁盘同步或者网络同步,磁盘慢网络带宽好的时候使用网络同步更好;
设置无磁盘同步等待时间,同步开始以后无法为新到的slave开始同步,所以可以设置等待几秒的时间让尽可能多的slave连接,以便给多个slave开始同步;(默认5秒,设置为0禁用等待,会立即开始同步)
副本发送ping给服务端的时间间隔;(默认10秒)
为三方面设置超时:从副本角度看同步过程中大批量的I/O传输的超时、从副本角度认为maser超时(data,pings)、从master角度认为副本超时(REPLCONF,ACK,pings);(需要注意该值要大于repl-ping-replica-period,否则在网络不畅的时候主从可能频繁超时断开)
设置同步后是否关闭socket上的TCP_NODELAY;如果设置yes,redis会用更小的tcp包和更小的带宽去发送同步数据,可能会造成同步延迟(linux内核默认的配置是40ms);如果设置no,同步延迟会更低,但带宽占用会增加;(带宽大路由多的时候可能设置yes更好)
设置backlog缓冲区,以缓冲断开连接时候的数据,用于部分同步;缓冲越大,进行部分更新的断开时间就越长;(至少有一个副本连接的时候才会分配backlog)
当master没有连接slave一段时间后会释放backlog,该项设置最后一个slave断开后到释放backlog之间需要的秒数;副本永远不会因为超时而释放backkog;(设置0永远不会释放backlog)
设置提升优先级,master宕机后哨兵会将一个slave提升为master,优先级小的更容易被提升;(设置0表示slave永远不会被提升为master,默认100)
以上两个设置联合作用,设定副本(在线且延迟不超过指定秒数,延迟从最后一次收到副本的ping计算,副本通常每秒一次ping)数量少于某个值master停止写操作;任何一个设置为0都可关闭该功能;(默认min-replicas-to-write为0,功能是关闭的,min-replicas-max-lag是10)
以上两个设置将副本的明确的ip和端口报告给master,以上两项可以不必同时指定;(在使用端口转发或者NAT时,副本可能会使用多个不同的ip和port)
测试实验:
全部redis所在的虚拟机ip为192.168.1.31;
bind 192.168.1.31
requirepass 654321
其他端口、pidfile、日志位置、rdb持久化等配置使用默认的就好,为了测试方便后台运行也使用的默认关闭设置;
bind 192.168.1.31
port 6380
pidfile /var/run/redis_6380.pid
replicaof 192.168.1.31 6379
masterauth 654321
其他配置使用的默认redis.conf里的设置;
启动master:
然后启动slave:(全量同步)
master日志显示:
使用客户端连接到msater并保存数据:
使用客户端连接到slave并查询:(由于默认设置slave是只读,所以无法写)
停掉slave并用master保存数据:
重启slave并连接到slave查询数据:(部分同步)
使用INFO命令也可以查看主从信息:
当然master下面也可以挂载多个slave,slave下面也可以挂slave;
比如我再弄一个6381的redis挂到6380上,6380的INFO就会变成这样:(此时是全量同步)
或者把这个6381从6380上拿下来挂到6379上,6379的INFO就会变成:(此时是部分同步)
版权说明 : 本文为转载文章, 版权归原作者所有 版权申明
原文链接 : https://blog.csdn.net/FlyLikeButterfly/article/details/120725375
内容来源于网络,如有侵权,请联系作者删除!