0


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

一、主从复制是什么

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

二、主从复制能干什么

1、读写分离,性能扩展

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

2、容灾快速恢复

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

三、复制原理

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

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

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

四、常用的三种策略

1、一主二仆

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

    成为某个主机的从机的命令: 
slaveof  <ip><port>

2、薪火相传

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

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

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

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

3、反客为主

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

    将从机变为主机的命令:
slaveof  no one 
    那么能否自动使从机变为主机呢? 

五、哨兵模式

1、哨兵模式是什么

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

2、怎么设置哨兵

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

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

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

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

    总结起来,sentinel就像托孤大臣一样,扶植新主,统领群臣朝拜,即使旧主归来也要俯首。
标签: redis 数据库 缓存

本文转载自: https://blog.csdn.net/m0_49499183/article/details/122753060
版权归原作者 玉面大蛟龙 所有, 如有侵权,请联系我们删除。

“Redis学习(八):Redis主从复制”的评论:

还没有评论