记一次redis cluster delete node失败

本文涉及的产品
云数据库 Redis 版,社区版 2GB
推荐场景:
搭建游戏排行榜
简介:

1、6611 的 slot 5731 move失败。 redis-cluster在reshard时失败,提示信息如下:
All nodes agree about slots configuration.

Check for open slots...
Node 172.28.192.84:6430 has slots in importing state (5731).

Node 172.28.192.98:6611 has slots in migrating state (5731).
The following slots are open: 5731
Check slots coverage...
All 16384 slots covered.
Please fix your cluster problems before resharding

slot 5731由于reshard失败,在6430上显示正在import,6611上显示正在migrate。
redis cluster在reshard、rebalance等操作时会执行check_cluster方法检查集群是否健康,只有健康的集群才能进行迁移。
此时无法再继续reshard,需要先fix修复集群,通过下面命令:
redis-trib.rb fix 172.28.192.84:6424
修复完成后,再继续执行reshard即可。
那为何会出现slot migrate失败,查看172.28.192.98:6611 节点的redis.log信息,有如下报错
Moving slot 5731 from 172.28.192.98:6611 to 172.28.192.84:6430:
[ERR] IOERR error or timeout reading to target instance

Performing Cluster Check (using node 172.28.192.84:6430)

迁移过程中遇到超时错误“[ERR] Calling MIGRATE: IOERR error or timeout reading to target instance”,导致只完成部分,可能会造成数据丢失。
如果迁移的slots数量多,应当设置redis-trib.rb的超时参数--timeout值大一点,该参数默认是60s。(变更脚本中未设置,使用的默认值)

2、已经执行过del_node下线的节点,在clusternodes中还显示handshake或者fail,分析是节点移除异常。需要手动执行 forget {downnodeid} 移除cluster nodes中的信息。

3、应用无法再造数据,我这边正在跟开发沟通,确定下次再缩容前,应用数据已落地,或应用可接受数据丢失。

相关实践学习
基于Redis实现在线游戏积分排行榜
本场景将介绍如何基于Redis数据库实现在线游戏中的游戏玩家积分排行榜功能。
云数据库 Redis 版使用教程
云数据库Redis版是兼容Redis协议标准的、提供持久化的内存数据库服务,基于高可靠双机热备架构及可无缝扩展的集群架构,满足高读写性能场景及容量需弹性变配的业务需求。 产品详情:https://www.aliyun.com/product/kvstore     ------------------------------------------------------------------------- 阿里云数据库体验:数据库上云实战 开发者云会免费提供一台带自建MySQL的源数据库 ECS 实例和一台目标数据库 RDS实例。跟着指引,您可以一步步实现将ECS自建数据库迁移到目标数据库RDS。 点击下方链接,领取免费ECS&RDS资源,30分钟完成数据库上云实战!https://developer.aliyun.com/adc/scenario/51eefbd1894e42f6bb9acacadd3f9121?spm=a2c6h.13788135.J_3257954370.9.4ba85f24utseFl
目录
相关文章
|
3月前
|
NoSQL Java Redis
Redis进阶-Jedis以及Spring Boot操作 Redis 5.x Cluster
Redis进阶-Jedis以及Spring Boot操作 Redis 5.x Cluster
51 0
|
2月前
|
SQL 消息中间件 存储
Flink报错问题之Flink报错:Table sink 'a' doesn't support consuming update and delete changes which is produced by node如何解决
Flink报错通常是指在使用Apache Flink进行实时数据处理时遇到的错误和异常情况;本合集致力于收集Flink运行中的报错信息和解决策略,以便开发者及时排查和修复问题,优化Flink作业的稳定性。
|
3月前
|
存储 NoSQL Redis
docker搭建Redis Cluster集群环境
docker搭建Redis Cluster集群环境
78 1
|
8天前
|
运维 NoSQL 算法
Java开发-深入理解Redis Cluster的工作原理
综上所述,Redis Cluster通过数据分片、节点发现、主从复制、数据迁移、故障检测和客户端路由等机制,实现了一个分布式的、高可用的Redis解决方案。它允许数据分布在多个节点上,提供了自动故障转移和读写分离的功能,适用于需要大规模、高性能、高可用性的应用场景。
15 0
|
3月前
|
存储 NoSQL 网络协议
Redis Cluster 原理说的头头是道,这些配置不懂就是纸上谈兵
Redis Cluster 原理说的头头是道,这些配置不懂就是纸上谈兵
23 0
|
3月前
|
NoSQL Linux Redis
Redis 6.X Cluster 集群搭建
Redis 6.X Cluster 集群搭建
32 0
|
3月前
|
运维 NoSQL 算法
Redis cluster集群原理与配置
Redis cluster集群原理与配置
42 0
|
3月前
|
存储 NoSQL Redis
redis集群cluster
redis集群cluster
32 0
|
3月前
|
存储 NoSQL Redis
docker compose搭建Redis Cluster集群环境
docker compose搭建Redis Cluster集群环境
96 0
|
3月前
|
NoSQL 网络安全 Redis
Redis进阶-5.x 单节点 及Redis Cluster 3主3从集群部署
Redis进阶-5.x 单节点 及Redis Cluster 3主3从集群部署
48 0