Redis主從複製工作原理和步驟介紹

chenfeng發表於2018-12-18

Redis複製工作原理:

1. 如果設定了一個Slave,無論是第一次連線還是重連到Master,它都會發出一個SYNC命令;

2. 當Master收到SYNC命令之後,會做兩件事:

a) Master執行BGSAVE,即在後臺儲存資料到磁碟(rdb快照檔案);

b) Master同時將新收到的寫入和修改資料集的命令存入緩衝區(非查詢類);

3. 當Master在後臺把資料儲存到快照檔案完成之後,Master會把這個快照檔案傳送給Slave,而Slave則把記憶體清空後,載入該檔案到記憶體中;

4. 而Master也會把此前收集到緩衝區中的命令,透過Reids命令協議形式轉發給Slave,Slave執行這些命令,實現和Master的同步;

5. Master/Slave此後會不斷透過非同步方式進行命令的同步,達到最終資料的同步一致;


從伺服器連線主伺服器的步驟:


主伺服器端操作:                         


1.等待命令進入


2.開始執行BGSAVE,並使用緩衝區記錄BGSAVE之後執行的所有寫命令


3.BGSAVE執行完畢,向從伺服器傳送快照檔案,並在傳送期間繼續使用緩衝區記錄被執行的寫命令


4.快照檔案傳送完畢,開始向從伺服器傳送儲存在緩衝區裡面的寫命令


5.緩衝區儲存的寫命令傳送完畢;從現在開始,每執行一個寫命令,就向從伺服器傳送相同的寫命令


從伺服器端操作:


1.連線(或者重連線)主伺服器,傳送SYNC命令


2.根據配置選項來決定是否使用現有的資料(如果有的話)來處理客戶端的命令請求,還是向傳送請求的客戶端返回錯誤


3.丟棄所有舊資料(如果有的話),開始載入主伺服器發來的快照檔案


4.完成對快照檔案的解釋操作,像往常一樣開始接受命令請求


5.執行主伺服器發來的所有儲存在緩衝區裡面的寫命令;並從現在開始接收並執行主伺服器傳來的每個寫命令


來自 “ ITPUB部落格 ” ,連結:http://blog.itpub.net/15498/viewspace-2285572/,如需轉載,請註明出處,否則將追究法律責任。

相關文章