Redis主從複製與哨兵機制

Redis主從複製

  • 一、redis的複製功能是支持多個數據庫之間的數據同步。一類是主數據庫(master)一類是從數據庫(slave),主數據庫能夠進行讀寫操做,當發生寫操做的時候自動將數據同步到從數據庫,而從數據庫通常是隻讀的,並接收主數據庫同步過來的數據,一個主數據庫能夠有多個從數據庫,而一個從數據庫只能有一個主數據庫。
  • 二、經過redis的複製功能能夠很好的實現數據庫的讀寫分離,提升服務器的負載能力。主數據庫主要進行寫操做,而從數據庫負責讀操做。

過程

  • 1:當一個從數據庫啓動時,會向主數據庫發送sync命令,
  • 2:主數據庫接收到sync命令後會開始在後臺保存快照(執行rdb操做),並將保存期間接收到的命令緩存起來
  • 3:當快照完成後,redis會將快照文件和全部緩存的命令發送給從數據庫。
  • 4:從數據庫收到後,會載入快照文件並執行收到的緩存的命令。

圖解以下:redis

clipboard.png

什麼是哨兵機制

Redis的哨兵(sentinel) 系統用於管理多個 Redis 服務器,該系統執行如下三個任務:數據庫

  • 監控(Monitoring): 哨兵(sentinel) 會不斷地檢查你的Master和Slave是否運做正常。
  • 提醒(Notification):當被監控的某個 Redis出現問題時, 哨兵(sentinel) 能夠經過 API 向管理員或者其餘應用程序發送通知。
  • 自動故障遷移(Automaticfailover):當一個Master不能正常工做時,哨兵(sentinel) 會開始一次自動故障遷移操做,它會將失效Master的其中一個Slave升級爲新的Master(經過選舉投票機制), 並讓失效Master的其餘Slave改成複製新的Master; 當客戶端試圖鏈接失效的Master時,集羣也會向客戶端返回新Master的地址,使得集羣能夠使用Master代替失效Master。

單個哨兵:緩存

clipboard.png

Master爲Redis主服務器,slave爲從服務器(redis只有一臺主服務器,多臺從服務器)。服務器

思考:若redis服務器一個個都掛了?怎麼處理?
答:重啓(×)運維

redis服務器都宕機了,哨兵模式選舉不了了,
應該是使用keepalived(重啓腳本)監聽,自動重啓,若服務器宕機了自動重啓,
若重啓失敗,則是郵件方式通知運維人員。spa

Redis高可用機制

keepalived+哨兵機制纔是完善的Redis高可用機制。
注意:keepalived是重啓腳本,不單單重啓redis,包括其餘軟件應用ip

具體實現後續再整理一下同步

相關文章
相關標籤/搜索