Redis 主從復制異常(從庫無法連接上主庫,連接狀態為wait_bgsave)


1. 正常主從復制狀態

 

 

 

 2. 異常狀態

 

 3. 查看日志

 

 4. 查看配置文檔

 

Redis為了解決輸出緩沖區消息大量堆積的隱患,設置了一些保護機制,主要采用兩種限制措施:

 

大小限制,當某一客戶端緩沖區超過設定值后直接關閉連接;
持續性限制,當某一客戶端緩沖區持續一段時間占用過大空間時關閉連接。
通過CONFIG GET *查看,可以找到客戶端輸出緩沖區的默認配置:在redis配置文件中默認配置是client-output-buffer-limit slave 256mb 64mb 60

 

167) "client-output-buffer-limit"
168) "normal 0 0 0 slave ,
對於普通客戶端來說,限制為0,也就是不限制。因為普通客戶端通常采用阻塞式的消息應答模式,何謂阻塞式呢?如:發送請求,等待返回,再發送請求,再等待返回。這種模式下,通常不會導致Redis服務器輸出緩沖區的堆積膨脹;
對於Pub/Sub客戶端(也就是發布/訂閱模式),大小限制是8M,當輸出緩沖區超過8M時,會關閉連接。持續性限制是,當客戶端緩沖區大小持續60秒超過2M,則關閉客戶端連接;
對於slave客戶端來說,大小限制是256M,持續性限制是當客戶端緩沖區大小持續60秒超過64M,則關閉客戶端連接。
上述三種規則都是可以修改的。可以通過CONFIG SET 命令設置或者直接修改redis.conf

 

config set client-output-buffer-limit pubsub 0 0 0 #將hard limit和soft limit同時置0,關閉該限制

 

 

 5. 修改配置文件或者直接命令修改 client-output-buffer-limit slave

     CONFIG SET 命令設置或者直接修改redis.conf

     config set client-output-buffer-limit pubsub 0 0 0 #將hard limit和soft limit同時置0,關閉該限制

     通過修改后主從復制恢復正常

 


免責聲明!

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



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