首先我們會在從庫配置中檔案加入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 | 緩衝區內容傳送完畢,從此,每執行一個命令,都會想從伺服器傳送相同命令 | 執行主庫發來的緩衝區中的命令,執行完畢之後,接收並執行主庫發來的每一條寫命令 |
需要注意的是從庫在開始複製時,會先將本身的資料清空