redis實現主從複製和高可用(主從切換)
當用單個redis伺服器壓力過大時,就要考慮redis主從複製了,主master複製寫入,從slave複製讀取
,從而緩解伺服器壓力
接下來就配置一個reids的主從複製
127.0.0.1 :6379(主)
127.0.0.1 :6380(從)
127.0.0.1 :6381(從)
主從複製主要經歷四個階段:
第一階段:slave與master建立連線
第二階段:slave向master發起同步請求
第三階段:slave接受master發來的dump.rdb資料
第四階段:slave載入dumo.rdb檔案
1.首先要有3個redis例項,安裝1個redis,複製2個redis
進入/etc資料夾將redis.conf複製兩份
2.分別配置redis.conf 不同的port 不同的pid 不同的redis資料夾
配置master的redis.conf
配置不用改變,預設的就行
3.然後配置slave1的redis.conf
pidfile /var/run/redis1.pid #改變pid的檔名 port 6380 #改變port埠號 dir /usr/local/redis1 #改變路徑 slaveof 127.0.0.1 6379 #繫結主的ip和埠
4.然後配置slave2的redis.conf
pidfile /var/run/redis2.pid #改變pid的檔名 port 6381 #改變port埠號 dir /usr/local/redis2 #改變路徑 slaveof 127.0.0.1 6379 #繫結主的ip和埠
5.配置完成後就開啟這三個redis
6.啟動成功後如圖所示
7用master進入redis-cli檢視info資訊
如上圖所示,角色資訊是mater,有兩個從分別是6380,6381
8.注意:master是寫入的,slave是讀的,我們用master-cli測試一下
首先來測試一下master
從上面看出redis是隻允許寫入的set,禁止讀的get
9.測試一下主從複製
master負責寫入設定一個鍵test,值為1111
slave負責讀取如圖:取出test,值為11111
但是當主從的主,發生宕機時,資料肯定就斷了,導致資料不能寫入,reids的作者也想到了這一點,所以在redis2.6以上中就有了reids的監控軟體sentinel(哨兵),sentinel會監控redis的主從是否存在,如果監控到主斷掉了,那麼就把從提升到主
下面配置下這個redis的sentinel.config
port 26379
port 26379 #master sentinel monitor master1 127.0.0.1 6379 1 #主redis的ip和埠 1是有一個哨兵發生故障時就進行故障轉移 sentinel down-after-milliseconds master1 3000 #多少毫米檢測一次 sentinel failover-timeout master1 900000 多少毫秒進行故障轉移 sentinel can-failover master1 yes sentinel parallel-syncs master1 2
哨兵的啟動:進入/usr/lcoal/redis目錄