由于之前的redis cluster物理硬件性能不足。决定升级到更好的服务器上。
考虑到redis是核心生产数据库,决定在线迁移,迁移过程,不中断服务。

下面是测试环境的完成迁移步骤:
1. 原环境(测试环境,没有创建slave)

10.21.14.251:7000
10.21.14.251:7001
10.21.14.251:7002
 

2. 在新主机上,启动三个redis实例

10.21.10.120:7000
10.21.10.120:7001
10.21.10.120:7002
 

3. 将三个redis,都添加到集群中. 命令格式redis-trib.rb add-node <新增节点名> < 原集群节点名>

./redis-trib.rb add-node  10.21.10.120:7000  10.21.14.251:7000
./redis-trib.rb add-node 10.21.10.120:7001 10.21.14.251:7000
./redis-trib.rb add-node 10.21.10.120:7002 10.21.14.251:7000
 

4. 确认添加成功之后,开始reshard slot

./redis-trib.rb reshard 10.21.10.120:7000
 

5. 遇到点问题,由于网络超时等原因,导致resharding中断。然后出现两边都有slot的情况,需要通过fix的方式来修复

[redis@ip-10-21-14-251 redis]$ ./redis-trib.rb reshard 10.21.10.120:7000
>>> Performing Cluster Check (using node 10.21.10.120:7000)
M: 4422ab38377fa8828e0f7884570b3b482a66496b 10.21.10.120:7000
slots:5026-5460 (435 slots) master
0 additional replica(s)
M: 5b38e63a1091baa3a871a52275489a2aa1d28bfb 10.21.10.120:7002
slots:894-3397 (2504 slots) master
0 additional replica(s)
M: bb1572074d41254e5b4d5aae5c52e54f5129d6d5 10.21.14.251:7001
slots:3398-4999,5461-15922 (12064 slots) master
0 additional replica(s)
M: 396a7fbd2ec61752f9e848a1d8cc7b405aef0356 10.21.14.251:7000
slots: (0 slots) master
0 additional replica(s)
M: 9f215e7e4b511f3d2bbf5d734731899b71a62a3b 10.21.10.120:7001
slots:0-893,5000-5025,15923-15948 (946 slots) master
0 additional replica(s)
M: 0c9b383f65ae4fefc5e02617fb76a845d7510a53 10.21.14.251:7002
slots:15949-16383 (435 slots) master
0 additional replica(s)
[OK] All nodes agree about slots configuration.
>>> Check for open slots...
[WARNING] Node 10.21.10.120:7002 has slots in importing state (3398).
[WARNING] Node 10.21.14.251:7001 has slots in migrating state (3398).
[WARNING] The following slots are open: 3398
>>> Check slots coverage...
[OK] All 16384 slots covered.
*** Please fix your cluster problems before resharding <<<<<<<<<<<<<<<<<<<<<
 

6. 可以使用下面命令进行集群检查

./redis-trib.rb check 10.21.10.120:7000
 

7. 执行下面命令进行修复,然后就可以继续reshard slot了

./redis-trib.rb fix 10.21.10.120:7000
 

8. 全部slot迁移完成

$ ./redis-trib.rb check 10.21.10.120:7000
>>> Performing Cluster Check (using node 10.21.10.120:7000)
M: 4422ab38377fa8828e0f7884570b3b482a66496b 10.21.10.120:7000
slots:3399-4999,5026-7332 (3908 slots) master
0 additional replica(s)
M: 5b38e63a1091baa3a871a52275489a2aa1d28bfb 10.21.10.120:7002
slots:894-3398,7333-15332,15949-16383 (10940 slots) master
0 additional replica(s)
M: bb1572074d41254e5b4d5aae5c52e54f5129d6d5 10.21.14.251:7001
slots: (0 slots) master
0 additional replica(s)
M: 396a7fbd2ec61752f9e848a1d8cc7b405aef0356 10.21.14.251:7000
slots: (0 slots) master
0 additional replica(s)
M: 9f215e7e4b511f3d2bbf5d734731899b71a62a3b 10.21.10.120:7001
slots:0-893,5000-5025,15333-15948 (1536 slots) master
0 additional replica(s)
M: 0c9b383f65ae4fefc5e02617fb76a845d7510a53 10.21.14.251:7002
slots: (0 slots) master
0 additional replica(s)
[OK] All nodes agree about slots configuration.
>>> Check for open slots...
>>> Check slots coverage...
[OK] All 16384 slots covered.
 

确认一下状态

[redis@ip-10-21-14-251 redis]$ ./redis-cli -p 7000 cluster nodes
bb1572074d41254e5b4d5aae5c52e54f5129d6d5 10.21.14.251:7001 master - 0 1509611814919 6 connected
9f215e7e4b511f3d2bbf5d734731899b71a62a3b 10.21.10.120:7001 master - 0 1509611811917 14 connected 0-893 5000-5025 15333-15948
5b38e63a1091baa3a871a52275489a2aa1d28bfb 10.21.10.120:7002 master - 0 1509611815923 13 connected 894-3398 7333-15332 15949-16383
396a7fbd2ec61752f9e848a1d8cc7b405aef0356 10.21.14.251:7000 myself,master - 0 0 1 connected
4422ab38377fa8828e0f7884570b3b482a66496b 10.21.10.120:7000 master - 0 1509611813919 12 connected 3399-4999 5026-7332
0c9b383f65ae4fefc5e02617fb76a845d7510a53 10.21.14.251:7002 master - 0 1509611812917 3 connected
 

9. 确认状态OK的话,开始删除节点

 ./redis-trib.rb del-node 10.21.14.251:7000 396a7fbd2ec61752f9e848a1d8cc7b405aef0356
./redis-trib.rb del-node 10.21.14.251:7001 bb1572074d41254e5b4d5aae5c52e54f5129d6d5
./redis-trib.rb del-node 10.21.14.251:7002 0c9b383f65ae4fefc5e02617fb76a845d7510a53
 

10. 干掉10.21.14.251:7002成功,

 [redis@ip-10-21-14-251 redis]$ ./redis-trib.rb del-node 10.21.14.251:7002 0c9b383f65ae4fefc5e02617fb76a845d7510a53
>>> Removing node 0c9b383f65ae4fefc5e02617fb76a845d7510a53 from cluster 10.21.14.251:7002
>>> Sending CLUSTER FORGET messages to the cluster...
>>> SHUTDOWN the node.
[envuser@ip-10-21-14-251 redis]$ ./redis-trib.rb check 10.21.10.120:7000
>>> Performing Cluster Check (using node 10.21.10.120:7000)
M: 4422ab38377fa8828e0f7884570b3b482a66496b 10.21.10.120:7000
slots:3399-4999,5026-7332 (3908 slots) master
0 additional replica(s)
M: 5b38e63a1091baa3a871a52275489a2aa1d28bfb 10.21.10.120:7002
slots:894-3398,7333-15332,15949-16383 (10940 slots) master
0 additional replica(s)
M: bb1572074d41254e5b4d5aae5c52e54f5129d6d5 10.21.14.251:7001
slots: (0 slots) master
0 additional replica(s)
M: 396a7fbd2ec61752f9e848a1d8cc7b405aef0356 10.21.14.251:7000
slots: (0 slots) master
0 additional replica(s)
M: 9f215e7e4b511f3d2bbf5d734731899b71a62a3b 10.21.10.120:7001
slots:0-893,5000-5025,15333-15948 (1536 slots) master
0 additional replica(s)
[OK] All nodes agree about slots configuration.
>>> Check for open slots...
>>> Check slots coverage...
[OK] All 16384 slots covered.
 

状态检查

[redis@ip-10-21-14-251 redis]$ ./redis-cli -p 7000 cluster nodes
bb1572074d41254e5b4d5aae5c52e54f5129d6d5 10.21.14.251:7001 master - 0 1509611900094 6 connected
9f215e7e4b511f3d2bbf5d734731899b71a62a3b 10.21.10.120:7001 master - 0 1509611902100 14 connected 0-893 5000-5025 15333-15948
5b38e63a1091baa3a871a52275489a2aa1d28bfb 10.21.10.120:7002 master - 0 1509611901098 13 connected 894-3398 7333-15332 15949-16383
396a7fbd2ec61752f9e848a1d8cc7b405aef0356 10.21.14.251:7000 myself,master - 0 0 1 connected
4422ab38377fa8828e0f7884570b3b482a66496b 10.21.10.120:7000 master - 0 1509611899093 12 connected 3399-4999 5026-7332
 

根据上面步骤,删除剩余节点即可。
经过测试,应用在迁移过程中,没有受到任何影响。但是应用连接池的IP需要找机会增加10.21.10.120。

Redis Cluster在线迁移的更多相关文章

  1. 安全稳定实现redis cluster自动化迁移

    背景 目前redis集群最火的是codis和redis cluster(官方),但官方自带工具并没有支持密码操作.那么需要密码认证使用redis cluster集群的同学要仔细看了哦. 相信大家很多人 ...

  2. redis cluster 添加/删除节点操作

    RedisCluster 添加/删除节点 添加节点新配置两个测试节点8008和9009 [root@--- ~]# /usr/local/redis-/bin/redis-server /u02/re ...

  3. Redis Cluster高可用集群在线迁移操作记录【转】

    之前介绍了redis cluster的结构及高可用集群部署过程,今天这里简单说下redis集群的迁移.由于之前的redis cluster集群环境部署的服务器性能有限,需要迁移到高配置的服务器上.考虑 ...

  4. Redis Cluster 4.0高可用集群安装、在线迁移操作记录

    之前介绍了redis cluster的结构及高可用集群部署过程,今天这里简单说下redis集群的迁移.由于之前的redis cluster集群环境部署的服务器性能有限,需要迁移到高配置的服务器上.考虑 ...

  5. Redis Cluster高可用集群在线迁移操作记录

    之前介绍了redis cluster的结构及高可用集群部署过程,今天这里简单说下redis集群的迁移.由于之前的redis cluster集群环境部署的服务器性能有限,需要迁移到高配置的服务器上.考虑 ...

  6. redis集群在线迁移

    地址规划 主机名 ip地 端口 redis01 10.0.0.10 6379.6380 redis02 10.0.0.60 6379.6380 redis03 10.0.0.61 6379.6380 ...

  7. redis集群在线迁移第一篇(数据在线迁移至新集群)实战一

    迁移背景:1.原来redis集群在A机房,需要把其迁移到新机房B上来.2.保证现有环境稳定.3.采用在线迁移方式,因为原有redis集群内有大量数据.4.如果是一个全新的redis集群搭建会简单很多. ...

  8. redis cluster 集群畅谈(三) 之 水平扩容、slave自动化迁移

    上一篇http://www.cnblogs.com/qinyujie/p/9029522.html, 主要讲解 实验多master写入.读写分离.实验自动故障切换(高可用性),那么本篇我们就来聊了聊r ...

  9. redis cluster异地数据迁移,扩容,缩容

    由于项目的服务器分布在重庆,上海,台北,休斯顿,所以需要做异地容灾需求.当前的mysql,redis cluster,elastic search都在重庆的如果重庆停电了,整个应用都不能用了. 现在考 ...

随机推荐

  1. Hive UDF作业

    说到这次作业,看似简单的几个步骤,对于我这样的菜鸟来说可真是一波三折啊.下面来说说这次的步骤和我遇到的问题. 首先准备工作,搭建好hive环境,保证hadoop集群是启动的.这个就不多说了. 第一步: ...

  2. Vue3.0项目快速搭建

    安装安装vue-cli npm install -g @vue/cli # 或者 yarn global add @vue/cli 创建项目 vue create hello-world 至此项目搭建 ...

  3. jQuery对象的操作

    参考一篇不错的文章:https://developer.mozilla.org/zh-CN/docs/Web/JavaScript/Reference/Global_Objects/Object 1. ...

  4. pytho 单例模式

    单例模式存在的目的是保证当前内存中仅存在单个实例,避免内存浪费!!! (程序如果并发量大的话,内存里就会存在非常多功能上一模一样的对象.存在这些对象肯定会消耗内存,对于这些功能相同的对象可以在内存中仅 ...

  5. python-模块的导入import

    #-*- coding:utf-8 -*- #本次学习:模块的导入 ''' 1.模块名不能与第三方库或者本地库名字重名/冲突 2.导入模块时,寻找顺序:现在当前目录找,再去我们环境变量配置的pytho ...

  6. Vuejs自定义全局组件--loading

    不管是使用框架,还是不使用任何的框架,我们都不可避免的需要与“加载中……”打交道,刚刚学习了Vuejs自定义组件的写法,就现学现卖,介绍一下吧! 先看一下目录结构,一般情况下,每一个组件都新建一个新的 ...

  7. IDEA集成git和使用步骤

    2018年07月20日 11:26:29 完猛 阅读数:3246    版权声明:本文为博主原创文章,未经博主允许不得转载. https://blog.csdn.net/miwanmeng/artic ...

  8. uva-10132-排序

    题意: 有很多文件,碎成了俩片,问,原来的文件是什么,如果有多个答案,任意一个答案就行,输入2N个字符串,拼接成N个文件. 直接排序,正确的答案一定是某个长度最短的和某个最长的连在一起. #inclu ...

  9. windows清除访问共享文件夹的登陆信息

    https://jingyan.baidu.com/article/c843ea0b70797e77931e4a96.html 当在命令提示窗口输入net use命令时,会显示本机缓存的共享登录信息, ...

  10. oracle添加列到指定位置

    http://blog.csdn.net/liufeng_king/article/details/7421826