redis client-output-buffer-limit 與主從同步遇到的問題

遇到的問題及說明redis

在一個生產項目中redis採用sentinel集羣,在一次故障主從切換後,主從同步一直存在異常,在日誌中發現有這樣一條日誌,不停的刷新。緩存

在主從切換時,主庫會進行rdb文件備份,備份完成後傳給從庫,從庫load接收的文件。這期間主庫的狀況會存在一個複製積壓緩存區中,等從庫load完成後,主庫把數據發給從庫3d

上面的錯誤是在這個過程當中積壓緩存區寫滿,致使主庫斷掉從庫鏈接,同步失敗;從庫發現失敗後又從新支持slaveof;從而致使不停的斷開,重連。日誌

解決辦法blog

解決辦法是修改 client-output-buffer-limit,在redis配置文件中默認配置是client-output-buffer-limit slave 256mb 64mb 60,對於訪問量很大或存儲數據不少redis服務,這個設置過小了,須要調大或直接取消限制同步

登入master執行命令:config set client-output-buffer-limit 'slave 0 0 0'  //取消限制it

而後執行 config rewrite 將改動保存到redis配置文件ast

而後在修改slave的配置,避免再次故障切換出現一樣的問題集羣

相關文章
相關標籤/搜索