天天看點

redis主從同步收到以下參數影響

repl-ping-slave-period主從心跳ping的時間間隔。預設10

repl-timeout  從節點逾時時間。預設60

repl-backlog-size  主節點儲存記錄檔的大小。預設1M 

repl-backlog-ttl   主節點儲存記錄檔的時間。預設3600秒

client-output-buffer-limit 這個參數分為3部分,第二部分涉及slave。表示主節點輸出給從節點的緩存(output-buffer)大小。預設是:256M 64M 60秒。意思是:如果output-buffer>256M則從節點需要重新全同步,如果256>output-buffer>64且持續時間60秒,則從節點需要重新全同步。

主從同步的健康監控項(info Replication ):

主節點:

master_repl_offset 主節點backlog偏移量

slave0: offset   從節點backlog偏移量

master_repl_offset-offset  master_repl_offset與offset的差量為延遲backlog

從節點:

master_last_io_seconds_ago  從節點逾時時間

從網絡斷開到恢複後。slave redis 重新連結上主庫。判斷是否需要做全同步,或者是增量恢複的流程圖如下:

redis主從同步收到以下參數影響

1. repl-timeout  從節點逾時時間。逾時了會怎樣?

逾時了,從節點會直接重新同步一份主節點的完整資料。沒有逾時,則根據其他參數還可能同步增量資料而已。

2. client-output-buffer-limit 這個參數分為3部分,第二部分涉及slave。表示主節點輸出給從節點的緩存(output-buffer)大小。緩沖區裡放的是什麼?

這個參數針對有從庫的主節點,output-buffer緩沖區裡放的是主庫待同步給從庫的操作資料。

3. repl-backlog-size  主節點儲存記錄檔的大小。這個和client-output-buffer-limit有什麼關聯關系嗎?

針對有從庫的主節點,repl-backlog-size 設定主節點緩存操作資料的可用大小。如果網絡阻塞,主節點操作資料未同步給從節點而積累在緩沖區,這個緩沖區大小超過repl-backlog-size 。網路恢複之後,slave節點就必須重新從主節點同步一份完整資料。

client-output-buffer-limit 和 repl-backlog-size沒有什麼緊密關聯。

redis 4.0 從節點需要停止一段時間的時候,可以設定 repl-backlog-ttl  為0 。不釋放backlog的内容,這樣啟動slave的時候 可以部分同步。當然與repl-backlog-size  client-output-buffer-limit  的大小也有關

繼續閱讀