這篇文章帶大家聊聊redis中的主從複製,介紹一下具體使用,注意事項以及哨兵模式,希望對大家有所幫助!
redis主從複製說目前使用最多的一種讀寫分離手段,由一個主Master附帶一個或多個從Slave,
主Master負責寫入操作,主要解決的問題是分擔redis讀的壓力,提高資料讀寫效率。 【相關推薦:Redis影片教學】
1.從庫指定連接主庫:
host為連接位址,port為連接位址的連接埠號,當然也可以自己複製多個redis.conf文件,透過修改其連接埠號線程號等資訊來啟動多個不同連接埠的redis服務
SLAVEOF [host] [port]
2.主庫負責寫(讀取也可以),從庫只能讀:
主库中写的数据能在从库中获取:6381为主库,6380为从库
3.使從函式庫重新成為主函式庫:
SLAVEOF no one
(1 )一般情況下,主庫斷線後,從庫會等待主庫重新連線,依舊保持從庫狀態
(2)從庫掉線後,需重新連接主庫,才能作為從庫,否則則為主庫
概述:為了當主庫服務掉線後,使其他從庫能重新選取一個主庫繼續服務運轉
作用:當主庫服務斷線之後,哨兵會監聽到主庫斷線,並進行投票操作使其中一個從庫成為主庫替代原主庫運行。
1、在redis服務啟動的目錄下建立一個sentinel.conf
文件,vim編輯此設定檔
` sentinel monitor host6379 127.0.0.1 6381 1 `
2、透過redis -sentinel 【檔案目錄】/sentinel.conf
啟動哨兵
注意:哨兵模式下,當原主庫重新連接後,哨兵會對其操作加入到新的主庫下,也就是作為新主庫的一個從庫存在。
连接建立-->数据同步-->命令持续传播 在从节点执行 slaveof 命令后,复制过程便开始运作,下面图示大概可以看到,\
從圖中可以看出複製過程大致分為6個流程
##主從配置之後的日誌記錄也可以看出這個流程1)保存主節點(master)資訊。
執行slaveof 後Redis 會列印如下日誌:
# Error condition on socket for SYNC: {socket_error_reason}3)發送 ping 指令。
連接建立成功後從節點發送 ping 請求進行首次通信,ping 請求主要目的如下:
·檢測主從之間網路套接字是否可用。
·偵測主節點目前是否可接受處理指令。
如果發送ping 指令後,從節點沒有收到主節點的pong 回覆或逾時,例如網路逾時或主節點正在阻塞無法回應指令,從節點會斷開複製連接,下次定時任務會發起重連。 \
4)權限驗證。如果主節點設定了 requirepass 參數,則需要密碼驗證,從節點必須配置 masterauth 參數保證與主節點相同的密碼才能通過驗證;如果驗證失敗複製將終止,從節點重新發起複製流程。
5)同步資料集。主從複製連線正常通訊後,對於首次建立複製的場景,主節點會把持有的資料全部傳送給從節點,這部分操作是耗時最長的步驟。
6)指令持續複製。當主節點把目前的資料同步給從節點後,便完成了複製的建立流程。接下來主節點會持續地把寫指令傳送給從節點,確保主從資料一致性。
更多程式相關知識,請造訪:程式設計影片! !
以上是一起來聊聊redis中的主從複製的詳細內容。更多資訊請關注PHP中文網其他相關文章!