redis 修复 Slot 10923 is importing

今天同事突然说redis连不上了,先检查集群和节点状态:

  • 登录一个节点,检查集群状态:
./bin/redis-cli -c -h 192.168.20.133 -p 6380
cluster info

结果显示集群状态为fail

  • 登录所有节点:
./bin/redis-cli -c -h 192.168.20.133 -p 6380

执行命令:

cluster slots

有一个节点结果显示和其他节点不一样,少了两个节点的槽信息:
在这里插入图片描述
正确节点的槽信息:
在这里插入图片描述

  • 在这个出问题节点上,执行设置key的命令
set name xxx

结果显示报错:(error) CLUSTERDOWN The cluster is down

  • 在错误节点上执行节点检查命令:
./bin/redis-cli --cluster check 192.168.20.133 6379

结果显示有5000多个槽正在 importing,于是猜测可能是这些槽导入状态有问题没法复位导致节点异常:
于是创建一个txt文件setSlot.txt ,内容为5000个槽的导入状态清除命令:

CLUSTER SETSLOT 10923 STABLE
CLUSTER SETSLOT 10924 STABLE
CLUSTER SETSLOT 10925 STABLE
CLUSTER SETSLOT 10926 STABLE
CLUSTER SETSLOT 10927 STABLE
CLUSTER SETSLOT 10928 STABLE
CLUSTER SETSLOT 10929 STABLE
CLUSTER SETSLOT 10930 STABLE
...

然后执行命令:

cat setSlot.txt |./bin/redis-cli -h 192.168.20.133 -p 6379
  • 修复槽状态完毕后,查询集群状态,已经显示正常;再执行一个set命令,也正常,问题修复完毕。
Redis中的异常Slot通常指的是Redis集群中的一个槽位(slot)被认为处于异常状态。Redis集群将数据分片存储在不同的槽位上,每个槽位负责存储一部分数据。当一个槽位被标记为异常时,表示该槽位的数据无法正常访问或出现了问题。 常见的Redis异常Slot包括: 1. Importing(导入中):当Redis集群中的某个节点从其他节点接收到一个槽位的数据时,该槽位会被标记为Importing状态。这个状态表示该槽位的数据正在被导入到该节点上,此时该槽位的数据是不可用的。 2. Migrating(迁移中):当Redis集群中的某个节点将一个槽位的数据迁移到其他节点时,该槽位会被标记为Migrating状态。这个状态表示该槽位的数据正在被迁移,此时该槽位的数据在源节点和目标节点之间可能存在一段时间的不一致。 3. Stale(陈旧):当Redis集群中的某个节点认为某个槽位的数据已经过期或无效时,该槽位会被标记为Stale状态。这个状态表示该槽位的数据已经不可用或需要重新同步。 处理Redis异常Slot的方法通常包括: 1. 检查网络和节点状态:确保Redis集群中的各个节点正常运行,并且网络连接正常。 2. 检查数据导入和迁移:如果出现Importing或Migrating状态的异常Slot,可以等待导入或迁移过程完成,或手动触发重新导入或迁移。 3. 执行数据同步:对于Stale状态的异常Slot,可以尝试手动执行数据同步操作,确保数据的一致性。 4. 调整Redis集群配置:如果异常Slot问题频繁发生,可能需要检查Redis集群的配置参数,并进行相应的调整,以提高集群的稳定性和性能。 需要注意的是,Redis异常Slot可能是由于网络故障、节点故障、数据同步延迟等原因引起的,解决问题时需要综合考虑各种可能性,并采取相应的措施。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值