目录
前提:
我们在docker中配置了3主3从redis集群,集群中主机从机分布如下:
master slave
6381 -> 6386
6382 -> 6384
6383 -> 6385
配置可以参考:docker中3主3从redis集群配置_朂後 哋箹萣的博客-CSDN博客
一、主从容错切换迁移
1.数据读写存储
使用单机版命令会使得有些数据存不进去,如下图所示:
docker exec -it redis-node-1 /bin/bash
redis-cli -p 6381
使用集群版命令
docker exec -it redis-node-1 /bin/bash
redis-cli -p 6381 -c
查看集群信息:
redis-cli --cluster check 192.168.10.102:6381
2.容错切换迁移
1.主6381和从机切换,先停止主机6381
docker stop redis-node-1
使用主6382进入查看
docker exec -it redis-node-2 /bin/bash
redis-cli -p 6382 -c
2. 还原之前的3主3从
重新启动6381
docker start redis-node-1
查看状态。
cluster nodes
此时6381变为从机,并没有变为主机。此时我们还是想变为开始状态也就是6381为主机,6386为从机,可以先停掉6386,在启动6386即可。
docker stop redis-node-6
docker start redis-node-6
查看集群状态
redis-cli --cluster check 192.168.10.102:6381
二、主从扩容
1.新建6387、6388两个节点+新建后启动+查看是否8节点
docker run -d --name redis-node-7 --net host --privileged=true -v /data/redis/share/redis-node-7:/data redis:6.2.6 --cluster-enabled yes --appendonly yes --port 6387
docker run -d --name redis-node-8 --net host --privileged=true -v /data/redis/share/redis-node-8:/data redis:6.2.6 --cluster-enabled yes --appendonly yes --port 6388
2. 进入6387容器实例内部
docker exec -it redis-node-7 /bin/bash
redis-cli --cluster add-node 192.168.10.102:6387 192.168.10.102:6381
3.检查集群情况第1次
redis-cli --cluster check 192.168.10.102:6381
4. 重新分派槽号
redis-cli --cluster reshard 192.168.10.102:6381
5. 检查集群情况第2次
6.为主节点6387分配从节点6388
redis-cli --cluster add-node 192.168.10.102:6388 192.168.10.102:6387 --cluster-slave --cluster-master-id 44642055a3239feb92ac007e8a1faa3cb8e72140
7. 检查集群情况第3次
三、主从缩容
目的:6387和6388下线。
1. 检查集群情况1获得6388的节点ID
redis-cli --cluster check 192.168.10.102:6382
2. 从集群中将4号从节点6388删除
redis-cli --cluster del-node 192.168.10.102:6388 786a5d871fad669fa1df7a0adcb534c34a86faa2
redis-cli --cluster check 192.168.10.102:6382
3.将6387的槽号清空,重新分配,本例将清出来的槽号都给6381
redis-cli --cluster reshard 192.168.10.102:6381
4. 检查集群情况第二次
redis-cli --cluster check 192.168.10.102:6382
5. 将6387删除
redis-cli --cluster del-node 192.168.10.102:6387 44642055a3239feb92ac007e8a1faa3cb8e72140