上篇记录了单机安装redis,这边要记录一下主从配置规则。
我根据上篇用的虚拟机进行克隆两台机器,使用三台机器搭建一主两从,ip分别为130,131,132,端口号都是6379
首先都是操作的6379.conf配置文件。
1.分别把三台机器6379.conf中的bind注释掉
2.把从节点131,132机器的6379.conf中的replicaof 修改如下
replicaof 192.168.0.130 6379 #从该机器的redis实例复制数据
replica-read-only yes #配置从节点只读
3.此时从新启动三台机器即可,完成数据从主节点同步到从节点。
工作原理
全量复制
1.当master配置了salve节点,不管是否第一次连接master,都会发送向master发送一个PSYNC命令请求数据。
2.master收到PSYNC命令后,会在后台通过bgsave生成最新的rdb数据快照,在生产快照之间,master会继续接收写请求,它会把这些请求缓存在内存中(有一个缓冲区),当数据快照生成之后,master会把该rdb文件数据集发送给salve,salve会把接收到的数据进行持久化生成rdb,然后读取到内存,最后,master再把缓冲区的数据发送给savle,之后保持通讯,master持续把写命令发送给从节点,保持数据一致性。
数据部分复制
redis在高版本中还支持salve与master在网络断开重连后只进行部分复制的机制。
master会在内存中建立一个缓冲区,用来保存最近一段时间的数据,master和所有的salve都维护了复制数据的offset和master的进程id,当网络断开重连后,salve会请求master继续进行复制,从offset开始。如果master进程id变了,或者说offset太旧了,已经不再缓冲区内,则进行全量复制。
主从复制存在的问题:当配置的从节点过多,会造成从节点即复制数据又接收请求,导致压力过大。可以采用阶梯式的向下增加节点。