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