Redis主從複製斷點續傳的工作原理概述

chenfeng發表於2019-01-09

從redis 2.8開始,如果在主從複製過程中遭遇連線斷開,則重新連線之後可以從中斷處繼續進行復制,而不必重新同步。


斷點續傳的工作原理具體如下:

主伺服器端為複製流維護一個記憶體緩衝區(in-memory backlog)。主從伺服器都維護一個複製偏移量(replication offset)

和master run id。

當連線斷開時,從伺服器會重新連線上主伺服器,然後請求繼續複製,假如主從伺服器的兩個master run id相同,並且指定的

偏移量在記憶體緩衝區中還有效, 則複製就會從上次中斷的點開始繼續。如果其中一個條件不滿足,就會進行完全重新同步

(在2.8版本之前就是直接進行完全重新同步)。


因為主執行id不儲存在磁碟中,因此如果從伺服器重啟了的話就只能進行完全同步了。


對於部分重新同步這個新特性,redis 2.8版本內部使用PSYNC命令,舊版本的實現中使用的是SYNC命令。

redis2.8版本可以檢測出它所連線的伺服器是否支援PSYNC命令,若不支援則使用SYNC命令。


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

相關文章