Redis学习(八):Redis主从复制

目录

一、主从复制是什么

二、主从复制能干什么

        1、读写分离,性能扩展

        2、容灾快速恢复

三、复制原理

四、常用的三种策略

        1、一主二仆 

        2、薪火相传 

        3、反客为主 

五、哨兵模式 

        1、哨兵模式是什么 

        2、怎么设置哨兵  

        3、哨兵的作用:故障恢复 


一、主从复制是什么

        主机数据更新后根据配置和策略, 自动同步到备机的master/slaver机制,Master以写为主,Slave以读为主。

Redis学习(八):Redis主从复制

二、主从复制能干什么

        1、读写分离,性能扩展

        主服务器负责写,从服务器负责读。 
        当应用需要进行读操作时,直接到从服务器中读取数据;当应用需要进行写操作时,将数据写入主服务器中,再复制到从服务器中。

        2、容灾快速恢复

如果一台从服务器宕机,可以再从其他从服务器中读取;如果一台主服务器宕机,可以做成集群模式,集群中的每一个部分都是一主多从的配置。

三、复制原理

        Slave启动成功连接到master后会发送一个sync命令,Master接到命令启动后台的存盘进程,同时收集所有接收到的用于修改数据集命令, 在后台进程执行完毕之后,master将传送整个数据文件到slave,以完成一次完全同步(全量复制);在此之后,每次master更新的数据会主动地写入slave中(增量复制)。

        全量复制:slave服务在接收到数据库文件数据后,将其存盘并加载到内存中。
        增量复制:Master继续将新的所有收集到的修改命令依次传给slave,完成同步。

Redis学习(八):Redis主从复制

        简而言之,从机连接上主机之后,主动请求数据同步;主机将所有数据同步到rdb中,将rdb文件发送给从机。在此之后的每次主机数据更新,都由主机主动地更新到从机中。

 

四、常用的三种策略

        1、一主二仆 

Redis学习(八):Redis主从复制

        从机宕机后,再次重启会变为其他主机,需要手动将其假如到当前主机中变为从机;主机宕机后,从机还为从机,在主机重启后还是主机的从机。 

        成为某个主机的从机的命令: 

slaveof  <ip><port>

        2、薪火相传 

Redis学习(八):Redis主从复制

        上一个Slave可以是下一个slave的Master,Slave同样可以接收其他 slaves的连接和同步请求,那么该slave作为了链条中下一个的master。

        类似于主机下管理着从机小组长,从机小组长下面又管理着从机。

        优点: 可以有效减轻master的写压力,去中心化降低风险。 

        缺点:一个从机宕机,后面的slave都没法备份;主机宕机,从机还是从机,无法写数据。

        3、反客为主 

        当一个master宕机后,后面的slave可以立刻升为master,其后面的slave不用做任何修改。 

        将从机变为主机的命令:

slaveof  no one 

        那么能否自动使从机变为主机呢? 

五、哨兵模式 

        1、哨兵模式是什么 

        反客为主的自动版,能够后台监控主机是否故障,如果故障了根据投票数自动将从库转换为主库。
 

 Redis学习(八):Redis主从复制

 

        2、怎么设置哨兵  

sentinel monitor mymaster 127.0.0.1 6379 1

        其中mymaster为监控对象起的服务器名称;127.0.0.1和6379为监控的主机IP和端口号;1 为至少有多少个哨兵同意迁移的数量。

        3、哨兵的作用:故障恢复 

Redis学习(八):Redis主从复制 

         当主机宕机时,哨兵从从机中挑选一台作为主机。选出主机后,哨兵向所有从服务发送slaveof的臣服命令,使所有的从机归顺主机。当主机重启后,也必须臣服与新主,哨兵也会向其发送slaveof命令。

        再说一下从机变为主机的挑选原则:优先级小的为主机;优先级相同的,偏移量大的为主机;优先级和偏移量相同的,runid小的为主机。解释一下优先级、偏移量和runid三个概念:优先级是Redis配置文件中配置的值,默认为100,值越小优先级越高;偏移量是指从机获取原主机数据的完整度,获得数据比较全的偏移量较高;每一个Redis实例启动后都会有的一个40位runid

        总结起来,sentinel就像托孤大臣一样,扶植新主,统领群臣朝拜,即使旧主归来也要俯首。

上一篇:mybatisplus手动切换数据源


下一篇:2022 Winter Team Contest - 1-D(二分图最大匹配)