redis建立主從複製的過程

瓦力發表於2018-11-19

首先我們會在從庫配置中檔案加入slaveof masterHost masterPort來指定相應的主庫。此時如果啟動從庫,那麼redis會找到指定ip和埠號來連線master;如果是一個正在執行的redis伺服器,那麼我們可以執行slaveof masterHost masterPort命令來讓從庫開始複製。
下面表格展示了redis在主從複製時經歷了哪些步驟:

步驟 主伺服器 從伺服器
1 正常執行中… 傳送sync命令,連線到主伺服器
2 執行bgsave命令,並將稍後的寫命令記錄到緩衝區 如果配置slave-serve-stale-data 為 yes( 預設設定 ) ,從庫會繼續響應客戶端的請求;否則除了 INFO 和 SLAVOF 命令之外的任何請求都會返回給客戶端一個錯誤提示
3 bgsave執行完畢,向從庫傳送快照檔案,期間繼續使用緩衝區記錄寫命令 丟棄所有資料,載入主庫的快照檔案
4 快照傳送完畢,開始傳送之前提到的緩衝區中的寫命令 完成快照的解釋執行,開始正常接收命令請求
5 緩衝區內容傳送完畢,從此,每執行一個命令,都會想從伺服器傳送相同命令 執行主庫發來的緩衝區中的命令,執行完畢之後,接收並執行主庫發來的每一條寫命令

需要注意的是從庫在開始複製時,會先將本身的資料清空

相關文章