redis实战第十篇 集群收缩
时间:2022-07-23
本文章向大家介绍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
至此,集群节点下线完成。
- JavaScript 教程
- JavaScript 编辑工具
- JavaScript 与HTML
- JavaScript 与Java
- JavaScript 数据结构
- JavaScript 基本数据类型
- JavaScript 特殊数据类型
- JavaScript 运算符
- JavaScript typeof 运算符
- JavaScript 表达式
- JavaScript 类型转换
- JavaScript 基本语法
- JavaScript 注释
- Javascript 基本处理流程
- Javascript 选择结构
- Javascript if 语句
- Javascript if 语句的嵌套
- Javascript switch 语句
- Javascript 循环结构
- Javascript 循环结构实例
- Javascript 跳转语句
- Javascript 控制语句总结
- Javascript 函数介绍
- Javascript 函数的定义
- Javascript 函数调用
- Javascript 几种特殊的函数
- JavaScript 内置函数简介
- Javascript eval() 函数
- Javascript isFinite() 函数
- Javascript isNaN() 函数
- parseInt() 与 parseFloat()
- escape() 与 unescape()
- Javascript 字符串介绍
- Javascript length属性
- javascript 字符串函数
- Javascript 日期对象简介
- Javascript 日期对象用途
- Date 对象属性和方法
- Javascript 数组是什么
- Javascript 创建数组
- Javascript 数组赋值与取值
- Javascript 数组属性和方法
- Dynamic Programming - 213. House Robber II
- Dynamic Progamming - 198. House Robber
- Dynamic Programming - 221. Maximal Square
- Dynamic Programming - 174. Dungeon Game
- Dynamic Programming - 97. Interleaving String
- Dynamic Programming - 72. Edit Distance
- Dynamic Programming - 64. Minimum Path Sum
- Dynamic Programming - 322. Coin Change
- Dynamic Programming - 279. Perfect Squares
- Dynamic Programming - 120. Triangle
- Dynamic Programming - 63. Unique Paths II
- Tree - 109. Convert Sorted List to Binary Search Tree
- Tree - 108. Convert Sorted Array to Binary Search Tree Easy
- Tree - 236. Lowest Common Ancestor of a Binary Tree
- Tree - 235. Lowest Common Ancestor of a Binary Search Tree