簡單介紹下Redis-sentinel:
Redis-sentinel是Redis執行個體的監控管理、通知和執行個體失效備援服務,是Redis叢集的管理工具。在一般的分布式中心節點資料庫中,Redis-sentinel的作用是中心節點的工作,監控各個其他節點的工作情況並且進行故障恢複,來提高叢集的高可用性。(簡介來自連結:http://www.searchdatabase.com.cn/showcontent_71572.htm)
下面是我對Redis 2.9.11-非穩定版作的測試總結,更新的版本可能沒有下面的問題。
1.使用Redis-sentinel,redis執行個體必須在非叢集模式下運行
2.如果預設主從關係的主掛了,這時啟動failover,在failover過程中,有n個slave還活著,那麼新master就有n個slave,舊master重啟還可以加入叢集,但其他在failover之前或過程中掛掉的slave重啟是不能加入叢集的,除非修改它們的設定檔,將master指向新master.
3.如果預設主從關係變了,其中一個slave掛了重啟,它的master還是指向設定檔指定的,但它也是新master的slave,這是由於舊master已變為新master的slave,所以舊master的slave也是新master的slave,新master的slave數不變,這可從命令:sentinel slaves mymaster看出。
ps:從這裡可以看出,slave重啟不會重新導向master,主從關係是sentinel發info請求擷取的
4.如果預設主從關係的主掛了且failover正常結束,舊master重啟還可以加入叢集,但舊master第二次重啟就不能加入叢集了。
5.只要有slave of master命令調用,即主從關係建立, 就會觸發主和該從採用save方式持久化資料,不論你是否禁止save.
6.在叢集中,如果預設主從關係的主掛了並立即重啟,如果主沒有做持久化,資料會完全丟失,從而從的資料也被清空。
7.在叢集中,如果非預設主從關係的主掛了並立即重啟,主從關係變亂,叢集不可用。
先這麼多了。