redis 3.0 集群__数据迁移和伸缩容
2015-04-08 17:31
302 查看
添加节点
1,启动2个新的redis-sever, 参照 ( redis 3.0 集群____安装 ),端口号为 7007 和 7008
2,使用命令 redis-trib.rb add-node 命令添加新节点
redis-trib.rb add-node 192.168.10.229:7007 192.168.10.229:7001 ( 第一个是新节点ip:port, 第二个是任意一个已存在节点ip:port ),结果如下
这时候只是挂到集群里面而已,还没分配 slot 给它, 如下图 cluster_known_nodes : 7 但是 cluster_size : 3
3 使用 redis-trib.rb reshard 新节点IP:port 命令 分配 slot 给新节点,如下
redis-trib.rb reshard 192.168.10.229:7007
4 使用 cluster replicate master的nodeId 给新节点添加一个 slave
同第一步,先起一个 7008 的节点,并用 redis-trib.rb add-node 把该节点加入进来,
然后 redis-cli -c -p 7008 登录进来,最后用 cluster replicate 命令挂到 master 下面, 注意下面 7008 自己身份的变化
移除节点
使用命令 redis-trib.rb del-node 192.168.10.229:7008 d3e4d00bea60fd7873d4739a2b4008d9975ca04e
如果是删除 slave ,则可以直接删除
如果是删除 master ,必须先用 redis-trib.rb reshard 把数据迁移出去后才能删除
基于桶的数据分布方式大大降低了迁移成本,只需将数据slot从一个Redis Node迁移到另一个Redis Node即可完成迁移。
当桶从一个Node A向另一个Node B迁移时,Node A和Node B都会有这个slot,Node A上slot的状态设置为MIGRATING,Node B上slot的状态被设置为IMPORTING
当客户端请求时:
所有在Node A上的请求都将由A来处理,所有不在A上的key都由Node B来处理。同时,Node A上将不会创建新的key
1,启动2个新的redis-sever, 参照 ( redis 3.0 集群____安装 ),端口号为 7007 和 7008
2,使用命令 redis-trib.rb add-node 命令添加新节点
redis-trib.rb add-node 192.168.10.229:7007 192.168.10.229:7001 ( 第一个是新节点ip:port, 第二个是任意一个已存在节点ip:port ),结果如下
这时候只是挂到集群里面而已,还没分配 slot 给它, 如下图 cluster_known_nodes : 7 但是 cluster_size : 3
3 使用 redis-trib.rb reshard 新节点IP:port 命令 分配 slot 给新节点,如下
redis-trib.rb reshard 192.168.10.229:7007
redis-trib.rb reshard 192.168.10.229:7007 #根据提示选择要迁移的slot数量(ps:这里选择500) How many slots do you want to move (from 1 to 16384)? 500 #选择要接受这些slot的node-id What is the receiving node ID? 新节点的ID #选择slot来源: #all表示从所有的master重新分配, #或者数据要提取slot的master节点id,最后用done结束 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 #结束
4 使用 cluster replicate master的nodeId 给新节点添加一个 slave
同第一步,先起一个 7008 的节点,并用 redis-trib.rb add-node 把该节点加入进来,
然后 redis-cli -c -p 7008 登录进来,最后用 cluster replicate 命令挂到 master 下面, 注意下面 7008 自己身份的变化
移除节点
使用命令 redis-trib.rb del-node 192.168.10.229:7008 d3e4d00bea60fd7873d4739a2b4008d9975ca04e
如果是删除 slave ,则可以直接删除
如果是删除 master ,必须先用 redis-trib.rb reshard 把数据迁移出去后才能删除
数据迁移
Redis Cluster支持在线增/减节点。基于桶的数据分布方式大大降低了迁移成本,只需将数据slot从一个Redis Node迁移到另一个Redis Node即可完成迁移。
当桶从一个Node A向另一个Node B迁移时,Node A和Node B都会有这个slot,Node A上slot的状态设置为MIGRATING,Node B上slot的状态被设置为IMPORTING
当客户端请求时:
所有在Node A上的请求都将由A来处理,所有不在A上的key都由Node B来处理。同时,Node A上将不会创建新的key
相关文章推荐
- redis3.0集群特性
- 如何在linux平台上安装redis3.0集群版(附自动安装脚本)
- redis3.0 集群实战3 - java编程实战
- Redis 3.0的集群部署
- Redis 3.0 集群特性实验过程
- redis3.0集群部署和测试
- Redis3.0 Cluster集群安装
- redis3.0集群搭建
- redis 3.0的集群部署
- Redis 3.0集群(一)
- redis3.0 集群在windows上的配置
- Redis3.0官方集群配置
- Redis 3.0正式版发布,正式支持Redis集群
- Ubuntu Redis3.0集群测试
- 谈谈 Redis3.0 的集群处理
- redis 3.0 cluster 集群 学习之路篇 [2]
- Centos7 Redis3.0 集群搭建备忘
- redis 集群(3.0版本开始支持集群功能)
- redis 集群-新增加节点并数据迁移
- Redis 3.0的集群部署