redis 主從備份及其主備切換
首先原文是用了3 個伺服器,我是用了一個伺服器;
然後再原文的基礎上,稍加了自己的整理。
前提:redis中,主從切換場景中,沒有絕對的主和從,只有初始化的主和從,然後當主down後,從就變成主了,而主即使連線上,也是從,不會變為主
1.redis-server的主備關係:
master : redis-1
slave1 : redis-2
slave3 : redis-3
2. 首先進行主從備份:
修改從服務 redis-1 redis-2 的redis.conf
在從服務上 修改redis.conf 加入 slaveof 127.0.0.1 6379
主從備份: 這裡設定成功之後,會進行主服務進行set之後,可在從服務進行get key ,可是一旦主服務宕機,從服務無法再進行set key
3.設定主從切換
三個伺服器都修改 sentinel-test.conf
加入
sentinel monitor MyMaster 127.0.0.1 6381 1
sentinel down-after-milliseconds MyMaster 5000
sentinel failover-timeout MyMaster 900000
sentinel parallel-syncs MyMaster 2
第一行配置指示 Sentinel 去監視一個名為 mymaster
的主伺服器, 這個主伺服器的 IP 地址為 127.0.0.1
, 埠號為 6379
, 而將這個主伺服器判斷為失效至少需要 2
個 Sentinel 同意 (只要同意 Sentinel 的數量不達標,自動故障遷移就不會執行)。
第二行down-after-milliseconds 選項指定了 Sentinel 認為伺服器已經斷線所需的毫秒數。
如果伺服器在給定的毫秒數之內, 沒有返回 Sentinel 傳送的 PING 命令的回覆, 或者返回一個錯誤, 那麼 Sentinel 將這個伺服器標記為主觀下線(subjectively down,簡稱 SDOWN )。
不過只有一個 Sentinel 將伺服器標記為主觀下線並不一定會引起伺服器的自動故障遷移: 只有在足夠數量的 Sentinel 都將一個伺服器標記為主觀下線之後, 伺服器才會被標記為客觀下線(objectively down, 簡稱 ODOWN ), 這時自動故障遷移才會執行。
將伺服器標記為客觀下線所需的 Sentinel 數量由對主伺服器的配置決定。
第三行暫時不知道是什麼意思;
第四行 parallel-syncs 選項指定了在執行故障轉移時, 最多可以有多少個從伺服器同時對新的主伺服器進行同步, 這個數字越小, 完成故障轉移所需的時間就越長。
如果從伺服器被設定為允許使用過期資料集(參見對 redis.conf 檔案中對 slave-serve-stale-data 選項的說明), 那麼你可能不希望所有從伺服器都在同一時間向新的主伺服器傳送同步請求, 因為儘管複製過程的絕大部分步驟都不會阻塞從伺服器, 但從伺服器在載入主伺服器發來的 RDB 檔案時, 仍然會造成從伺服器在一段時間內不能處理命令請求: 如果全部從伺服器一起對新的主伺服器進行同步, 那麼就可能會造成所有從伺服器在短時間內全部不可用的情況出現。
你可以通過將這個值設為 1 來保證每次只有一個從伺服器處於不能處理命令請求的狀態。
4.啟動
啟動redis-server
# ./src/redis-server redis.conf
啟動redis-sentinel
# ./src/redis-sentinelsentinel-test.conf
注意: 三臺伺服器都是這麼啟動的哦!~