Redis包含master和slave兩種節點:master節點對外提供讀寫服務,slave節點作為master的數據備份,從主節點全量同步數據,主從復制架構下,默認Slave是只讀的,如果寫入則會報錯,但可以通過設置slave-read-only參數為no改為可寫。
主從復制是由slave主動觸發,流程如下:
1.首先slave向master發起sync命令,發起后,master被動的將新進的slave節點加入到自己的主備復制集群。
2.master收到sync后,開啟bgsave操作。
3.bgsave完成后,master將快照信息發送給slave.
4.發送期間,master收到的來自用戶客戶單的新的寫命令,除了正常的響應之外,都再存入一份到backlog隊列中。
5.快照信息發送完成后,master繼續發送backlog隊列信息。
6.backlog發送完成后,后續的寫操作同時發給slave來保持實時的異步復制。
slave端處理邏輯如下:
slave發送完sync后,繼續對外提供服務。
開始接收master的快照信息,同時,將slave現有數據清空,并將master快照寫入自身內存。
接收backlog內容并執行,期間對外提供讀請求。
繼續接收后續來自master的命令副本并繼續回放,以保持數據和master一致。
免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。