redis-主从迁移

当主库宕机之后,从库可以处理读请求,但是写请求无法处理

这时就需要进行主从迁移,那么主从迁移有几个问题需要解决

1. 如何确认主库是真的挂了

2. 该选择哪个从库升级为主库

3. 怎么通知其他从库 主库被替代了

redis 哨兵模式解决了上面的问题

哨兵是一个运行在redis中的一个进程,主要负责 监控 选主 和通知

监控: 哨兵定时发送心跳到主从库 从库无回复会被标记为下线,主库无回复会切换主库

选主: 利用raft算法选举出新的主库

通知: 哨兵发送通知到所有的从库,让他们进行replicaof与主库建立连接 进行数据复制,然后哨兵发送新库信息给客户端 客户端请求转发到新库地址

sentinel需要做两个判断

1. 判断主库是否下线

  哨兵周期性的发送ping命令,如果主库超时回复会被标为主观下线

2. 选主

  如何不误判呢? 那就去是建立哨兵集群,引入多个哨兵实例一起来判断,当n/2+1的哨兵判定主库主观线下了,就开始在从库中选主

  先过滤掉老是跟主库断连的从库,然后给剩余的从库打分

  第一轮,优先级高的从库优先 用户可以配置,给不同的从库设置优先级,如果从库优先级一样就开启第二轮

  第二轮,和旧主库同步程度最高的得分最高,如果offset一致进行第三轮

  第三轮,id号小的从库得分高

当主库宕机了在主从替换期间,客户端能否正常请求?

1. 读请求从库可以处理,写请求无法处理,对写入请求返回值不敏感的操作可以先缓存起来,等迁移完毕之后再写入.

主从迁移之后客户端如何得到通知?

1. 哨兵以广播的方式通知连接的客户端

原文地址:https://www.cnblogs.com/isnotnull/p/14558146.html