Unrecoverable error: corrupted cluster config file.

问题现象

启动集群后,log文件显示如下信息:

1
Unrecoverable error: corrupted cluster config file.

这种情况,因为集群cluster-config-file文件损坏引起,导致该节点无法启动

修复方案

  1. 首先在各个node上移除该出错节点
  2. 删除该cluster-config-file文件(node文件)
  3. 重新启动该节点
  4. 将该节点加入集群
  5. 指定该节点的master,将该节点以slave加入集群(本次修复未执行,集群自动恢复正常)

实施步骤

一、首先在各个node上移除该出错节点

执行以下脚本,将fail节点移除出集群,该操作仅移除一个机器中的无用节点信息,如果是多个机器,请在host_array中添加多个机器IP

1
2
3
4
5
6
7
8
9
10
11
12
13
14
#!/bin/bash
host_array=(192.168.0.101)
  for var in  ${host_array[@]};
  do
          for i in $(seq 7000 7012)
          do
             nodeids=`src/redis-cli -c -h $var -p $i cluster nodes|grep fail|awk '{print $1}'`
              for d in $nodeids
              do
                    echo $d
                    src/redis-cli -c -h $var -p $i cluster forget $d
              done
          done
  done

二、删除该cluster-config-file文件

1
mv nodes-7004.conf nodes-7004.conf.bak

三、重新启动该节点

1
redis-server redis.conf

四、将该节点加入集群

在集群任意instance 执行以下命令

1
CLUSTER MEET     //将ip和port所指定的节点添加到集群当中,让它成为集群的一份子

五、指定该节点的master,将该节点以slave加入集群

在此次修复场景中未进行第五步,集群自动分配成为不均衡节点的slave

如果集群未自动分配,在需要加入集群的实例上执行,指定为某一个master的slave

1
CLUSTER REPLICATE  //将当前节点设置为 node_id 指定的节点的从节点。

--本篇文章转自http://trumandu.github.io/2017/06/01/RedisCluster-%E9%9B%86%E7%BE%A4%E9%85%8D%E7%BD%AE%E6%96%87%E4%BB%B6%E6%8D%9F%E5%9D%8F%E4%BF%AE%E5%A4%8D/

你可能感兴趣的:(Redis,学习)