我們?cè)O(shè)置節(jié)點(diǎn)A為主服務(wù)器,關(guān)閉持久化,節(jié)點(diǎn)B和C從節(jié)點(diǎn)A復(fù)制數(shù)據(jù)。
這時(shí)出現(xiàn)了一個(gè)崩潰,但Redis具有自動(dòng)重啟系統(tǒng),重啟了進(jìn)程,因?yàn)殛P(guān)閉了持久化,節(jié)點(diǎn)重啟后只有一個(gè)空的數(shù)據(jù)集。
節(jié)點(diǎn)B和C從節(jié)點(diǎn)A進(jìn)行復(fù)制,現(xiàn)在節(jié)點(diǎn)A是空的,所以節(jié)點(diǎn)B和C上的復(fù)制數(shù)據(jù)也會(huì)被刪除。
當(dāng)在高可用系統(tǒng)中使用Redis Sentinel,關(guān)閉了主服務(wù)器的持久化,并且允許自動(dòng)重啟,這種情況是很危險(xiǎn)的。比如主服務(wù)器可能在很短的時(shí)間就完成了重啟,以至于Sentinel都無(wú)法檢測(cè)到這次失敗,那么上面說(shuō)的這種失敗的情況就發(fā)生了。
如果數(shù)據(jù)比較重要,并且在使用主從復(fù)制時(shí)關(guān)閉了主服務(wù)器持久化功能的場(chǎng)景中,都應(yīng)該禁止實(shí)例自動(dòng)重啟。
且允許自動(dòng)重啟,這種情況是很危險(xiǎn)的。比如主服務(wù)器可能在很短的時(shí)間就完成了重啟,以至于Sentinel都無(wú)法檢測(cè)到這次失敗,那么上面說(shuō)的這種失敗的情況就發(fā)生了。
如果數(shù)據(jù)比較重要,并且在使用主從復(fù)制時(shí)關(guān)閉了主服務(wù)器持久化功能的場(chǎng)景中,都應(yīng)該禁止實(shí)例自動(dòng)重啟。