1. 程式人生 > >redis通過sentinel failover報錯“NOGOODSLAVE No suitable slave to promote”

redis通過sentinel failover報錯“NOGOODSLAVE No suitable slave to promote”

   問題描述

所有sentinel及master都down,5分鐘後超過半數的sentinel才全部run起來,此時failover失敗報錯"NOGOODSLAVE No suitable slave to promote"


   root cause

跟down-after-milliseconds配置相關,程式碼中如果slave記錄的master失聯的時間超過max_master_down_time(down-after-milliseconds*10+sentinel認為master sdown的時間間隔),那麼該slave就不會被promote成master。


   solution

該問題是redis-server的選主的機制問題,這樣設計的原因可能是認為這樣的slave資料跟master的一致性不好,升主之後資料丟失嚴重。產品或者業務可根據需要調大down-after-milliseconds。

    原始碼:sentinel.c:sentinelSelectSlave