redis实战第十篇 集群收缩

2024-06-22 19:18

本文主要是介绍redis实战第十篇 集群收缩,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

集群收缩的过程和集群扩容的过程正好是反过来的
将207和207的从节点208从集群下线
1.迁移207上的4096个槽
使用redis-cli迁移槽,先将1365个槽迁移到31上

# redis-cli --cluster reshard 192.168.0.207:6380
...
How many slots do you want to move (from 1 to 16384)? 1365
What is the receiving node ID? 92fd7c2a7b7b8933d1019e72a852f621f6b4faff
Please enter all the source node IDs.Type 'all' to use all the nodes as source nodes for the hash slots.Type 'done' once you entered all the source nodes IDs.
Source node #1: b94828e8816574d66b413c6bfa6de130eb14ee66
Source node #2: done
...

再将1365个槽迁移到32上

# redis-cli --cluster reshard 192.168.0.207:6380
How many slots do you want to move (from 1 to 16384)? 1365                                    
What is the receiving node ID? ed93d5ea74751d7124a2d5830ce0806a0c962d43
Please enter all the source node IDs.Type 'all' to use all the nodes as source nodes for the hash slots.Type 'done' once you entered all the source nodes IDs.
Source node #1: b94828e8816574d66b413c6bfa6de130eb14ee66
Source node #2: done
...

再将1366个槽迁移到33上

# redis-cli --cluster reshard 192.168.0.207:6380
How many slots do you want to move (from 1 to 16384)? 1366
What is the receiving node ID? 3641ec8359d5400e5540d77600a2360de8ca367e
Please enter all the source node IDs.Type 'all' to use all the nodes as source nodes for the hash slots.Type 'done' once you entered all the source nodes IDs.
Source node #1: b94828e8816574d66b413c6bfa6de130eb14ee66
Source node #2: done
...

确认状态,207不再负责任何槽

127.0.0.1:6380> cluster nodes
3c1b16407c984f33b7c0ff06b8a7bbcc59c1d91b 192.168.0.208:6380@16380 slave 3641ec8359d5400e5540d77600a2360de8ca367e 0 1550231654002 15 connected
b94828e8816574d66b413c6bfa6de130eb14ee66 192.168.0.207:6380@16380 master - 0 1550231657009 12 connected

2.忘记节点
Redis提供了cluster forget {downNodeId}命令实现该功能,当节点收到cluster forget {downNodeId}该命令后会在60秒内将该节点加入到禁用列表,但是到了60秒后又会与节点进行Gossip通信。所以要在60秒内在所有节点上执行该操作,如果节点较多很明显执行起来不方便。好在redis还提供另一个更方便的命令 redis-cli --cluster del-node {host:port} {downNodeId}。显示建议使用redis-cli来做忘记节点操作。对于主从都下线的情况,先下线从节点,再下线主节点,避免不必要的全量复制。

[root@kafka31 data]# redis-cli --cluster del-node 192.168.0.31:6380 3c1b16407c984f33b7c0ff06b8a7bbcc59c1d91b
>>> Removing node 3c1b16407c984f33b7c0ff06b8a7bbcc59c1d91b from cluster 192.168.0.31:6380
>>> Sending CLUSTER FORGET messages to the cluster...
>>> SHUTDOWN the node.
[root@kafka31 data]# redis-cli --cluster del-node 192.168.0.31:6380 b94828e8816574d66b413c6bfa6de130eb14ee66
>>> Removing node b94828e8816574d66b413c6bfa6de130eb14ee66 from cluster 192.168.0.31:6380
>>> Sending CLUSTER FORGET messages to the cluster...
>>> SHUTDOWN the node.

3.确认集群状态

[root@kafka31 data]# redis-cli -p 6380
127.0.0.1:6380> cluster nodes
ed93d5ea74751d7124a2d5830ce0806a0c962d43 192.168.0.32:6380@16380 master - 0 1550232273000 14 connected 5461-6825 6827-10922
3ba3e8323b7b637c958977335bf7f7213c009929 192.168.0.35:6380@16380 slave ed93d5ea74751d7124a2d5830ce0806a0c962d43 0 1550232273000 14 connected
7fbf45fdc4d0780074f8fe324aac28ae686eebaa 192.168.0.34:6380@16380 slave 92fd7c2a7b7b8933d1019e72a852f621f6b4faff 0 1550232273753 13 connected
3641ec8359d5400e5540d77600a2360de8ca367e 192.168.0.33:6380@16380 master - 0 1550232275759 15 connected 6826 10923-16383
a5ac7dfedd81f2ecd9dd101ef8d9d4f70f895bbf 192.168.0.36:6380@16380 slave 3641ec8359d5400e5540d77600a2360de8ca367e 0 1550232274757 15 connected
92fd7c2a7b7b8933d1019e72a852f621f6b4faff 192.168.0.31:6380@16380 myself,master - 0 1550232274000 13 connected 0-5460

至此,集群节点下线完成。

这篇关于redis实战第十篇 集群收缩的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/1085171

相关文章

Python列表去重的4种核心方法与实战指南详解

《Python列表去重的4种核心方法与实战指南详解》在Python开发中,处理列表数据时经常需要去除重复元素,本文将详细介绍4种最实用的列表去重方法,有需要的小伙伴可以根据自己的需要进行选择... 目录方法1:集合(set)去重法(最快速)方法2:顺序遍历法(保持顺序)方法3:副本删除法(原地修改)方法4:

在Spring Boot中浅尝内存泄漏的实战记录

《在SpringBoot中浅尝内存泄漏的实战记录》本文给大家分享在SpringBoot中浅尝内存泄漏的实战记录,结合实例代码给大家介绍的非常详细,感兴趣的朋友一起看看吧... 目录使用静态集合持有对象引用,阻止GC回收关键点:可执行代码:验证:1,运行程序(启动时添加JVM参数限制堆大小):2,访问 htt

Redis在windows环境下如何启动

《Redis在windows环境下如何启动》:本文主要介绍Redis在windows环境下如何启动的实现方式,具有很好的参考价值,希望对大家有所帮助,如有错误或未考虑完全的地方,望不吝赐教... 目录Redis在Windows环境下启动1.在redis的安装目录下2.输入·redis-server.exe

Redis实现延迟任务的三种方法详解

《Redis实现延迟任务的三种方法详解》延迟任务(DelayedTask)是指在未来的某个时间点,执行相应的任务,本文为大家整理了三种常见的实现方法,感兴趣的小伙伴可以参考一下... 目录1.前言2.Redis如何实现延迟任务3.代码实现3.1. 过期键通知事件实现3.2. 使用ZSet实现延迟任务3.3

Spring Security基于数据库的ABAC属性权限模型实战开发教程

《SpringSecurity基于数据库的ABAC属性权限模型实战开发教程》:本文主要介绍SpringSecurity基于数据库的ABAC属性权限模型实战开发教程,本文给大家介绍的非常详细,对大... 目录1. 前言2. 权限决策依据RBACABAC综合对比3. 数据库表结构说明4. 实战开始5. MyBA

Redis分片集群的实现

《Redis分片集群的实现》Redis分片集群是一种将Redis数据库分散到多个节点上的方式,以提供更高的性能和可伸缩性,本文主要介绍了Redis分片集群的实现,具有一定的参考价值,感兴趣的可以了解一... 目录1. Redis Cluster的核心概念哈希槽(Hash Slots)主从复制与故障转移2.

Spring Boot + MyBatis Plus 高效开发实战从入门到进阶优化(推荐)

《SpringBoot+MyBatisPlus高效开发实战从入门到进阶优化(推荐)》本文将详细介绍SpringBoot+MyBatisPlus的完整开发流程,并深入剖析分页查询、批量操作、动... 目录Spring Boot + MyBATis Plus 高效开发实战:从入门到进阶优化1. MyBatis

MyBatis 动态 SQL 优化之标签的实战与技巧(常见用法)

《MyBatis动态SQL优化之标签的实战与技巧(常见用法)》本文通过详细的示例和实际应用场景,介绍了如何有效利用这些标签来优化MyBatis配置,提升开发效率,确保SQL的高效执行和安全性,感... 目录动态SQL详解一、动态SQL的核心概念1.1 什么是动态SQL?1.2 动态SQL的优点1.3 动态S

Pandas使用SQLite3实战

《Pandas使用SQLite3实战》本文主要介绍了Pandas使用SQLite3实战,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学... 目录1 环境准备2 从 SQLite3VlfrWQzgt 读取数据到 DataFrame基础用法:读

Redis 中的热点键和数据倾斜示例详解

《Redis中的热点键和数据倾斜示例详解》热点键是指在Redis中被频繁访问的特定键,这些键由于其高访问频率,可能导致Redis服务器的性能问题,尤其是在高并发场景下,本文给大家介绍Redis中的热... 目录Redis 中的热点键和数据倾斜热点键(Hot Key)定义特点应对策略示例数据倾斜(Data S