在分配完成redis集群节点后,如果需要重新分配,在执行配置指令后,提示错误:
[ERR] Node 192.168.100.130:6663 is not empty. Either the node already knows other nodes (check with CLUSTER NODES) or contains some key in database 0.
原因:
节点192.168.100.130:6663不是第一次使用。该节点可能与其他节点组成集群,或者在数据库0中包含一些数据。
如果组成过集群,在上一次创建集群时候会生成备份的文件、配置和一些脚本。如aof、rdb、nodes.conf 等文件,直接删除即可。
注:
rdb文件是定时将内存中的数据持久化到dump.rdb文件中。(全量备份)
对应conf配置文件中:dbfilename dump.rdb
aof文件是监听Redis日志,监听到变化时将指令持久化到appendonly.aof文件中。(指令追加)
对应conf配置文件中:appendfilename "appendonly.aof
nodes.conf 文件是redis运行时产生的节点配置文件。当启用集群模式配置cluster-enabled指令为yes时,每个节点实例都包含一个文件,这个文件存储该节点的配置,模式是nodes.conf。这个文件从来不会被手动创建,它是Redis集群实例启动的时候生成的,并且每次在需要的时候自动更新。
解决方法:
1.停止所有redis服务!(不停止服务直接删除文件无效!!!)
2.删除aof、rdb、nodes.conf 文件
3.重启redis服务。
4.必要的情况下执行flushdb。
参考链接:
http://www.choupangxia.com/2019/11/07/redis-node-is-not-empty/