加载中...

redis维护节点常用操作

维护节点

  1. 添加主节点
  2. hash槽重新分配
  3. 添加从节点
  4. 删除结点

 

1 添加主节点

集群创建成功后可以向集群中添加节点,下面是添加一个master主节点

  • 添加7007结点作为新节点

执行命令:./redis-trib.rb add-node 120.0.1:7007 120.0.1:7001

 

 

 

  • 查看集群结点发现7007已添加到集群中

 

 

 

 

 

 

2   hash槽重新分配

添加完主节点需要对主节点进行hash槽分配,这样该主节才可以存储数据

  • 查看集群中槽占用情况

redis集群有16384个槽,集群中的每个结点分配自已槽,通过查看集群结点可以看到槽占用情况。

 

 

 

 


给刚添加的7007结点分配槽 

第一步:连接上集群(连接集群中任意一个可用结点都行)

[root@A001 redis]# ./redis-trib.rb reshard 192.168.101.3:7001

 

第二步:输入要分配的槽数量

输入:500,表示要分配500个槽

 

第三步:输入接收槽的结点id

 

输入:15b809eadae88955e36bcdbb8144f61bbbaf38fb

PS:这里准备给7007分配槽,通过cluster nodes查看7007结点id为:

15b809eadae88955e36bcdbb8144f61bbbaf38fb

 

第四步:输入源结点id

 

输入:all

 

第五步:输入yes开始移动槽到目标结点id

 

输入:yes

 

 

3   添加从节点

集群创建成功后可以向集群中添加节点,下面是添加一个slave从节点。

  • 添加7008从结点,将7008作为7007的从结点

命令:./redis-trib.rb add-node --slave --master-id 主节点id 新节点的ip和端口 旧节点ip和端口

 

执行如下命令:

./redis-trib.rb add-node --slave --master-id cad9f7413ec6842c971dbcc2c48b4ca959eb5db4  192.168.101.3:7008 192.168.101.3:7001

 

cad9f7413ec6842c971dbcc2c48b4ca959eb5db4  是7007结点的id,可通过cluster nodes查看。

 

 

 

 

注意:如果原来该结点在集群中的配置信息已经生成到cluster-config-file指定的配置文件中(如果cluster-config-file没有指定则默认为nodes.conf),这时可能会报错:

[ERR] Node XXXXXX is not empty. Either the node already knows other nodes (check with CLUSTER NODES) or contains some key in database 0

解决方法是删除生成的配置文件nodes.conf,删除后再执行./redis-trib.rb add-node指令

 

  • 查看集群中的结点,刚添加的7008为7007的从节点:

 

 

 

 

4   删除结点

命令:./redis-trib.rb del-node 120.0.1:7005 4b45eb75c8b428fbd77ab979b85080146a9bc017

 

删除已经占有hash槽的结点会失败,报错如下:

[ERR] Node 120.0.1:7005 is not empty! Reshard data away and try again.

 

需要将该结点占用的hash槽分配出去(参考hash槽重新分配章节)。

posted @ 2020-01-02 09:34  royal6  阅读(489)  评论(0编辑  收藏  举报