一,redis cluster命令行

  1. //集群(cluster)
  2. CLUSTER INFO 打印集群的信息
  3. CLUSTER NODES 列出集群当前已知的所有节点(node),以及这些节点的相关信息。
  4. //节点(node)
  5. CLUSTER MEET <ip> <port> 将 ip 和 port 所指定的节点添加到集群当中,让它成为集群的一份子。
  6. CLUSTER FORGET <node_id> 从集群中移除 node_id 指定的节点。
  7. CLUSTER REPLICATE <node_id> 将当前节点设置为 node_id 指定的节点的从节点。
  8. CLUSTER SAVECONFIG 将节点的配置文件保存到硬盘里面。
  9. //槽(slot)
  10. CLUSTER ADDSLOTS <slot> [slot ...] 将一个或多个槽(slot)指派(assign)给当前节点。
  11. CLUSTER DELSLOTS <slot> [slot ...] 移除一个或多个槽对当前节点的指派。
  12. CLUSTER FLUSHSLOTS 移除指派给当前节点的所有槽,让当前节点变成一个没有指派任何槽的节点。
  13. CLUSTER SETSLOT <slot> NODE <node_id> 将槽 slot 指派给 node_id 指定的节点,如果槽已经指派给另一个节点,那么先让另一个节点删除该槽>,然后再进行指派。
  14. CLUSTER SETSLOT <slot> MIGRATING <node_id> 将本节点的槽 slot 迁移到 node_id 指定的节点中。
  15. CLUSTER SETSLOT <slot> IMPORTING <node_id> 从 node_id 指定的节点中导入槽 slot 到本节点。
  16. CLUSTER SETSLOT <slot> STABLE 取消对槽 slot 的导入(import)或者迁移(migrate)。
  17. //键 (key)
  18. CLUSTER KEYSLOT <key> 计算键 key 应该被放置在哪个槽上。
  19. CLUSTER COUNTKEYSINSLOT <slot> 返回槽 slot 目前包含的键值对数量。
  20. CLUSTER GETKEYSINSLOT <slot> <count> 返回 count 个 slot 槽中的键。

这些命令是集群所独有的。执行上述命令要先登录

  1. [root@manage redis]# redis-cli -c -p 6382 -h 192.168.10.220    //登录
  2. 192.168.10.220:6382> cluster info   //查看集群情况
  3. cluster_state:ok
  4. cluster_slots_assigned:16384
  5. cluster_slots_ok:16384
  6. cluster_slots_pfail:0
  7. cluster_slots_fail:0
  8. cluster_known_nodes:6
  9. cluster_size:3
  10. cluster_current_epoch:8
  11. cluster_my_epoch:4
  12. cluster_stats_messages_sent:82753
  13. cluster_stats_messages_received:82754

二,添加节点

1,新配置二个测试节点

  1. # cd /etc/redis
  2. //新增配置
  3. # cp redis-6379.conf redis-6378.conf && sed -i "s/6379/6378/g" redis-6378.conf
  4. # cp redis-6382.conf redis-6385.conf && sed -i "s/6382/6385/g" redis-6385.conf
  5. //启动
  6. # redis-server /etc/redis/redis-6385.conf > /var/log/redis/redis-6385.log 2>&1 &
  7. # redis-server /etc/redis/redis-6378.conf > /var/log/redis/redis-6378.log 2>&1 &

2,添加主节点

  1. # redis-trib.rb add-node 192.168.10.219:6378 192.168.10.219:6379

注释:

192.168.10.219:6378是新增的节点

192.168.10.219:6379集群任一个旧节点

3,添加从节点

  1. # redis-trib.rb add-node --slave --master-id 03ccad2ba5dd1e062464bc7590400441fafb63f2 192.168.10.220:6385 192.168.10.219:6379

注释:

--slave,表示添加的是从节点

--master-id 03ccad2ba5dd1e062464bc7590400441fafb63f2,主节点的node id,在这里是前面新添加的6378的node id

192.168.10.220:6385,新节点

192.168.10.219:6379集群任一个旧节点

4,重新分配slot

  1. # redis-trib.rb reshard 192.168.10.219:6378 //下面是主要过程
  2. How many slots do you want to move (from 1 to 16384)? 1000 //设置slot数1000
  3. What is the receiving node ID? 03ccad2ba5dd1e062464bc7590400441fafb63f2 //新节点node id
  4. Please enter all the source node IDs.
  5. Type 'all' to use all the nodes as source nodes for the hash slots.
  6. Type 'done' once you entered all the source nodes IDs.
  7. Source node #1:all //表示全部节点重新洗牌
  8. Do you want to proceed with the proposed reshard plan (yes/no)? yes //确认重新分

新增加的主节点,是没有slots的,

M: 03ccad2ba5dd1e062464bc7590400441fafb63f2 192.168.10.219:6378
slots:0-332,5461-5794,10923-11255 (0 slots) master

主节点如果没有slots的话,存取数据就都不会被选中。

可以把分配的过程理解成打扑克牌,all表示大家重新洗牌;输入某个主节点的node id,然后在输入done的话,就好比从某个节点,抽牌。

5,查看一下,集群情况

  1. [root@slave2 redis]# redis-trib.rb check 192.168.10.219:6379
  2. Connecting to node 192.168.10.219:6379: OK
  3. Connecting to node 192.168.10.220:6385: OK
  4. Connecting to node 192.168.10.219:6378: OK
  5. Connecting to node 192.168.10.220:6382: OK
  6. Connecting to node 192.168.10.220:6383: OK
  7. Connecting to node 192.168.10.219:6380: OK
  8. Connecting to node 192.168.10.219:6381: OK
  9. Connecting to node 192.168.10.220:6384: OK
  10. >>> Performing Cluster Check (using node 192.168.10.219:6379)
  11. M: 5d8ef5a7fbd72ac586bef04fa6de8a88c0671052 192.168.10.219:6379
  12. slots:5795-10922 (5128 slots) master
  13. 1 additional replica(s)
  14. S: 9c240333476469e8e2c8e80b089c48f389827265 192.168.10.220:6385
  15. slots: (0 slots) slave
  16. replicates 03ccad2ba5dd1e062464bc7590400441fafb63f2
  17. M: 03ccad2ba5dd1e062464bc7590400441fafb63f2 192.168.10.219:6378
  18. slots:0-332,5461-5794,10923-11255 (1000 slots) master
  19. 1 additional replica(s)
  20. M: 19b042c17d2918fade18a4ad2efc75aa81fd2422 192.168.10.220:6382
  21. slots:333-5460 (5128 slots) master
  22. 1 additional replica(s)
  23. M: b2c50113db7bd685e316a16b423c9b8abc3ba0b7 192.168.10.220:6383
  24. slots:11256-16383 (5128 slots) master
  25. 1 additional replica(s)
  26. S: 6475e4c8b5e0c0ea27547ff7695d05e9af0c5ccb 192.168.10.219:6380
  27. slots: (0 slots) slave
  28. replicates 19b042c17d2918fade18a4ad2efc75aa81fd2422
  29. S: 1ee01fe95bcfb688a50825d54248eea1e6133cdc 192.168.10.219:6381
  30. slots: (0 slots) slave
  31. replicates b2c50113db7bd685e316a16b423c9b8abc3ba0b7
  32. S: 9a2a1d75b8eb47e05eee1198f81a9edd88db5aa1 192.168.10.220:6384
  33. slots: (0 slots) slave
  34. replicates 5d8ef5a7fbd72ac586bef04fa6de8a88c0671052
  35. [OK] All nodes agree about slots configuration.
  36. >>> Check for open slots...
  37. >>> Check slots coverage...
  38. [OK] All 16384 slots covered.

三,改变从节点的master

  1. //查看一下6378的从节点
  2. # redis-cli -p 6378 cluster nodes | grep slave | grep 03ccad2ba5dd1e062464bc7590400441fafb63f2
  3. //将6385加入到新的master
  4. # redis-cli -c -p 6385 -h 192.168.10.220
  5. 192.168.10.220:6385> cluster replicate 5d8ef5a7fbd72ac586bef04fa6de8a88c0671052  //新master的node id
  6. OK
  7. 192.168.10.220:6385> quit
  8. //查看新master的slave
  9. # redis-cli -p 6379 cluster nodes | grep slave | grep 5d8ef5a7fbd72ac586bef04fa6de8a88c0671052

四,删除节点

1,删除从节点

  1. # redis-trib.rb del-node 192.168.10.220:6385 '9c240333476469e8e2c8e80b089c48f389827265'

2,删除主节点

如果主节点有从节点,将从节点转移到其他主节点

如果主节点有slot,去掉分配的slot,然后在删除主节点

  1. # redis-trib.rb reshard 192.168.10.219:6378 //取消分配的slot,下面是主要过程
  2. How many slots do you want to move (from 1 to 16384)? 1000 //被删除master的所有slot数量
  3. What is the receiving node ID? 5d8ef5a7fbd72ac586bef04fa6de8a88c0671052 //接收6378节点slot的master
  4. Please enter all the source node IDs.
  5. Type 'all' to use all the nodes as source nodes for the hash slots.
  6. Type 'done' once you entered all the source nodes IDs.
  7. Source node #1:03ccad2ba5dd1e062464bc7590400441fafb63f2 //被删除master的node-id
  8. Source node #2:done
  9. Do you want to proceed with the proposed reshard plan (yes/no)? yes //取消slot后,reshard

新增master节点后,也进行了这一步操作,当时是分配,现在去掉。反着的。

  1. # redis-trib.rb del-node 192.168.10.219:6378 '03ccad2ba5dd1e062464bc7590400441fafb63f2'

新的master节点被删除了,这样就回到了,就是这篇文章开头,还没有添加节点的状态

<wiz_tmp_tag id="wiz-table-range-border" contenteditable="false" style="display: none;">

RedisCluster 添加/删除节点的更多相关文章

  1. redis cluster 添加/删除节点操作

    RedisCluster 添加/删除节点 添加节点新配置两个测试节点8008和9009 [root@--- ~]# /usr/local/redis-/bin/redis-server /u02/re ...

  2. mongodb replica set 添加/删除节点方法--http://www.ii123.com/jc/bc/bczh/258948.html

    replica set多服务器主从,添加,删除节点,肯定会经常遇到的.下面详细说明一下,添加,删除节点的2种方法. 一,利用rs.reconfig,来添加,删除节点 1,添加节点  代码如下   re ...

  3. MongoDB添加删除节点

    副本集添加删除节点 sharding添加删除节点 先将节点设置为hidden,再remove

  4. Hadoop日常维护系列——Hadoop添加删除节点

    添加节点 1.修改host    和普通的datanode一样.添加namenode的ip 2.修改namenode的配置文件conf/slaves    添加新增节点的ip或host 3.在新节点的 ...

  5. 节点操作-创建并添加&删除节点&替换&克隆节点

    <head><meta http-equiv="Content-Type" content="text/html; charset=utf-8" ...

  6. redis集群添加删除节点

    Redis3.0集群添加节点 1:首先把需要添加的节点启动 cd /usr/local/cluster/ mkdir 7006 cp /usr/local/cluster/redis.conf  /u ...

  7. Mongodb 3.6 副本集测试及添加删除节点等操作

    下载tar包并安装curl -O https://fastdl.mongodb.org/linux/mongodb-linux-x86_64-rhel70-3.6.8.tgz [root@mysqlt ...

  8. dom 添加删除节点

    //找到 div1 var div1 = document.getElementById("div1"); //创建 一个 p标签 var p = document.createE ...

  9. hadoop动态添加删除节点datanode及恢复

    1. 配置系统环境 主机名,ssh互信,环境变量等 本文略去jdk安装,请将datanode的jdk安装路径与/etc/hadoop/hadoop-evn.sh中的java_home保持一致,版本ha ...

随机推荐

  1. Android操作外置SD卡和U盘相关文章

    Android设备与外接U盘实现数据读取操作https://blog.csdn.net/true100/article/details/77775700 usbdisklibhttps://githu ...

  2. driver.switch_to.window(driver.window_handles[0])切换到最新打开窗口

    有时,使用selenium  定位页面元素时,浏览器明明打开的是需要定位的页面,但就是定位不到元素.打印一下元素page_source,会发现源码与页面不同. 主要问题是页面没有加载完成导致,需要设置 ...

  3. UnicodeDecodeError: 'utf-8' codec can't decode byte 0xb9 in position 16: invalid start byte

    读取一个csv文件失败,提示: UnicodeDecodeError: 'utf-8' codec can't decode byte 0xb9 in position 16: invalid sta ...

  4. UITableView+FDTemplateLayoutCell计算行高显示<二>

    之前记录过一篇UITableView+FDTemplateLayoutCell计算行高不成功的博客... 传送门:http://www.cnblogs.com/pengsi/p/6571311.htm ...

  5. 2. bash基础

    通配符 通配符 功能说明 实例 * 匹配所有字符 ls *.o ? 匹配所有的当个字符 ls net??? [a-z] 匹配属于a到z范围集合内的一个字符 ls [a-i]* [...] 与方括号内的 ...

  6. 树莓派实现摄像头监控(使用motion和mjpg-streamer)

    购买raspBerryCarmen,大概20元, 启动树莓派,安装: `sudo apt install motion` 配置/etc/motion/motion.conf, `sudo vim /e ...

  7. Python3 Selenium自动化web测试 ==> 第九节 WebDriver高级应用 -- 操作select 和 alert

    学习目的: 掌握页面常规元素的定位方法 场景: 网页正常的select元素下拉框常规方法和select专属方法 正式步骤: step1:常规思路select页面元素定位 处理HTML代码截图 # -* ...

  8. UUID相同导致的网络连接问题

    目录 场景 思路 解决过程 提升虚拟机配置 直连交换机 最终解决方案 总结 场景 有同事从公司寄了一台服务器到现场,用来安装数据库.缓存等组件供开发使用.到了之后,连接电源.网线,设置IP,用vSph ...

  9. PJzhang:在windows10中实现右键命令行快捷打开

    猫宁!!! (windows10---设置---轻松使用---键盘---开启PrtScn快速截图),或者winodws+shift+s kali linux中右键就可以打开终端命令行. 采用手工修改注 ...

  10. 【VS开发】socket编程原理

    socket编程原理 1.问题的引入 1) 普通的I/O操作过程: UNIX系统的I/O命令集,是从Maltics和早期系统中的命令演变出来的,其模式为打开一读/写一关闭(open-write-rea ...