一、原理解释
1、什么是Redis的主从复制
主从复制,是指将一台Redis服务器的数据复制到其他Redis服务器。前者称为主节点(master),后者称为从节点(slave);对于数据的复制是单项的,只能从主节点到从节点。Master以写为主,Slave以读为主(读写分离)。
二、主从复制中的常用指令
①:info replication
可以查看复制节点的主从关系和配置的信息。
②:replicaof <主库IP> < 主库端口号>
一般写入redis.conf配置文件内部。
③:slaveof <主库IP> < 主库端口号>
使用命令操作配置slave:若不是用②的方法写入配置文件,则当slave每次与master断开之后,都需要重新的连接。或者在运行期间修改slave的节点的信息,如果当前slave是主节点master1的从节点,当又出现一个master2主节点的时候,当前slave可以断开与master1的关系,转而与master2数据库同步形成主从关系。
④:slaveof no one
使当前的slave数据库停止与其他的master数据库的同步关系,转成主数据库,自立为王。
三、Redis常见三种配置方式
1、主从配置(一主二从)
命令:replicaof <主库IP> < 主库端口号>
注意:配从(库)不配主(库)
原理图:如果未配置 ,在默认情况下,这三台Redis服务器都是主节点
如图所示:两个不同端口号的从机slave1与slave2通过我们的命令(配置文件),实现了以端口号6379为主机的一主二从的主从配置。此时,对于存储在master(可写、可读)中的指令,slave1与slave2都可以读取。
问题思考
①:从机是否可以执行写的操作?
答:从机只可以读取不可以写操作。
②:从机是如何复制的?
答:slave启动成功后会连接到 master后会发送一个sync同步命令,master接到命令,启动后台的存盘进程,同时收集所以接受的用于修改数据集命令,在后台进程执行完毕之后,master将传送整个数据到slave,并完成一次完全同步。第复制流程如下:
第一次 全量复制:slave服务在接受到数据库文件数据后,将其存盘加载到内存中。
其次 增量复制:在连接master后的存储,则是master写一句,slave接受一句,一次一次的完成。
③:如果master断开,slave(从机)是否断开连接?
答:如果master断开,slave(从机)依旧连接主机,只是没有写的操做。如果,master重新回来了连接了Redis,slave是自动连接到master,对于master新的写的内容,slave依旧可以读取到。
④:slave断开,再重新连接,是否可以重新读取master中数据?
答:分两种情况:若是通过配置文件配置的从机,重新连接后,会读取配置文件重新变为从机,此时可以读取master中的内容;若是通过指令配置的slave,重启后的slave是一个主机,不能读取master中的内容。
2、薪火相传
命令:slaveof <主库IP> < 主库端口号>
原理图:
如图所示:port为6379的Redis服务器是slave1的master,而 slave1又是slave2的master,而slave2同样可以接送到master的同步请求,像链条一样一次传递,而且slave1还可以有效的减轻主master写的压力。
问题思考
①:slave1做为slave2的master是否具有写的操作?
答:slave1依旧是slave依然不能执行写的操作,只是修改的数据传递的方向。
②:slave在中途转化master对像,还会保存之前的master的数据吗?
答:会清除之前的数据,拷贝最新的master的数据。
3、独立自主
命令:slaveof no one
原理图:
如图所示:在原来一主二从的基础上,slave2执行了我们的命令,那么slave2就会重新成为一个新主机(master)。
四、主从复制的优缺点
1、优点
①数据冗余:主从复制实现了数据的热备份,是持久化之外的一种数据冗余方式。
②故障恢复:如果master宕掉了,使用哨兵模式,可以提升一个 slave 作为新的 master,进而实现故障转移,实现高可用。
③负载均衡:实现读写分离,一个 master 用于写,多个 slave 用于分摊读的压力。
④分担压力:Slave同样可以接受其它Slaves的连接和同步请求,这样可以有效的分载Master的同步压力。
2、缺点
①:复制延迟,信号衰弱
所以的写的操作都是在master上操作,然后同步更新到slave上,所以从master同步到slave机器上有一点的延迟,当 系统频繁忙的时候,延迟会更加严重。
②:master挂了,在默认情况下,不会在slave节点中自动选择一个master,每次都需要人工干预。(最大缺点)
五、总结
关于Redis的主从复制,从上面的讲解也可以看出它有个很大的缺点就是当主机宕机后,选择新的master的时候都需要人工干预,这在我们现实的项目中肯定不是这样来使用的,肯定使用的哨兵模式,后面就会做相关的关于哨兵模式的介绍。不过我觉得关于主从模式的介绍也是很重要的,因为我们只有知其然才会知其所以然,这也是我们为后面的学习做的铺垫。如果觉得这篇文章对屏幕前的小伙伴有所帮助,记得点赞👍支持哦!