凌晨2点,你突然收到告警:Redis集群某个节点磁盘即将爆满!😱 检查发现是台老服务器需要下线,但直接关机可能导致数据丢失或集群崩溃,别慌!今天我们就用安全姿势移除节点,像拆积木一样稳当~
✅ 槽位(Slot):Redis集群16384个槽位,数据按槽分布
✅ 迁移过程:先搬数据再踢节点,避免"裸奔"
✅ 状态检查:全程盯着cluster info
和cluster nodes
redis-cli --cluster check 当前节点IP:端口 # 确保所有节点显示"ok"且无"fail"标记
⚠️ 重点检查:
flags
为master
flags
为slave
fail?
或handshake
异常状态 # 针对要移除的节点执行 redis-cli -h 待移除节点IP -p 端口 SAVE # 备份文件默认在dir配置的路径下,文件名dump.rdb
💡 小技巧:用CONFIG GET dir
快速定位备份路径
如果移除的是主节点:
redis-cli --cluster reshard 集群任意节点IP:端口
根据提示输入:
cluster nodes
查看其他主节点ID done
开始迁移 📊 监控迁移进度:
watch -n 1 'redis-cli --cluster info 集群节点IP:端口' # 直到所有槽位显示"ok"状态
redis-cli -h 待移除节点IP -p 端口 CLUSTER NODES # 检查该节点"slots"字段应为空:"slots: (empty)"
redis-cli --cluster del-node 集群任意节点IP:端口 待移除节点ID
🎉 成功标志:返回>>> Node removed from cluster
redis-cli --cluster check 集群存活节点IP:端口 # 确认: # 1. 节点列表已无移除的节点 # 2. 所有槽位均有归属且覆盖16384
❌ 暴力关机:直接停服务会导致集群认为节点故障,触发不必要的故障转移
❌ 槽位未清空:带槽位的节点被移除会导致数据丢失
❌ 从节点未处理:主节点下线前要先处理其从节点(建议先执行CLUSTER FAILOVER
切换)
🔹 低峰期操作:避免迁移影响业务性能
🔹 分批迁移:单次迁移不超过2000个槽位(用--cluster-from
指定部分源节点)
🔹 客户端兼容:Java客户端建议配合-Dspring.redis.cluster.refresh.adaptive=true
使用
✔️ 更新所有应用的Redis连接配置
✔️ 监控集群流量变化至少24小时
✔️ 清理下线节点的持久化文件(AOF/RDB)
ℹ️ 本文操作基于Redis 7.2+版本验证(2025-07测试通过),旧版本可能有参数差异,遇到问题欢迎评论区交流~ ✨
本文由 其尔容 于2025-07-31发表在【云服务器提供商】,文中图片由(其尔容)上传,本平台仅提供信息存储服务;作者观点、意见不代表本站立场,如有侵权,请联系我们删除;若有图片侵权,请您准备原始证明材料和公证书后联系我方删除!
本文链接:https://vps.7tqx.com/wenda/492164.html
发表评论