持续创作,加速成长!这是我参与「掘金日新计划 · 6 月更文挑战」的第7天,点击查看活动详情
数据迁移&分槽
1、单机数据迁移集群思路
先将集群的卡槽都集中到一个主节点下,然后停止集群所有节点服务,将单机数据文件替换掉集中卡槽的主节点数据文件,启动当前主节点的服务,保存数据后再其他其他集群节点。最后将卡槽平均分给其他两个主节点
2、迁移数据
1)、将集群的所有卡槽集中到一个主节点下
// 进入集群目录
cd /usr/local/redis-cluster
// 检查集群卡槽分配情况
./redis-cli --cluster info ip:端口 -a 密码
// 如果某个主节点卡槽分配异常 先执行
./redis-cli --cluster fix 卡槽异常的IP:端口 -a 密码
// 卡槽分配没有异常开始迁移卡槽
./redis-cli --cluster reshard ip:端口 -a 密码
>>> Performing Cluster Check (using node 127.0.0.1:7002)
M: 4faa969455ae34669e5b9bf4b14655e969514122 127.0.0.1:7002
slots: (0 slots) master
0 additional replica(s)
S: 4e445cdf6b0430433a7a32928622e803f686ba76 127.0.0.1:7005
slots: (0 slots) slave
replicates 8ec7056e12788255ada53b548ee960cb690e72c7
M: 8ec7056e12788255ada53b548ee960cb690e72c7 127.0.0.1:7001
slots:0-10922 (10923 slots) master
2 additional replica(s)
M: b816bbff799243edd86e067879e6bfbfe37330e0 127.0.0.1:7003
slots:10923-16383 (5461 slots) master
1 additional replica(s)
S: dd2407d636459bbc8dc88df11321e387e567ee1e 127.0.0.1:7004
slots: (0 slots) slave
replicates 8ec7056e12788255ada53b548ee960cb690e72c7
S: c7e644caca2d0725d8ff0bd852f6e51eceb48970 127.0.0.1:7006
slots: (0 slots) slave
replicates b816bbff799243edd86e067879e6bfbfe37330e0
[OK] All nodes agree about slots configuration.
>>> Check for open slots...
>>> Check slots coverage...
[OK] All 16384 slots covered.
How many slots do you want to move (from 1 to 16384)? 5462 #表示迁出5462个卡槽
What is the receiving node ID? 4faa969455ae34669e5b9bf4b14655e969514122 #接收迁出卡槽的id,因为我们要把所以卡槽迁到127.0.0.1:7001上面,所以这里的id就是127.0.0.1:7001的id
Please enter all the source node IDs.
Type 'all' to use all the nodes as source nodes for the hash slots.
Type 'done' once you entered all the source nodes IDs.
Source node #1:8ec7056e12788255ada53b548ee960cb690e72c7 #移出去的节点id ,因为我们要把127.0.0.1:7002的卡槽迁出去,所以这里的id是127.0.0.1:7002的id Source node #2:done ..........................Do you want to proceed with the proposed reshard plan (yes/no)?yes
以相同的方式迁移另一个主节点的卡槽
最后再检验一次卡槽的分配情况,如果正常则关闭整个集群的所有节点服务
2)、迁移数据
将单机的数据rdb或aof文件替换掉拥有卡槽的主节点数据文件
启动当前主节点的服务,检查 是否正常
./redis-cli --cluster info ip:端口 -a 密码
没有异常则保存数据,然后其他其他集群节点服务
3)、平均分配卡槽
步骤跟将所有卡槽集中到一个节点一样
// 迁移卡槽
./redis-cli --cluster reshard ip:端口 -a 密码
最后再检测一次卡槽的分配情况:三个主节点平均分配卡槽