#输入需要迁移多少个槽位
How many slots do you want to move (from 1 to 16384)? XXXX
#需要接收槽位的节点ID
What is the receiving node ID? XXXX
#需要迁移的节点ID(all全部)
Source node #1:all
#是否确认
Do you want to proceed with the proposed reshard plan (yes/no)? yes
#登陆查看
[root@db01 ]# sh /server/scripts/redis_shell.sh login 6390
10.0.0.51:6390> CLUSTER NODES
10.0.0.51:6390> CLUSTER INFO
#重新做主从关系(教学实例)
先做db03的6381复制db01的6390
再做db01的6391复制db01的6380
#确认和测试
redis 工具收缩节点
1.进入脚本目录
cd /opt/redis_cluster/redis/src/
./redis-trib.rb reshard 10.0.0.51:6391
2.收缩过程
#输入要迁移的槽数
How many slots do you want to move (from 1 to 16384)? XXXX
#需要接收槽位的节点ID
What is the receiving node ID? XXXX
#需要迁移的节点ID
Source node #1:XXXX
Source node #2:done
#是否确认
Do you want to proceed with the proposed reshard plan (yes/no)? yes
#登陆查看
[root@db01 ]# sh /server/scripts/redis_shell.sh login 6380
10.0.0.51:6380> CLUSTER NODES
10.0.0.51:6380> CLUSTER INFO
#输入源节点的ID
1.xxxxx
2.done
#输入确认
yes
#工具删除节点
cd /opt/redis_cluster/redis/src/
./redis-trib.rb del-node 10.0.0.51:6390 ca07d35324306f7f035d598e76427a04523f08ec
./redis-trib.rb del-node 10.0.0.51:6391 cad275c00c314aad7e71e4ccd90b550a8ae1b515
3.数据导入导出工具
1.安装工具
cd /opt/redis_cluster/
git clone https://github.com/vipshop/redis-migrate-tool.git
cd redis-migrate-tool/
autoreconf -fvi
./configure
make && make install
2.生成配置文件
cat > redis_6379_to_6380.conf <<EOF
[source]
type: single
servers:
- 10.0.0.51:6379
[target]
type: redis cluster
servers:
- 10.0.0.51:6380
[common]
listen: 0.0.0.0:8888
source_safe: true
EOF
3.生成测试数据
vim input_key.sh
#!/bin/bash
for i in $(seq 1 1000)
do
redis-cli -c -h db01 -p 6379 set 6379k_${i} v_${i} && echo "set k_${i} is ok"
done
4.执行导入命令
redis-migrate-tool -c redis_6379_to_6380.conf
批量删除k
#!/bin/bash
for i in $(seq 1 1000)
do
redis-cli -c -h db01 -p 6379 DEL k6379_${i}
done