文章目录

  • 水平拓展节点(增加节点)
  • 增加主节点
  • 1、新建节点文件夹,并复制实例信息
  • 2、删除以前节点的数据信息,不然会导致后面节点添加失败
  • 3、修改配置文件
  • 4、启动两个redis 实例
  • 添加主节点
  • 移除节点(先从后主)
  • 移除从节点:
  • 移除主节点
  • 迁移插槽数据



redis原有集群图


redis集群增加主节点命令 redis集群新增节点_数据库

水平拓展节点(增加节点)

我们现在需要在以上集群的基础上在增加两个节点

服务器 10.0.8.149 端口 9007
服务器 10.0.8.149 端口 9008
并且打算9007作为主节点 9008作为从节点。

增加主节点

1、新建节点文件夹,并复制实例信息

cd /usr/software/redis-cluster
//新建两个节点的文件夹
mkdir redis9007 redis9008
//将之前节点下文件复制到新的节点下
cp  redis9001/*     redis9007
cp  redis9001/*     redis9008

2、删除以前节点的数据信息,不然会导致后面节点添加失败

本示例,redis节点数据存在在对应redis实例的data文件下

cd /usr/software/redis-cluster/redis9007/data
rm -rf *
cd /usr/software/redis-cluster/redis9008/data
rm -rf *

3、修改配置文件

配置基本与之前节点相同,只是端口号更改,我们采用替换方式
vim /usr/software/redis-cluster/redis9007/redis.conf
//替换命令
%s/9001/9007/g
vim /usr/software/redis-cluster/redis9008/redis.conf
//替换命令
%s/9001/9008/g

4、启动两个redis 实例

cd  /usr/software/redis-cluster/redis9007/
src/redis-server redis.conf
cd  /usr/software/redis-cluster/redis9008/
src/redis-server redis.conf

redis集群增加主节点命令 redis集群新增节点_数据库_02


出现上图表示两个节点启动成功

添加主节点

(1)增加主节点

redis-cli --cluster add-node 10.0.8.149:9007 10.0.8.149:9001 -a redis123456

上面两个地址10.0.8.149:9007标识新增主节点,10.0.8.149:9001原有的主节点

redis集群增加主节点命令 redis集群新增节点_插槽_03


出现如上图标识节点添加成功

你以为到此就成功了吗,并不然,我们知道redis集群中共有16384个插槽,在我们之前搭建集群的时候已将这16384个插槽都已经分配到了之前的所有主节点上。也就说,现在新的主节点没有插槽,也就没有任何作用,接下来我们开始为该主节点添加插槽。

(2)分配插槽

redis-cli --cluster reshard 10.0.8.149:9007 -a redis123456

redis集群增加主节点命令 redis集群新增节点_redis集群增加主节点命令_04


(3)指定该节点分配多少个插槽数,我们现在又4个主节点,所以平均下大概分配4000个。

redis集群增加主节点命令 redis集群新增节点_数据库_05


(4)输入指定要分配哈希槽的节点ID,也就是说我们当前那个节点要分配插槽,此处是9007节点要分配插槽,也就是ID

ba15565f65b55a8073e3b99f7739ba04b76665ce;

redis集群增加主节点命令 redis集群新增节点_数据库_06


redis集群增加主节点命令 redis集群新增节点_redis_07


(5)选择分配插槽的来源,输入all ,然后选择yes,即完成插槽分配

redis集群增加主节点命令 redis集群新增节点_redis_08


redis集群增加主节点命令 redis集群新增节点_插槽_09

分配前

redis集群增加主节点命令 redis集群新增节点_插槽_10


分配后

redis集群增加主节点命令 redis集群新增节点_redis_11


分配前后插槽对比

redis集群增加主节点命令 redis集群新增节点_缓存_12


可以明显的看出9007节点的插槽数都是平均从其他三个节点抽取过来的。

(6)分配哈希槽有两种方式

(1)将所有节点用作哈希槽的源节点。:all

(2)在指定的节点拿出指定数量的哈希槽分配到目标节点:done

上述使用的是第一种方式分配哈希槽:

现在我们讲一下用第二种方式怎么分配:

1、现在我们对7002端口的另一个master进行分配哈希槽

./src/redis-cli --cluster reshard ip:port -a 密码

2、这里输入给目录节点选择分配1000个哈希槽,并输入要给哪个节点分配哈希槽,就输入哪个节点的ID

redis集群增加主节点命令 redis集群新增节点_插槽_13


3、先输入源节点ID(哈希从哪里来的?),然后再输入done

redis集群增加主节点命令 redis集群新增节点_数据库_14


正在从源节点迁移哈希槽

redis集群增加主节点命令 redis集群新增节点_redis集群增加主节点命令_15


4、是否继续执行建议的reshard计划

Do you want to proceed with the proposed reshard plan (yes/no)?

输入yes

redis集群增加主节点命令 redis集群新增节点_缓存_16


以上主节点添加,插槽分配就完成了主节点的添加,下面开始从节点的操作

添加从节点:

redis集群增加主节点命令 redis集群新增节点_插槽_17


执行如下命令即可

redis-cli --cluster add-node --cluster-slave  --cluster-master-id ba15565f65b55a8073e3b99f7739ba04b76665ce 10.0.8.149:9008 10.0.8.150:9004 -a redis123456

cluster-master-id是主节点9007redis实例的ID

10.0.8.149:9008 是新加的从节点

10.0.8.150:9004 作为从节点的主节点

出现入下图所示,表示从节点添加成功

redis集群增加主节点命令 redis集群新增节点_redis集群增加主节点命令_18


redis集群增加主节点命令 redis集群新增节点_数据库_19


到此redis集群增加主从节点操作全部完成

移除节点(先从后主)

redis集群增加主节点命令 redis集群新增节点_数据库_20


我们移除后面新增的节点

移除从节点:

redis-cli --cluster del-node 10.0.8.149:9008 31f576e04b8b9ae8f10eff644bb5722f20937317 -a redis123456

10.0.8.149:9008 从节点地址

31f576e04b8b9ae8f10eff644bb5722f20937317 从节点ID

redis集群增加主节点命令 redis集群新增节点_插槽_21


出现上图表示从节点移除成功,我们可以通过查看集群节点,验证节点是否移除成功

redis集群增加主节点命令 redis集群新增节点_redis集群增加主节点命令_22

移除主节点

删除主节点,稍微比删除主节点麻烦些,应为主节点中有插槽数据,在删除主节点前需要 将插槽分配其他节点,否则会出现数据丢失

迁移插槽数据

redis-cli --cluster reshard 10.0.8.149:9007 -a redis123456

10.0.8.149:9007 删除节点信息

redis集群增加主节点命令 redis集群新增节点_redis集群增加主节点命令_23


9007总共有4000个插槽,我们需要将其平均的分配到其他3台主节点上

redis集群增加主节点命令 redis集群新增节点_数据库_24


首先将9007上的1333个插槽迁移至9001节点上

How many slots do you want to move (from 1 to 16384)? 1333

redis集群增加主节点命令 redis集群新增节点_redis_25


Do you want to proceed with the proposed reshard plan (yes/no)? yes

执行成功后,查看节点插槽数

迁移成功后插槽数

redis集群增加主节点命令 redis集群新增节点_redis_26


依次类推将9007剩下的节点分别迁移到9002,9006

9007到9002节点

redis集群增加主节点命令 redis集群新增节点_redis_27


同理完成插槽迁移后的节点详情

redis集群增加主节点命令 redis集群新增节点_redis_28


redis集群增加主节点命令 redis集群新增节点_插槽_29


出现上图上面9007节点插槽数据已经迁移完毕,可以移除节点。

redis-cli --cluster del-node 10.0.8.149:9007 ba15565f65b55a8073e3b99f7739ba04b76665ce -a redis123456

10.0.8.149:9007 需要移除节点
ba15565f65b55a8073e3b99f7739ba04b76665ce 节点ID

redis集群增加主节点命令 redis集群新增节点_缓存_30


查看redis集群节点验证节点是否移除

redis集群增加主节点命令 redis集群新增节点_redis集群增加主节点命令_31


到此,完成了集群的增加和移除节点的全部操作