redis主從復制踩到的那些坑


一、報錯:
* MASTER <-> SLAVE sync started
 # Error condition on socket for SYNC: No route to host
解決:
詳情見: https://blog.csdn.net/qq_28538407/article/details/81878609

主從復制時,如果主機狀態如下:

# Replication
role:master
connected_slaves:0
master_repl_offset:0
repl_backlog_active:0

 主機中的connected_slaves為0,說明主從復制並沒有成功。。

查看從機的redis的log(錯誤一般都是記錄在從機log),之前已經創建並指定了log的路徑,如下:

vim /usr/local/redis/log

查出問題如下:

* MASTER <-> SLAVE sync started # Error condition on socket for SYNC: No route to host

關閉主機的防火牆,注意:是主機的防火牆,然后再重啟服務就可以了。

在centos7中,systemctl stop firewalld即可關閉防火牆。其他版本可通過service iptables stop關閉防火牆。

1.關閉防火牆:

[root@localhost ~]# systemctl stop firewalld

2.查看redis進程:

[root@localhost ~]# ps -ef |grep -i redis
root      3667     1  1 16:17 ?        00:00:00 redis-server 0.0.0.0:6379

3.關掉進程:

[root@localhost ~]# kill -9  3667 

4.最后重啟redis服務以及客戶端。

[root@localhost ~]# redis-server /usr/local/redis/etc/redis.conf 
[root@localhost ~]# redis-cli
127.0.0.1:6379> info

完成主從復制。

在linux中安裝、部署環境時,出了問題一定要多看log。

參考資料:

https://blog.csdn.net/qq_28538407/article/details/81878609


二、報錯:
# Creating Server TCP listening socket 0.0.0.0:6379: bind: Address already in use
解決2:
跟上面的解決報錯一的過程差不多。查看redis進程,關掉進程,最后重啟redis服務。


三、報錯:
Error condition on socket for SYNC: Connection refused
* Connecting to MASTER 192.168.0.103:6379
解決3:
redis主服務器綁定了127.0.0.1,那么跨服務器IP的訪問就會失敗,從服務器用IP和端口訪問主的時候,主服務器發現本機6379端口綁在了127.0.0.1上,也就是只能本機才能訪問,外部請求會被過濾。所以需要修改redis-master的redis.conf,注釋掉bind 127.0.0.1,添加:

bind 0.0.0.0 


參考資料:   https://blog.csdn.net/chwshuang/article/details/54929277
 


免責聲明!

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



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