1. 程式人生 > >redis實現主從複製和高可用(主從切換)

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目錄