前两天,去券商环境部署redis集群。集群部署好后,同事要部署其他服务需要重启服务器,重启后集群挂了。报一下错误:
[ERR] Node 10.25.98.14:6379 is not empty. Either the node already knows other nodes (check with CLUSTER NODES) or contains some key in database 0.
经过网上查询大概是需要删除以下几个文件:
appendonly.aof,dump.rdb,nodes.conf
以上文件是集群启动时生成的文件,若集群由于重启服务等异常操作挂掉时,需要清理掉这些文件方可创建集群。
当需要集群的reidis启动完毕后,执行下述步骤。若没启动,先启动:
/usr/local/redis/bin/redis-server /usr/local/redis/cluster/6379/redis-6379.conf
注:以下步骤会删除redis中的已存在的数据,若需保留数据,慎用
第一步
清理文件(appendonly.aof,dump.rdb,nodes.conf)
find / -name appendonly.aof | awk '{print $1}' | xargs -i rm -f {}
find / -name dump.rdb | awk '{print $1}' | xargs -i rm -f {}
find / -name nodes.conf | awk '{print $1}' | xargs -i rm -f {}
上述命令会依次删除服务器上的appendonly.aof,dump.rdb,nodes.conf文件。
注:由于上述命令会删除所有名为上述文件的文件,故若在服务器上存在非集群模式的redis 需核对后删除。
第二步
连接redis,清除数据库
/usr/local/redis/bin/redis-cli -h 192.168.31.xxx -p 6379
登录redis成功后,执行flushdb
命令,返回ok,即操作成功。对各个端口的redis 执行上述操作。
注:上述 -h 192.168.31.xxx 需用服务器地址,即使在本机上输入名,也不应使用localhost代替。
第三步
创建集群:
redis-trib create --replicas 1 192.168.31.xxx:6379 192.168.31.xxx:6379 192.168.31.xxx:6379 192.168.31.xxx:6380 192.168.31.xxx:6380 192.168.31.xxx:6380
创建集群成功。
由于在多台服务器间需要输入相同的命令,可设置xshell一条命令,多窗口执行。
设置如下:
勾选 Compose Bar
,勾选后,xshell下方有如下窗口:
点击箭头指向的按钮,会有一个选择框。使用多端操作,需选择To All Sessions
或者 To All Xshell
,然后在其右侧输入命令即可。
注:右侧命令无法使用Tab
键自动补全功能。