redis 3.0 集群__数据迁移和伸缩容
添加节点
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 to )?
#选择要接受这些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 #: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
redis 3.0 集群__数据迁移和伸缩容的更多相关文章
- redis 3.0 集群__配置文件详解(常用配置)
参考文档 http://www.cnblogs.com/huangjacky/p/3700473.html http://www.cnblogs.com/cxd4321/archive/2012/12 ...
- redis 3.0 集群__使用
参考文档 http://redis.readthedocs.org/en/latest/topic/cluster-tutorial.html#id5 http://blog.csdn.net/myr ...
- redis 3.0 集群__安装
参考文档 http://redis.io/topics/cluster-tutorial http://redis.io/topics/cluster-spec http://redis.readth ...
- redis 3.0 集群__故障测评
一, slave 是不能通过redis-cli 直接进行读写操作的,但是可以执行 keys, info 命令( 猜测类似全局性的不影响到原子性操作的命令应该都可以,没有一一试验) 二,集群中的某节点异 ...
- redis 3.0 集群__监控警报工具(sentinel)
参考文档 http://redis.readthedocs.org/en/latest/topic/sentinel.html 因为目前还处于开发阶段,就先不研究了,待续
- Redis 3.0 集群搭建
Redis 3.0 集群搭建 开启两个虚拟机 分别在两个虚拟机上开启3个Redis实例 3主3从两个虚拟机里的实例互为主备 下面分别在两个虚拟机上安装,网络设置参照codis集群的前两个主机 分别关闭 ...
- Redis 5.0 集群搭建
Redis 5.0 集群搭建 单机版的 Redis 搭建 https://www.jianshu.com/p/b68e68bbd725 /usr/local/目录 mkdir redis-cluste ...
- Redis 3.0集群 Window搭建方案
Redis 3.0集群 Window搭建方案 1.集群安装前准备 安装Ruby环境,安装:rubyinstaller-2.3.0-x64.exe http://dl.bintray.com/onecl ...
- 国际站中国区,孟买上Redis 4.0 集群版
信息摘要: 国际站中国区,孟买上线Redis 4.0 集群版适用客户: 所有用户版本/规格功能: redis 4.0 集群版产品文档: https://www.alibabacloud.com/hel ...
随机推荐
- react native android 真机调试
http://localhost:8081/index.android.bundle?platform=android 晕死,设备掉线了 C:\Users\ZHONGZHENHUA\.android\ ...
- 解剖Nginx·自动脚本篇(4)工具型脚本系列
目录 auto/have 向自动配置头文件追加可用宏定义(objs/ngx_auto_config.h) auto/nohave 向自动配置头文件追加不可用宏定义(objs/ngx_auto_conf ...
- css的优先级和权重问题 以及!important优先级
一,前言: 刚加的css怎么没有渲染出来?浏览器中查看,发现是被其他的css给覆盖了,相信我们都曾遇到过这样的问题.那么浏览器是如何选择css标签的渲染顺序的呢?换句话说,css选择器的优先级是怎么规 ...
- unity与android交互总结
http://www.jianshu.com/p/4739ce2f4cd1 http://www.cnblogs.com/suoluo/p/5443889.html http://www.th7.cn ...
- Ros学习——movebase源码解读之amcl
1.amcl的cmakelists.txt文件 add_executable(amcl src/amcl_node.cpp) target_link_libraries(amcl amcl_sens ...
- Qt自定义插件编程小结
qt自定义组件开发步骤演示.以下所有步骤的前提是自己先编译Qtcreator源码,最好生成release版的QtCreator,否则自定义的插件嵌入QtCreator会失败!!!(这个网上教程很多) ...
- 常用工具类——StringUtils
/* * Licensed to the Apache Software Foundation (ASF) under one or more * contributor license agreem ...
- mysql:查询数据库版本的几种方式
Mysql版本: 登入数据库的时候: select @@version; select version(); mysql> select @@version; +-----------+ | @ ...
- 实践作业4---DAY5阶段四。
阶段四:分析 这一阶段工作就是分析博客园与csdn优点缺点: 根据邹欣老师在<现代软件工程>一书中的描述: 程序 = 算法 + 数据结构: 软件 = 程序 + 软件工程(软件服务还有数据, ...
- mysql 存储过程学习(总)
#一.存储过程和存储函数的创建案例 CREATE PROCEDURE myprocedure(in a int,in b int ,OUT c INT) BEGIN set c=a+b; end; c ...