首先我們會在從函式庫設定檔加入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 | #緩衝區內容發送完畢,從此,每執行一個命令,都會想從伺服器發送相同指令 | 執行主庫發來的緩衝區中的指令,執行完畢之後,接收並執行主函式庫發來的每一個寫入指令 |
要注意的是從庫在開始複製時,會先將本身的資料清空。
更多redis知識請關注redis入門教學欄位。
以上是redis主從複製創建過程的詳細內容。更多資訊請關注PHP中文網其他相關文章!