Redis cluster增加一个机器后,reshard错误解决

1、集群新增实例

用redis-trib.rb给集群中添加了一台机器,但是这台机器刚添加进来时,slots数量是为空的。
Redis cluster增加一个机器后,reshard错误解决_第1张图片

2、重新分配hash slot

没有slot则不能处理任何数据,所以需要重新分配。执行如下命令

redis-trib.rb reshard 192.168.2.107:7001  (这里可以是集群中任何1个ip) 

Redis cluster增加一个机器后,reshard错误解决_第2张图片

3、执行失败

在reshard时失败,报的错是因为权限问题。
Redis cluster增加一个机器后,reshard错误解决_第3张图片
在网上了解到目前这个版本集群reshard不支持权限,只能将权限删除掉。

redis version(<4.0.7) doesn't support migrate command in the cluster with auth mode 

4、删除权限后还是报错

在这里插入图片描述

Node xxx:xx is not empty. Either the node already knows other nodes (check 
     with CLUSTER NODES) or contains some key in database 0.

错误提示是说:slot插槽被占用了、这是因为 搭建集群前时,以前redis的旧数据和配置信息没有清理干净。
用如下命令去修复,也是没用的:

redis-trib.rb fix 192.168.2.107:7001

5、删除集群相关数据

步骤1)用redis-cli 登录到每个节点执行 flushall 和 cluster reset 。
步骤2)停止各redis实例。
步骤3)将每个节点下aof、rdb的本地备份文件删除。
步骤4)将每个节点下的cluster-config-file文件删掉,这个是保存集群的状态数据文件。

6、重新启动各redis实例

重新启动各redis实例,然后再次创建集群,重复上述reshard过程,一切ok。

7、总结

1)开启认证,任何方式都可以
2)开启认证,只有4.0.7之后的版本支持migrate auth,但是4.0.9的不支持。
3)如果去掉密码能正常使用,那么在迁移时就去掉密码,这是最简便方法,否则就自己写脚本实现带密码用集群命令。

你可能感兴趣的:(电商系统实战)