主从复制高可用,有什么缺点吗?
如果出现master机器挡掉,那么slave变为master是需要手动来完成故障转移。
master当掉后,数据就不能更新了,只剩下了多个slave。
那么故障转移如何完成?
上面的步骤太麻烦了,所以才出现了sentinel
哨兵模式,多了一个sentinel层,redis-client不会从master里获取信息了,也就是不会直接访问master地址,而是访问sentinel的地址来获取信息。
而且有多个sentinel随时监控我们redis的变化,及时自动的更换slave为master。因为是自动就会方便很多。
讲讲sentinel的故障转移:
1、多个sentinel发现并确认master出现故障
2、选举出一个sentinel作为领导
3、选出一个slave作为新的master
4、通知其他的slave,更换新的master,成为新的master下的slave。
5、sentinel会通知redis—client客户端主从发生了变化
6、老的master复活了,会成为新master下的slave。
同样sentinel可以监控多个master如下:
未完待续中。。。。。。
检测主节点超时多久,也就是多久没ping通
down-after-millisecond mymaster 30000毫秒
故障迁移的时间,超过时间迁移失败
sentinel failover-timeout mymaster 30000毫秒
避免复制风暴,可以通过将这个值设为 1 来保证每次只有一个slave 处于不能处理命令请求的状态。
sentinel parallel-syncs mymaster 1