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


遇到的問題及說明

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

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

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

解決辦法

解決辦法是修改 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'  //取消限制

然后執行 config rewrite 將改動保存到redis配置文件

然后在修改slave的配置,避免再次故障切換出現同樣的問題

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM