Redis 集群操作
当前Redis Cluster状态:
1 | $ pwd |
集群中各个节点状态:
1 | $ ./redis-trib.rb check 192.168.174.3:7000 |
Redis集群 Resharding
resharding步骤:
1) 使用命令开启reshard命令
./redis-trib.rb reshard host:port
2) 指定需要重新reshard的slots个数
How many slots do you want to move (from 1 to 16384)? 1000
3) 指定需要接收的节点ID
What is the receiving node ID? 7f12512f46ce8e0bac2fffcb7ca05c9941d2864c
4) 指定需要重新shard的节点,输入done开始reshard
Source node #1:ca33b3d7a60f8df7b74473f86c11f84df609fa45
Source node #2:done
具体操作流程如下:
1 | $ ./redis-trib.rb reshard 192.168.174.3:7000 |
重新sharding后集群中各个节点状态:
1 | $ ./redis-trib.rb check 192.168.174.3:7000 |
新增节点
1) 添加节点
添加redis实例,端口为7006
$ cp -r 7005 7006
修改7006目录中redis-cluster.conf文件中的参数:
1 | $ cat 7006/redis-cluster.conf |
启动redis实例节点
1 | $ cd 7006 |
添加Salve节点
方式一:
1)将新的节点添加到集群中
1 | $ ./redis-trib.rb add-node 192.168.174.3:7006 192.168.174.3:7000 |
2) 进入redis命令行,并查看集群状态
1 | $ redis-cli -c -h 192.168.174.3 -p 7006 |
可以看到默认将新添加的节点作为master
3) 将新节点修改为7000节点的slave,并查看修改后的集群状态
1 | 192.168.174.3:7006> cluster replicate 7f12512f46ce8e0bac2fffcb7ca05c9941d2864c |
方式二:
1) 将新节点直接作为7000节点的slave添加到集群中
1 | $ ./redis-trib.rb add-node --slave --master-id 7f12512f46ce8e0bac2fffcb7ca05c9941d2864c 192.168.174.3:7006 192.168.174.3:7000 |
2) 查看集群状态
1 | $ ./redis-trib.rb check 192.168.174.3:7001 |
删除节点
删除7000节点,并将7000端口节点上的slots分配到7006上
1) 将7006节点作为master节点添加到集群中,并察看集群状态:
1 | [zxm@node1 src]$ ./redis-trib.rb check 192.168.174.3:7001 |
2) 对集群进行reshard操作,将7000节点上的所有slots转移到7006节点上
1 | [zxm@node1 src]$ ./redis-trib.rb reshard 192.168.174.3:7000 |
3) 查看集群状态
1 | $ ./redis-trib.rb check 192.168.174.3:7001 |
4) 删除7000节点
1 | $ ./redis-trib.rb del-node 192.168.174.3:7000 7f12512f46ce8e0bac2fffcb7ca05c9941d2864c |
⚠️删除master节点时,该节点上slots必须为零