birk 发表于 2018-11-4 14:13:27

redis演练(10) redis Cluster 集群节点维护

#如果移除未启动状态节点,报错。  
#移除从节点(端口是40000)
  
# ../../src/redis-trib.rbdel-node 127.0.0.1:30001 529d12d3fd0e48b09ca71c8408b72baaf7954d11
  
>>> Removing node 529d12d3fd0e48b09ca71c8408b72baaf7954d11 from cluster 127.0.0.1:30001
  
No such node ID 529d12d3fd0e48b09ca71c8408b72baaf7954d11
  

  
#启动40000节点
  

  
# ps -ef |grep redis
  
...
  
root      3636   10 21:08 ?      00:00:01 ../../src/redis-server *:40010
  
root      3709   10 21:17 ?      00:00:00 ../../src/redis-server *:40000
  
#再次删除
  
# ../../src/redis-trib.rbdel-node 127.0.0.1:30001 529d12d3fd0e48b09ca71c8408b72baaf7954d11
  
>>> Removing node 529d12d3fd0e48b09ca71c8408b72baaf7954d11 from cluster 127.0.0.1:30001
  
>>> Sending CLUSTER FORGET messages to the cluster...
  
>>> SHUTDOWN the node.
  

  
# ps -ef |grep 40000
  
root      372425390 21:18 pts/1    00:00:00 grep 40000
  

  
#40000端口进程杀死了
  
# ps -ef |grep redis
  
...
  
root      3636   10 21:08 ?      00:00:01 ../../src/redis-server *:40010
  

  
成功移除了40000节点
  
127.0.0.1:30001> cluster nodes
  
fb2d0f156daec5e148c9b5a462e185b43e177e4e 127.0.0.1:30004@40004 master - 0 1473859078007 8 connected 0-5460
  
498ca3472b917cd1a8e1f14cbb67b54327bacae7 127.0.0.1:30003@40003 master - 0 1473859078007 3 connected 14647-16383
  
3220b1b57d652ab82bbe56750636e57d0a6480c2 127.0.0.1:30001@40001 myself,slave fb2d0f156daec5e148c9b5a462e185b43e177e4e 0 0 1 connected
  
4e1dd54fcae4a7f92d78b6a6add09b5cd1538c64 127.0.0.1:40010@50010 master - 0 1473859078007 9 connected 10923-14646
  
0717c88dad90923befe94d8e1536720bccb0d3b5 127.0.0.1:30006@40006 slave 498ca3472b917cd1a8e1f14cbb67b54327bacae7 0 1473859078006 6 connected
  
08a60e2151bf760a14a5fd27dd2025023a4826e8 127.0.0.1:30005@40005 slave 06e3347954cd77a8c61cea80673cd3e537ad3cd7 0 1473859078006 5 connected
  
06e3347954cd77a8c61cea80673cd3e537ad3cd7 127.0.0.1:30002@40002 master - 0 1473859078007 2 connected 5461-10922
  

  
######################################
  
###继续移除主节点40010
  
# 尝试直接删除40010节点( 发现不允许删除,提示有数据在,需要reshard处理)
  
# ../../src/redis-trib.rbdel-node 127.0.0.1:30001 498ca3472b917cd1a8e1f14cbb67b54327bacae7
  
>>> Removing node 498ca3472b917cd1a8e1f14cbb67b54327bacae7 from cluster 127.0.0.1:30001
  
Node 127.0.0.1:40010is not empty! Reshard data away and try again.
  
#执行reshard,重新分配(如果目标节点为从节点,也报错)
  
../../src/redis-trib.rbreshard--from 4e1dd54fcae4a7f92d78b6a6add09b5cd1538c64--to 498ca3472b917cd1a8e1f14cbb67b54327bacae7 --slots 3000 127.0.0.1:30001
  
#如果目标几点选择从节点,报错信息如下
  
#*** The specified node is not known or not a master, please retry.
  
#重复迁移数据到30003节点(我执行了2次)
  
../../src/redis-trib.rbreshard--from 4e1dd54fcae4a7f92d78b6a6add09b5cd1538c64--to 498ca3472b917cd1a8e1f14cbb67b54327bacae7 --slots 3000 127.0.0.1:30001
  

  
确认下是否40010上是否还分配着哈希槽
  
127.0.0.1:30001> cluster nodes
  
fb2d0f156daec5e148c9b5a462e185b43e177e4e 127.0.0.1:30004@40004 master - 0 1473860273927 8 connected 0-5460
  
498ca3472b917cd1a8e1f14cbb67b54327bacae7 127.0.0.1:30003@40003 master - 0 1473860274026 10 connected 10923-16383
  
3220b1b57d652ab82bbe56750636e57d0a6480c2 127.0.0.1:30001@40001 myself,slave fb2d0f156daec5e148c9b5a462e185b43e177e4e 0 0 1 connected
  
4e1dd54fcae4a7f92d78b6a6add09b5cd1538c64 127.0.0.1:40010@50010 master - 0 1473860274126 9 connected
  
0717c88dad90923befe94d8e1536720bccb0d3b5 127.0.0.1:30006@40006 slave 498ca3472b917cd1a8e1f14cbb67b54327bacae7 0 1473860273927 10 connected
  
08a60e2151bf760a14a5fd27dd2025023a4826e8 127.0.0.1:30005@40005 slave 06e3347954cd77a8c61cea80673cd3e537ad3cd7 0 1473860273927 5 connected
  
06e3347954cd77a8c61cea80673cd3e537ad3cd7 127.0.0.1:30002@40002 master - 0 1473860273927 2 connected 5461-10922
  
# 删除节点(这次成功了)
  
# ../../src/redis-trib.rbdel-node 127.0.0.1:30001 4e1dd54fcae4a7f92d78b6a6add09b5cd1538c64
  
>>> Removing node 4e1dd54fcae4a7f92d78b6a6add09b5cd1538c64 from cluster 127.0.0.1:30001
  
>>> Sending CLUSTER FORGET messages to the cluster...
  
>>> SHUTDOWN the node.
  
#确认下40040节点已经从集群中删除了。
  
127.0.0.1:30001> cluster nodes
  
fb2d0f156daec5e148c9b5a462e185b43e177e4e 127.0.0.1:30004@40004 master - 0 1473860314240 8 connected 0-5460
  
498ca3472b917cd1a8e1f14cbb67b54327bacae7 127.0.0.1:30003@40003 master - 0 1473860314341 10 connected 10923-16383
  
3220b1b57d652ab82bbe56750636e57d0a6480c2 127.0.0.1:30001@40001 myself,slave fb2d0f156daec5e148c9b5a462e185b43e177e4e 0 0 1 connected
  
0717c88dad90923befe94d8e1536720bccb0d3b5 127.0.0.1:30006@40006 slave 498ca3472b917cd1a8e1f14cbb67b54327bacae7 0 1473860314240 10 connected
  
08a60e2151bf760a14a5fd27dd2025023a4826e8 127.0.0.1:30005@40005 slave 06e3347954cd77a8c61cea80673cd3e537ad3cd7 0 1473860314240 5 connected
  
06e3347954cd77a8c61cea80673cd3e537ad3cd7 127.0.0.1:30002@40002 master - 0 1473860314240 2 connected 5461-10922
  

  
#确认下在40010上的数据,已经迁移到30003节点上。
  
127.0.0.1:30001> get k1
  
(error) MOVED 12706 127.0.0.1:30003


页: [1]
查看完整版本: redis演练(10) redis Cluster 集群节点维护