第六章、Redis主从架构(实现读写分离)
主从架构数据传送流程:
1、启动一slave
2、slave会向master发送同步命令,请求主库上的数据,不论从是第一次连接,还是非第一次连接,master此时都会启动一个后台的子进程将数据快照保存在数据文件中,然后把数据文件发送给slave
3、slave收到数据文件 以后会保存到本地,而后把文件重载装入内存
主从配置文件:
Redis主从配置很简单,配置Slave节点就可以了,主节点默认是开启的。
老旧点版本的配置:
直接在从节点上配置,修改配置文件以下三行:
######## REPLICATION #######配置主从相关 # slaveof <masterip> <masterport> #此项不启用时,则为主,如果启动则为从,但是需要指明主服务器的IP,端口 slaveof 192.168.3.71 6379 # masterauth <master-password> #如果主服务设置了密码认证,那么从的则需要启用此项并指明主的认证密码 masterauth longtao slave-read-only yes #定义从服务对主服务是否为只读(仅复制)
新点版本的配置:(Redisv6.2.5)
# 477行 replicaof <masterip> <masterport> replicaof 192.168.3.71 6379 # masterauth <master-password> masterauth longtao replica-read-only yes
重启与测试:
在主库查看:
redis-cli -a longtao 127.0.0.1:6379> info …… # Replication role:master connected_slaves:1 slave0:ip=192.168.3.72,port=6379,state=online,offset=112,lag=0
在从库上可以看到
127.0.0.1:6379> info …… # Replication role:slave master_host:192.168.3.71 master_port:6379 master_link_status:up
主从其他相关配置:
slave-serve-stale-data yes # 表示当主服务器不可以用时,则无法判定数据是否过期,此时从服务器仍然接收到读请求时,yes表示仍然响应(继续使用过期数据) slave-read-only yes # 启用slave时,该服务器是否为只读 repl-diskless-sync no # 是否基于diskless机制进行sync操作,一般情况下如果disk比较慢,网络带宽比较大时,在做复制时,此项可以改为Yes repl-diskless-sync-delay 5 # 指定在slave下同步数据到磁盘的延迟时间,默认为5秒,0表示不延迟 slave-priority 100 # 指定slave优先级,如果有多个slave时,哪一个slave优先级高的将优先被同步 # min-slaves-to-write 3 # 此项表示在主从复制模式当中,如果给主服务器配置了多个从服务器时,如果在从服务器少于3个时,那么主服务器将拒绝接收写请求,从服务器不能少于该项的指定值,主服务器才能正常接收用户的写请求 # min-slaves-max-lag 10 # 表示从服务器与主服务器的时差不能够相差于10秒钟以上,否则写操作将拒绝进行
注意:如果master使用requirepass开启了认证功能,从服务器要使用masterauth <PASSWORD>来连入服务请求使用此密码进行认证;