错误信息一:
[ERR] Node 127.0.0.1:6379 is not empty. Either the node already knows other nodes (check with CLUSTER NODES) or contains some key in database 0.
这个报错是因为集群配置信息有被修改后导致的,比如某个节点里的redis.conf配置有变更。
解决办法:删除集群启动生成的文件,包括日志log文件,rdb文件,temp文件,nodes-* .conf文件。(注:删除rdb文件,缓存数据库就没了,这个需谨慎,后续再看看怎么处理)重启集群即可
启动集群
错误信息二:
redis 集群启动后,一段时间后,发现日志文件很大,导致磁盘爆满,存储空间不够。
过一天,log文件直接变几个G 。
解决方法
通过 ./redis-cli --cluster check 127.0.0.1:6379 -a 123456 ,查询master和slaver主从节点。
从节点有6382 6383 6384 三个端口
查看下日志,发现一直再无权限重复请求连接master节点
因此,我们给从节点的配置里,加上masterauth的密码,然后重新启动集群。
重启后,我们查看日志,发现已正常。日志文件大小不再剧增。
错误信息三:
Warning: Could not create server TCP listening socket #:6385: Name or service not known
解决方法:redis.conf配置文件里的bind参数改为0.0.0.0
错误信息四:
添加新节点
[root@iZbp11qjms78wr7b18y6lbZ bin]# ./redis-cli --cluster add-node 121.40.83.196:6385 121.40.83.196:6386 -a 123456
Warning: Using a password with '-a' or '-u' option on the command line interface may not be safe.
>>> Adding node 121.40.83.196:6385 to cluster 121.40.83.196:6386
>>> Performing Cluster Check (using node 121.40.83.196:6386)
M: 9117dde0d27233c364dfde00a59934e9858e03df 121.40.83.196:6386
slots: (0 slots) master
[OK] All nodes agree about slots configuration.
>>> Check for open slots...
>>> Check slots coverage...
[ERR] Not all 16384 slots are covered by nodes.
解决方法:
先修复节点
./redis-cli --cluster fix -a 123456 121.40.83.196:6379
重新分片
./redis-cli -a 123456 --cluster reshard 121.40.83.196:6379
添加节点
./redis-cli --cluster add-node 121.40.83.196:6380 121.40.83.196:6379 -a 123456
错误信息四:
[ERR] Not all 16384 slots are covered by nodes.
./redis-cli --cluster fix -a 123456 121.40.83.196:6385
*** The specified node (569f6470718c6d248a484b56f4eb68d788c78331) is not known or not a master, please retry.
分片reshard是针对master节点,而不是slave 。所以要先把该节点的slot哈希槽,转移到其他master,再进行reshard。
错误信息五:
(error) ERR To set a master the node must be empty and without assigned slots.
从master节点变为slave节点,需要把slot 哈希槽释放出来。把slot转移到其他master节点上。
释放前
释放操作过程
将6383挂在6379master节点下面
我们可以看到6383已经变成slave节点,且replcate 6379节点。
依次操作,将集群架构调整为四主四从。