java redis 主从 哨兵_Redis主从复制与哨兵机制
Redis主從復(fù)制
1、redis的復(fù)制功能是支持多個數(shù)據(jù)庫之間的數(shù)據(jù)同步。一類是主數(shù)據(jù)庫(master)一類是從數(shù)據(jù)庫(slave),主數(shù)據(jù)庫可以進(jìn)行讀寫操作,當(dāng)發(fā)生寫操作的時候自動將數(shù)據(jù)同步到從數(shù)據(jù)庫,而從數(shù)據(jù)庫一般是只讀的,并接收主數(shù)據(jù)庫同步過來的數(shù)據(jù),一個主數(shù)據(jù)庫可以有多個從數(shù)據(jù)庫,而一個從數(shù)據(jù)庫只能有一個主數(shù)據(jù)庫。
2、通過redis的復(fù)制功能可以很好的實(shí)現(xiàn)數(shù)據(jù)庫的讀寫分離,提高服務(wù)器的負(fù)載能力。主數(shù)據(jù)庫主要進(jìn)行寫操作,而從數(shù)據(jù)庫負(fù)責(zé)讀操作。
過程
1:當(dāng)一個從數(shù)據(jù)庫啟動時,會向主數(shù)據(jù)庫發(fā)送sync命令,
2:主數(shù)據(jù)庫接收到sync命令后會開始在后臺保存快照(執(zhí)行rdb操作),并將保存期間接收到的命令緩存起來
3:當(dāng)快照完成后,redis會將快照文件和所有緩存的命令發(fā)送給從數(shù)據(jù)庫。
4:從數(shù)據(jù)庫收到后,會載入快照文件并執(zhí)行收到的緩存的命令。
圖解如下:
什么是哨兵機(jī)制
Redis的哨兵(sentinel)?系統(tǒng)用于管理多個?Redis?服務(wù)器,該系統(tǒng)執(zhí)行以下三個任務(wù):
監(jiān)控(Monitoring):?哨兵(sentinel)?會不斷地檢查你的Master和Slave是否運(yùn)作正常。
提醒(Notification):當(dāng)被監(jiān)控的某個?Redis出現(xiàn)問題時,?哨兵(sentinel)?可以通過?API?向管理員或者其他應(yīng)用程序發(fā)送通知。
自動故障遷移(Automaticfailover):當(dāng)一個Master不能正常工作時,哨兵(sentinel)?會開始一次自動故障遷移操作,它會將失效Master的其中一個Slave升級為新的Master(通過選舉投票機(jī)制),?并讓失效Master的其他Slave改為復(fù)制新的Master;?當(dāng)客戶端試圖連接失效的Master時,集群也會向客戶端返回新Master的地址,使得集群可以使用Master代替失效Master。
單個哨兵:
Master為Redis主服務(wù)器,slave為從服務(wù)器(redis只有一臺主服務(wù)器,多臺從服務(wù)器)。
思考:若redis服務(wù)器一個個都掛了?怎么處理?
答:重啟(×)
redis服務(wù)器都宕機(jī)了,哨兵模式選舉不了了,
應(yīng)該是使用keepalived(重啟腳本)監(jiān)聽,自動重啟,若服務(wù)器宕機(jī)了自動重啟,
若重啟失敗,則是郵件方式通知運(yùn)維人員。
Redis高可用機(jī)制
keepalived+哨兵機(jī)制才是完善的Redis高可用機(jī)制。
注意:keepalived是重啟腳本,不僅僅重啟redis,包括其他軟件應(yīng)用
具體實(shí)現(xiàn)后續(xù)再整理一下
總結(jié)
以上是生活随笔為你收集整理的java redis 主从 哨兵_Redis主从复制与哨兵机制的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: java case or_java –
- 下一篇: php执行mysql insert,当执