首頁  >  文章  >  資料庫  >  一起來聊聊redis中的主從複製

一起來聊聊redis中的主從複製

青灯夜游
青灯夜游轉載
2021-10-08 10:56:361677瀏覽

這篇文章帶大家聊聊redis中的主從複製,介紹一下具體使用,注意事項以及哨兵模式,希望對大家有所幫助!

一起來聊聊redis中的主從複製

一:概述

redis主從複製說目前使用最多的一種讀寫分離手段,由一個主Master附帶一個或多個從Slave,

主Master負責寫入操作,主要解決的問題是分擔redis讀的壓力,提高資料讀寫效率。 【相關推薦:Redis影片教學

一起來聊聊redis中的主從複製

二:具體使用

1.從庫指定連接主庫:

host為連接位址,port為連接位址的連接埠號,當然也可以自己複製多個redis.conf文件,透過修改其連接埠號線程號等資訊來啟動多個不同連接埠的redis服務

SLAVEOF [host] [port]

2.主庫負責寫(讀取也可以),從庫只能讀:

主库中写的数据能在从库中获取:6381为主库,6380为从库

一起來聊聊redis中的主從複製

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個流程

一起來聊聊redis中的主從複製

##主從配置之後的日誌記錄也可以看出這個流程

1)保存主節點(master)資訊。

執行slaveof 後Redis 會列印如下日誌:

一起來聊聊redis中的主從複製

2)從節點(slave)內部透過每秒執行的定時任務維護複製相關邏輯,當定時任務發現有新的主節點後,會嘗試與該節點建立網路連線\

一起來聊聊redis中的主從複製

從節點與主節點建立網路連線

從節點會建立一個socket 套接字,從節點建立了一個連接埠為51234的套接字,專門用於接受主節點發送的複製命令。從節點連接成功後列印如下日誌:

一起來聊聊redis中的主從複製

如果從節點無法建立連接,定時任務會無限重試直到連接成功或執行 slaveof no one 取消複製 關於連線失敗,可以從節點執行 info replication 查看 master_link_down_since_seconds 指標,它會記錄與主節點連線失敗的系統時間。從節點連接主節點失敗時也會每秒列印如下日誌,方便發現問題:

# Error condition on socket for SYNC: {socket_error_reason}

3)發送 ping 指令。

連接建立成功後從節點發送 ping 請求進行首次通信,ping 請求主要目的如下:
·檢測主從之間網路套接字是否可用。
·偵測主節點目前是否可接受處理指令。
如果發送ping 指令後,從節點沒有收到主節點的pong 回覆或逾時,例如網路逾時或主節點正在阻塞無法回應指令,從節點會斷開複製連接,下次定時任務會發起重連。 \

一起來聊聊redis中的主從複製

一起來聊聊redis中的主從複製

從節點發送的ping 命令成功返回,Redis 列印如下日誌,並繼續後續複製流程:\

一起來聊聊redis中的主從複製

4)權限驗證。如果主節點設定了 requirepass 參數,則需要密碼驗證,從節點必須配置 masterauth 參數保證與主節點相同的密碼才能通過驗證;如果驗證失敗複製將終止,從節點重新發起複製流程。

5)同步資料集。主從複製連線正常通訊後,對於首次建立複製的場景,主節點會把持有的資料全部傳送給從節點,這部分操作是耗時最長的步驟。

6)指令持續複製。當主節點把目前的資料同步給從節點後,便完成了複製的建立流程。接下來主節點會持續地把寫指令傳送給從節點,確保主從資料一致性。

更多程式相關知識,請造訪:程式設計影片! !

以上是一起來聊聊redis中的主從複製的詳細內容。更多資訊請關注PHP中文網其他相關文章!

陳述:
本文轉載於:juejin.cn。如有侵權,請聯絡admin@php.cn刪除