心跳機制
- 進入命令傳播階段後,master與slave間需要進行信息交換,使用心跳機制進行維護,實現雙方連接保持在線
- master心跳
- 指令:PNG
- 週期:由repl-ping-slave-period決定,默認10秒
- 作用:判斷slave是否在線
- 查詢:INFO replication 獲取slave最後一次連接時間間隔,lag項維持在0或1視爲正常
- slave心跳任務
- 指令:REPLCONF ACK(offset)
- 週期:1秒
- 作用1:彙報slave自己的複製偏移量,獲取最新的數據變更指令
- 作用2:判斷master是否在線
心跳階段注意事項
當slave多數掉線,或延遲過高時,master爲保障數據穩定性,將拒絕所有信息同步操作
min-slaves-to-write 2
min-slaves-max-lag 8
slave數量少於2個,或者所有slave的延遲都大於等於10秒時,強制關閉master寫功能,停止數據同步
- slave數量由slave發送REPLCONF ACK命令做確認
- slave延遲由slave發送REPLCONF ACK命令做確認