如何在Redis从节点实现自动连接对应主节点
方案可行性结论
完全可以实现,你提到的思路是对的,只需要修正命令的细节逻辑即可直接使用
核心实现逻辑
从节点执行info replication命令返回的结果中,固定包含master_host:【主节点实际IP】的配置行,只需要提取这一行的IP值传入redis-cli的-h参数即可。
可用命令示例
场景1:本地从节点为默认端口6379、无访问密码
redis-cli -h $(redis-cli info replication | grep 'master_host:' | cut -d ':' -f 2) -a 你的主节点访问密码
场景2:本地从节点有自定义密码/非默认端口
需要先给内层查询本地从节点的redis-cli补充对应参数:
redis-cli -h $(redis-cli -p 本地从节点端口 -a 本地从节点密码 info replication | grep 'master_host:' | cut -d ':' -f 2) -a 你的主节点访问密码
注意事项
- 你最初的写法里
$(info replication | cut ...)缺少了调用redis-cli执行内部命令的逻辑,info replication是Redis的内部命令,不能直接在shell环境执行,必须通过redis-cli调用才能拿到返回结果 - 如果担心命令行明文泄露密码,可以将
-a 密码参数替换为--askpass,执行时手动输入密码,或者将密码配置到redis-cli的配置文件中 - 如果需要连接主节点后直接切换到指定数据库,可以在命令末尾追加
-n 数据库编号参数
内容的提问来源于stack exchange,提问作者igaro4ak337
相关产品推荐
相关产品推荐

