redis3主3从集群一般对于中小互联网企业是够用的了,也保留了扩展6主6从的空间。之前办公测试环境中有一套redis3主3从集群,为了扩展也测试了6主6从,而后将测试云主机删掉了。但是,在cluster nodes信息中留下了6个fail信息。看着挺别扭的。
2023-11-22T08:41:21.png

搜索资料可以如下方式删除:

../../src/redis-trib.rb del-node 192.168.124.102:7010 0f38ec60781919ed7c15c386a711e72a3f43bd81

但是,需要该节点在线才行,否则会得到报错,大概内容是无法连接该节点。

使用gpt询问,还有一种办法。使用redis-cli登录任一redis节点,然后执行cluster forget fail节点id。但是呢,如果只在1个redis节点执行是不行的,需要在所有节点执行。

一共6个节点,每个节点执行6个命令,妥妥的两个循环。

#!/bin/env python3

nodes=["192.168.124.200:7000", "192.168.124.200:7001","192.168.124.179:7002","192.168.124.179:7003","192.168.124.180:7004","192.168.124.180:7005"]

commands=[]
commands.append("cluster forget 0f38ec60781919ed7c15c386a711e72a3f43bd81")
commands.append("cluster forget d9798113e286484abc1b32d6dbae218bc60ee4f4")
commands.append("cluster forget 986f2fc487b0449a9f62cfea7c333cec858d6e23")
commands.append("cluster forget 87b6515fe84944ffa10dfe9c1abb3daa21bfdf6b")
commands.append("cluster forget 034f7dcd918e5eb1596aca04fec740f628ad6408")
commands.append("cluster forget a0fe17bcf0cb2af63fca33d2456edcbb78bb6579")

for node in nodes:
  # print(node)
  for command in commands:
    # print(command)
    node_split = node.split(":")
    result = f"/opt/machtalk/redis/src/redis-cli -h {node_split[0]} -p {node_split[1]} -a xxx {command}"
    print(result)
    # 如需检查,使用如下命令
    #print(f"/opt/machtalk/redis/src/redis-cli -h {node_split[0]} -p {node_split[1]} -a xxx cluster nodes")
    break

  print("\n")

执行成功后,过一段时间看看,然后再看看,发现fail的节点已经彻底消失了。

2023-11-22T08:46:08.png

最后修改:2024 年 05 月 11 日
如果觉得我的文章对你有用,请随意赞赏