redis主从连接不成功错误

安装完redis后,设置主从,在从服务器上运行

127.0.0.1:6379> slaveof 192.168.159.131 6379

slaveof <主服务器的IP> <主服务器redis的端口>


然后回到主服务器上,运行info replication

显示如下:

127.0.0.1:6379> info replication
# Replication
role:master
connected_slaves:0
master_repl_offset:0
repl_backlog_active:0
repl_backlog_size:1048576
repl_backlog_first_byte_offset:0
repl_backlog_histlen:0

问题出现了,从没有连接上来。

查看主redis的日志文件,

[1922] 22 Mar 22:04:24.971 * RDB: 0 MB of memory used by copy-on-write
[1544] 22 Mar 22:04:25.008 * Background saving terminated with success
[1544] 22 Mar 22:27:23.567 * Background saving started by pid 2079
[2079] 22 Mar 22:27:23.574 * DB saved on disk
[2079] 22 Mar 22:27:23.575 * RDB: 0 MB of memory used by copy-on-write
[1544] 22 Mar 22:27:23.604 * Background saving terminated with success

查看从服务器日志,有如下错误

Error condition on socket for SYNC: No route to host

然后telnet 主的端口竟然不通,发现主服务器的iptables开着,关掉后就可以和主服务器的端口通了(生产环境添加iptables规则)。

但是发现还是从不能连上主,再看从的日志时,变成如下内容:

[4399] 22 Mar 14:41:56.311 # MASTER aborted replication with an error: NOAUTH Authentication required.
[4399] 22 Mar 14:41:57.313 * Connecting to MASTER 192.168.159.131:6379
[4399] 22 Mar 14:41:57.313 * MASTER <-> SLAVE sync started
[4399] 22 Mar 14:41:57.313 * Non blocking connect for SYNC fired the event.
[4399] 22 Mar 14:41:57.314 * Master replied to PING, replication can continue...
[4399] 22 Mar 14:41:57.315 * (Non critical) Master does not understand REPLCONF listening-port: -NOAUTH Authentication required.
[4399] 22 Mar 14:41:57.315 * Partial resynchronization not possible (no cached master)
[4399] 22 Mar 14:41:57.316 # Unexpected reply to PSYNC from master: -NOAUTH Authentication required.
[4399] 22 Mar 14:41:57.317 * Retrying with SYNC...
[4399] 22 Mar 14:41:57.319 # MASTER aborted replication with an error: NOAUTH Authentication required.

网上查找有说是版本不一致造成的,但是我的版本都是一样的。

最后找到了解决方法:原来是主从都开启了密码requirepass,导致不能验证成功

在redis从服务器的配置文件里面添加如下内容:

masterauth 123456  

(123456是我的主redis的密码,此参数是当与主连接时的密码验证)


这样就解决了主从连接不成功问题


### Redis 主从复制连接失败解决方案 当遇到Redis主从节点连接失败的情况时,可以按照以下几个方面来排查和解决问题。 #### 1. 配置文件检查 确保主服务器和从服务器的配置文件中关于复制的相关参数设置正确。特别是`slaveof`指令以及IP地址和端口号要准确无误[^2]。如果使用的是较新的版本,则应确认是否启用了更安全的身份验证机制,并相应调整客户端连接方式。 #### 2. 网络连通性检测 网络问题是造成连接失败的一个常见原因。可以通过ping命令测试两台机器之间的基本可达性;也可以利用telnet工具尝试建立到目标端口(默认为6379)上的TCP连接,以此判断是否存在防火墙阻止或其他网络障碍[^1]。 #### 3. 日志分析 查看Master与Slave的日志记录,寻找任何可能指示错误的信息。例如,在某些情况下可能会看到类似于“connection lost”的提示,这通常意味着双方之间存在间歇性的通信中断问题[^3]。 #### 4. 版本兼容性和数据一致性校验 同版本间的匹配可能导致同步过程中的冲突。另外,还需注意保持数据库内部结构的一致性——即master上所做的更改应当能被顺利地传递给slave而会引起后者崩溃或异常终止服务[^4]。 ```bash # 使用 info replication 命令监控状态 ./redis-cli info replication ``` 通过上述方法逐一排除潜在隐患之后,应该能够有效提高Redis主从架构下系统的稳定性和可靠性。
评论 6
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值