redis主从复制之薪火相传与反客为主
1、薪火相传是什么
上一个slave(redis从服务器)可以是以下slave的master(主服务器),slave同样可以接收其他slave的连接和同步请求,那么该slave作为链条中下一个的master
优点:
- slave可以从其他的slave中同步数据,当该slave宕机恢复后,不需要再从master进行同步,直接从上一级的slave进行同步,从而有效减轻master的写压力(不需要给宕机的slave同步了,只需要专心写数据),去中心化降低风险
缺点:
- 当上一级的slave宕机后,该宕机slave下的所有slave都无法恢复数据
2、薪火相传案例
我在一台Linux上,启动3个redis服务器,模拟一主二从,搭建步骤参考:redis主从复制
3台redis如下:
现在修改端口为6381的redis服务,他的上级改为端口6380的从服务器:
slaveof 127.0.0.1 6380
如下:
查看当前修改的redis的主从复制信息:
info replication
如下:
再看端口号为6380的从服务器的主从复制信息:
最后看端口为6379的master服务器:
案例结束
3、反客为主
当一个master宕机后,后面的slave可以立刻升为master,其后面的slave不用做任何修改。
在任意从服务器中,使用命令:
slaveof no one
案例:
接第2点中的案例:
3.1、把端口号为6379的master服务器宕机
shutdown
3.2 、查看端口号为6380的从服务器的主从复制信息
3.3、把端口号为6380的从服务器升级为主服务器
slaveof no one
如下:
反客为主总结:
- 该方式(slaveof no one)为反客为主的手动模式,需要我们在得知master宕机后,手动执行该命令。
- 可以通过运维人员或运维技术,在master宕机后,可以手动执行命令或在运维监控中执行,但是这种方式大大的提高了运维成本
- 因此,我们追求与一种反客为主的自动化方式,该种方式就是"哨兵模式"