1. 簡介
延時節點是主節點過去某個時間點的“數據快照”,通常用來做數據備份,如果主節點有誤操作而刪除了數據,可以通過延時節點來恢復數據。例如,當前時間是10:00,並且延時節點設置1個小時的延時同步,那么該節點不會同步1個小時內主節點上的操作。
2. 基本要求
2.1. 優先級
優先級必須設置為0,防止延時節點被選為主節點。
2.2. 隱藏節點
應該把延時節點設置為隱藏節點,這樣客戶端在做從服務器讀操作時,請求不會被分發到延時節點。
2.3. 可以選舉投票
在發生選舉時,該節點可以投票。
2.4. 延時時長
延時節點通過延時從opLog同步數據來實現,因此延時時長的設置需要考慮兩個因素:
- 不小於維護時間窗口。
- 比opLog的容量要小一些,不然會不能同步而進入stale狀態。
3. 延時節點設置
下面舉一個例子來說明如果設置延時節點。假定目前有一個包含5個節點的復制組:1個主節點、3個普通從節點、1個延時節點。延時節點的延時時長設置為3600s,並且它是一個優先級為0的隱藏節點,如下圖所示:
連接到復制組的主節點,然后配置:
>cfg = rs.conf()
cfg.members[1].priority = 0
cfg.members[1].hidden = true
cfg.members[1].slaveDelay = 3600
>rs.reconfig(cfg)
4. 注意事項
rs.reconfig()命令執行后,會強制當前的主節點下線,然后進行新的主節點選擇。主節點下線時,會關閉所有客戶端的連接,這個過程會持續10-20s,因此該操作應該在維護時間執行,減少對系統的影響。