Redis主從複製

一般情況下的主從複製-增量同步

主節點會將改變數據的指令記錄保存在buffer,然後異步複製(異步的同步數據)到從節點,從節點一邊根據指令記錄同步數據,同時還會返回正在執行的命令的偏移量。內存中的buffer是一個定長的環形數組,大小有限,當buffer滿了的時候,新寫入的指令記錄會覆蓋之前的記錄。如果主節點和從節點的網絡出問題,從節點未收到的指令可能會被覆蓋造成丟失,這時候就需要快照同步了。

快照同步

主節點先進行bgsave,將數據全部快照到磁盤中,然後異步發送到從節點。從節點收到快照時,首先將自己內存中的數據清空,然後全量加載快照。加載完成後,通知主節點進行增量同步。新加入的節點或者第一次同步時,首先需要進行快照同步。如果快照同步時間過長或者buffer容量比較小的話,可能指令記錄被覆蓋,導致增量同步失敗,那麼會從節點會再次發起快照同步,可能也因此陷入無限快照同步的死循環。

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章