一:作用
可以把master的数据同步到slave中保存,增强数据安全性。
可以分散来自客户端的读请求,降低master的压力。
默认主宕机后无法主从切换,利用哨兵模式可以做到。
二:过程:
1、slave连接master时候,master会执行BGSAVE操作。所以master中须保证已配置dir和dbfilename选项,并且所指路径和文件对于redis是可写的。
2、主从复制的设置方式:
a、在slave的conf中:slaveof master<ip> master<port> ,slave启动时,就会去连接master。(5.0之后slaveof变为replicaof)
b、如果slave正在运行,用户可以发送指令:slaveof master<ip> master<port> 来连接master。 (slaveof no one命令终止复制)
3、复制的启动过程:
实际运用中,master最好只使用50%-65%的内存,留下一定的内存用于BGSAVE命令和创建用于记录写命令的缓冲区,否则会影响redis处理命令请求的效率(主从服务器间的网络宽带不足也会影响)。
4、当多个从连接一个主时,可能出现以下之一:
5、主从链:就是slave可以有slave
同时使用AOF和主从复制,可以将数据持久化到多台机器。当然,这得保证需要持久化的服务器上开启了AOF相关配置(appendonly yes和appendfsync everysec)。
6、权限验证
主从正常连接后,进行权限验证主未设置密码( requirepass=“” ) ,从也不用设置密码( masterauth=“” )主设置密码 (requirepass!=""), 从需要设置密码 (masterauth= 主的 requirepass 的值 )或者从通过 auth 命令向主发送密码
上面认识了主从复制和主从链,什么情况下使用?
1、读请求的重要性明显高于写,并且请求的数量远远超出一台redis可以处理的范围,这时候需要添加服务器,就可以使用主从复制。
2、master无法快速更新所有slave,或者因重新连接和重新同步slave导致系统超载,可以使用主从链,不要把所有的slave绑定到一台master上。
注:slave其实是可以接受写命令的,修改slave配置文件中的slave-read-only no则可,,slave接受的写操作时不会同步到master的,一般也不会这么做…