【Redis】理论进阶篇------Redis的主从复制

一、原理解释

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服务器都是主节点

2d3e11abc958a2d49da6360a6d6abc4c.png

如图所示:两个不同端口号的从机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> < 主库端口号>

原理图:

63d3865f8adf2c793951d759ce7db975.png

如图所示: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

原理图:

38bf95a5f33aaa628f9798d68a47c4d0.png

如图所示:在原来一主二从的基础上,slave2执行了我们的命令,那么slave2就会重新成为一个新主机(master)。

四、主从复制的优缺点

1、优点

①数据冗余:主从复制实现了数据的热备份,是持久化之外的一种数据冗余方式。

②故障恢复:如果master宕掉了,使用哨兵模式,可以提升一个 slave 作为新的 master,进而实现故障转移,实现高可用。

③负载均衡:实现读写分离,一个 master 用于写,多个 slave 用于分摊读的压力。

④分担压力:Slave同样可以接受其它Slaves的连接和同步请求,这样可以有效的分载Master的同步压力。

2、缺点

①:复制延迟,信号衰弱

所以的写的操作都是在master上操作,然后同步更新到slave上,所以从master同步到slave机器上有一点的延迟,当 系统频繁忙的时候,延迟会更加严重。

②:master挂了,在默认情况下,不会在slave节点中自动选择一个master,每次都需要人工干预。(最大缺点)

五、总结

    关于Redis的主从复制,从上面的讲解也可以看出它有个很大的缺点就是当主机宕机后,选择新的master的时候都需要人工干预,这在我们现实的项目中肯定不是这样来使用的,肯定使用的哨兵模式,后面就会做相关的关于哨兵模式的介绍。不过我觉得关于主从模式的介绍也是很重要的,因为我们只有知其然才会知其所以然,这也是我们为后面的学习做的铺垫。如果觉得这篇文章对屏幕前的小伙伴有所帮助,记得点赞👍支持哦!

 

 

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值