心跳機(jī)制
- 進(jìn)入命令傳播階段時(shí)候,master與slave間需要進(jìn)行信息交換,使用心跳機(jī)制進(jìn)行維護(hù),實(shí)現(xiàn)雙方連接保持在線
- master心跳:
- 指令:ping
- 周期:由repl-ping-slave-period決定,默認(rèn)10秒
- 作用:判斷slave是否在線
- 查詢:INFO replication,獲取slave最后一次連接時(shí)間間隔,lag向維持在0或1視為正常
- slave心跳任務(wù)
- 指令:REPLCONF ACK{offset}
- 周期:1秒
- 作用1:匯報(bào)slave自己的復(fù)制偏移量,獲取最新的數(shù)據(jù)變更指令
- 作用2:判斷master是否在線
心跳階段注意事項(xiàng)
- 當(dāng)slave多數(shù)掉線,或延遲過(guò)高時(shí),master為保障數(shù)據(jù)穩(wěn)定性,將拒絕所有信息同步操作
min-slave-to-write 2
min-slave-max-lag 8
slave數(shù)量少于2個(gè),或者所有slave的延遲都大于等于10秒時(shí),強(qiáng)制關(guān)閉master寫功能,停止數(shù)據(jù)同步
- slave數(shù)量由slave發(fā)送REPLCONF ACK命令做確認(rèn)
- slave延遲由slave發(fā)送REPLCONF ACK命令做確認(rèn)
