redis集群安装配置数据迁移和客户端(java方向)第二节,数据迁移

续第一节

1、添加新节点

cd到cluster目录

cd /usr/local/cluster

创建目录

mkdir 7007 7008
拷贝文件(操作上节相同)
cp /usr/local/redis/bin/* /usr/local/cluster/7007
cp /usr/local/redis/bin/* /usr/local/cluster/7008

编辑配置文件
vi /usr/local/redis/bin/redis.conf 
修改内容,本示例使用rdb模式
port 7007(端口节点目录设置就行)
daemonize yes
cluster-enabled yes(打开集群)
cluster-config-file nodes.conf
cluster-node-timeout10000(超时时间)
bind 192.168.0.1(绑定服务器ip,只接受绑定ip请求,是服务器网卡,一般绑定内网ip)
dump7007.rdb(数据库文件)

启动节点

/usr/local/cluster/7007/redis-server /usr/local/cluster/7007/redis.conf
/usr/local/cluster/7008/redis-server /usr/local/cluster/7008/redis.conf


添加master节点,第一个是新节点ip:port, 第二个是任意一个已存在节点ip:port

./redis-trib.rb add-node  192.168.0.1:7007 192.168.0.1:7001

添加slave节点,先查看刚添加master节点id。

登录客户端

./7001/redis-cli -h 192.168.0.1-p 7001 -c

查看节点信息

cluster nodes

找到7007节点id(比如:09584d14656e4bc97476943559e274035befb56c),要添加的从节点是7008,最后7001是之前添加任意节点

./redis-trib.rb add-node --slave --master-id 09584d14656e4bc97476943559e274035befb56c  192.168.0.1:7008192.168.0.1:7001


添加完节点后不能马上使用,先分配slot才能使用。

redis-trib.rb reshard 192.168.0.1:7007 
提示选择要迁移的slot数量(比如1000)  
How many slots do you want to move (from 1 to 16384)? 1000  
选择要接受这些slot的node-id(7007的id,先客户端登录记录下来)  
What is the receiving node ID? 09584d14656e4bc97476943559e274035befb56c  
选择slot来源:  all表示从所有的master重新分配,(下一步讲选择指定节点) 
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:all  
打印被移动的slot后,输入yes开始移动slot以及对应的数据.  
Do you want to proceed with the proposed reshard plan (yes/no)? yes 


2、删除节点

先移动节点上的slot才能删除节点,移动slot也很简单。(比如要删除7003节点,如果7003的从节点是7004)

./redis-trib.rb reshard 192.168.0.1:7003
How many slots do you want to move (from 1 to 16384)?16384 //输入一个大于或等于7003节点所拥有的slots数的数即可.
What is the receiving node ID? 09584d14656e4bc97476943559e274035befb56c //接收这些slots的目标节点,这里是7007节点
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:1ccbe1c2e462353559f60dd66d0fa6bcc69d0fa5 //因为我们要删除7003这个节点,所以源节点的id就是7003的节点ID
Source node #2:done //输入done,回车,就会开始从7003 这个节点迁移16384个slot(没有这么多就迁移拥有的全部)到7007节点中去. 

删除节点,id对应上

./redis-trib.rb del-node 192.168.0.1:7004 c3420c6742440cdbe81202ed0ff60217c73c91b0
./redis-trib.rb del-node 192.168.0.1:7003 39e21e755b59e9e1a75d55f9a91d26ef568853ad


3、数据迁移

如果之前使用的是单点redis,要改成cluster模式,需要之前的redis文件需要拆分多个对应节点下。

具体操作:如果是之前的rdb比较大可能需要一些时间,最好是先停止从节点服务(如果从节点都开而且文件比较大,服务器内存不够会可能中断任务,rdb较小就无所谓)。

1)、停止7001(随意一个master节点,我这里用7001)。

2)、要拆分的dump.rdb名称修改dump7001.rdb覆盖7001节点下的dump7001.rdb

3)、启动7001节点(如果rdb文件比较大需要一段时间加载,一定要加载完成才下一步)。

4)、加载完成执行./redis-trib.rb fix192.168.0.1:7001 (分配数据需要一段时间,耐心等待)。

5)、完成后打开刚才关闭的从节点,会自动复制数据到从节点。

这样redis cluster服务器端基本完成,下一节介绍客户端(Java方向,主要是讲spring,jedis和cluster下的批量提交等)

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 3
    评论
评论 3
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值