Redis学习(十三):使用哨兵自动管理主从数据库

一、什么是哨兵

顾名思义,哨兵的作用就是监控Redis系统的运行状况。它的功能主要包括以下两个:

  • 监控主数据库和从数据库是否正常运行;
  • 主数据库故障时自动将从数据库转换为主数据库,并使其他从数据库连接到新的主数据库上

二、哨兵配置

配置文件名称:sentinel.conf,内容如下:

sentinel monitor mymaster 127.0.0.1 6379 1
  • 首先,对于一个主从数据库系统,哨兵只需要配置主数据库地址即可(后边解释),哨兵还可以同时监控多个主从数据库系统
  • sentinel monitor:固定写法;
  • mymaster:给要监控的主数据库起一个别名;
  • 127.0.0.1:主数据库ip地址
  • 6379:主数据库运行端口
  • 1:最低通过票数

启动哨兵命令:

redis-sentinel /path/to/sentinel.conf

三、哨兵实现原理

(一)建立连接:

哨兵启动后,会与要监控的主数据库建立两条连接:

  1. 用来订阅该主数据库的_sentinel_:hello频道,来获取同样监控了此数据库的其他哨兵信息。
    • 监控频道中其他哨兵发送的信息,每2秒向频道中发送自己的信息;
  2. 向主从数据库发送工作命令(第一条连接是订阅,所以无法进行其他操作,需要重新建立一条)
    1. 向主数据发送INFO命令,第一次发送时会获取到主数据库下的从数据库信息,然后哨兵会跟从数据库用相同的方式建立两条连接;
    2. 每10秒向主从数据库发送INFO命令:刷新纪录的主从数据库信息,发现新节点等;
    3. 每1秒(可以配置:down-after-milliseconds)向主从数据库发送ping命令,来判断主从数据库是否正常。

(二)事故出现和哨兵选举

主观下线和客观下线

  • 哨兵在PING主从服务器时,如果超过down-after-milliseconds配置的时间,仍没有得到回复,哨兵就认为这个数据库主观下线
  • 如果主服务器出现故障,哨兵会发送SENTINEL is-master-down-by-addr命令询问其他哨兵,了解他们是否也认为主数据库下线,当到达哨兵配置文件中配置的最低通过票数后,就认为其客观下线

领头哨兵选举(一个哨兵一轮只有一次投票权)

  1. 发现主数据库客观下线的哨兵A,会向其他哨兵发送命令,让对方选自己为领头哨兵;
  2. 如果目标哨兵在这一轮没有选过别的人,就会同意A哨兵的请求,A哨兵票数+1;
  3. 只要A哨兵获得的票数超过半数,就会成为领头哨兵
  4. 特殊情况:一轮投票中有好几个哨兵参加选举,但是最后票数都没超过半数,那么这几个哨兵会随机等待一个事件,重新进行上述步骤,直到领头哨兵被选出来。

(三)故障修复

哨兵挑选从数据库升级为主数据库需要遵循以下原则:

  • 选取优先级最高的从数据库,优先级通过slave-priority设置;
  • 如果有多个优先级相同的,选取增量复制队列中,命令偏移量最大的从数据库,偏移量最大说明复制越完整;
  • 如果还是有多个,选择运行时id较小的从数据库。

四、任务完成

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值