一、本文目的
Redis的主從配置分為兩篇文章,第一篇主要介紹了Redis主從配置的搭建過程及使用,第二篇主要說明各種情況下Redis主從狀態,如Master掛掉,Slaver掛掉,掛掉后重新加入等。
二、常用命令
- 根據配置文件啟動redis: src/redis-server redis.confg
- 啟動redis客戶端:redis-cli -p port
- Slaver連接Master:slaveof host:ip (測試時使用slaveof手動連接master,正式環境使用配置文件)
- 關閉Redis:shutdown
- 查看主從信息:info Replication
三、Redis的配置
1、按照1主2從的結構搭建,即1個Master,2個Slaver節點
2、Redis配置文件redis.conf的配置
daemonize (后台運行) |
pidfile | port | logfile(日志,src目錄) | # slaveof <masterip> <masterport> (測試時使用slaveof手動連接master,正式環境使用配置文件) |
|
Master | yes | /var/run/redis6379.pid | 6379 | "redis6379.log" | |
Slaver1 | yes | /var/run/redis6381.pid | 6381 | "redis6381.log" | slaveof 127.0.0.1 6379 |
Slaver2 | yes | /var/run/redis6382.pid | 6382 | "redis6382.log" | slaveof 127.0.0.1 6379 |
3、配置完成后3個節點都是Master

4、配置主從節點(通過info replication查看主從關系)

5、Master節點設置key后異步同步到Slaver節點;Slaver節點只能讀取數據,不能修改

6、主節點掛掉后,手動將S1子節點升級為Master(命令:slaveof no one 手動將Slaver節點升級為Master節點)
操作步驟如下:
a) Master節點:Shutdown關閉節點
b) Slaver1節點:slaveof no one將其升級為Master節點
c) Slaver2節點:使用slaveof 127.0.0.1 6381 重連Slaver2將其視為Master節點
d) 原來的Master節點:重新啟動后,可以使用
slaveof 127.0.0.1 6381 連接Slaver2將其視為Master節點,自己成為Slaver節點

7、使用哨兵模式,自動監視Master節點,當前掛掉后,自動將Slaver節點變為Master節點
a) sentinel.conf配置文件,修改sentinel monitor host6379 127.0.0.1 6379 1,其它使用默認即可
host6379 主機名稱,隨便起 主機IP 端口 1表示選舉,某個slaver得到超過1票則成成為Master節點
host6379 主機名稱,隨便起 主機IP 端口 1表示選舉,某個slaver得到超過1票則成成為Master節點
b) 啟動sentinel: ./redis-sentinel ../sentinel.conf

8、手動shutdown Master節點后,等待一段時間(大概一分鍾),sentinel會重新選舉Master節點。下面將6381選舉為Master節點,6382自動重連6381的Master節點

6379 原來的Master節點重啟后變成Slaver節點

四、總結
- Master可讀可寫,Slaver只能讀,不能寫
- Master可以對應多個Slaver,但是數量越多壓力越大,延遲就可能越嚴重
- Master寫入后立即返回,幾乎同時將寫入異步同步到各個Slaver,所以基本上延遲可以忽略
- 可以通過slaveof no one命令將Slaver升級為Master(當Master掛掉時,手動將某個Slaver變為Master)
- 可以通過sentinel哨兵模式監控Master,當Master掛掉時自動選舉Slaver變為Master,其它Slaver自動重連新的Master