Redis5 集群迁移方案

一、KEY优化

1.按原来要求进行优化与大KEY分拆。

二、现Redis 集群缩容(对业务无影响)

  1. 主节点按要求合并至3个主节点。
  2. 业务配置为3主4从
  3. 删除没有槽的主节点与相应从节点。

三、配置新Redis集群

  1. 按集群方式配置2个虚拟机或3台虚拟机(按最终集群要求,主从采用2个虚拟机,集群采用3台虚拟机,从节点先不建)。
  2. 增加监控。
  3. 测试,主集群备份RDB数据,复制至待迁移节点,查看过程时间与KEY数据是否相差不大。(测试脚本详细见附件)
  4. 把源集群至所有目标主节点的免密认证打开

四、正式迁移

  1. 关闭目标集群AOF与RDB备份文件。
  2. 更新配置回写至本地配置文件
  3. 关闭目标集群(注意非删除节点)
  4. 停止源集群(shudown save方式)
  5. 删除目标节点所有RDB文件与AOF文件。
  6. 复制源集群RDB至目标集群主节点(按主节点一一对应)。
  7. 启动目标集群
  8. 检查目标集群状态
  9. 核对目标集群与源集群KEY数量是否一至。
  10. 启动目标集群
  11. 开启所有集群AOF备份(从节点)
  12. 配置回写
  13. 修改业务模块Redis配置,并重启模块。
  14. 检查业务是否恢复。
  15. 更新完成

五、缩容与优化

  1. 等非本集群KEY过期与清理
  2. 按方案设计迁移槽点数量
  3. 修改模块Redis配置。
  4. 删除空主节点与增加相关从节点。

六、示例脚本

#!/bin/sh

#获取源集群KEY数量

r1=`redis-cli -c -h 192.168.115.106 -p 7000 info|grep db0:keys|awk -F "=" '{print$2}'|awk -F "," '{print$1}'`

r2=`redis-cli -c -h 192.168.115.108 -p 7004 info|grep db0:keys|awk -F "=" '{print$2}'|awk -F "," '{print$1}'`

r3=`redis-cli -c -h 192.168.115.107 -p 7002 info|grep db0:keys|awk -F "=" '{print$2}'|awk -F "," '{print$1}'`

echo $r1-$r2-$r3

#获取目标集群KEY数量

s1=`redis-cli -c -h 192.168.115.106 -p 8001 info|grep db0:keys|awk -F "=" '{print$2}'|awk -F "," '{print$1}'`

s2=`redis-cli -c -h 192.168.115.106 -p 8002 info|grep db0:keys|awk -F "=" '{print$2}'|awk -F "," '{print$1}'`

s3=`redis-cli -c -h 192.168.115.106 -p 8003 info|grep db0:keys|awk -F "=" '{print$2}'|awk -F "," '{print$1}'`

echo $s1-$s2-$s3

##关闭目标集群的AOF

redis-cli -c -h 192.168.115.106 -p 8001 CONFIG SET appendonly 'no'

redis-cli -c -h 192.168.115.106 -p 8002 CONFIG SET appendonly 'no'

redis-cli -c -h 192.168.115.106 -p 8003 CONFIG SET appendonly 'no'

#配置持久化到本地

redis-cli -c -h 192.168.115.106 -p 8001 CONFIG REWRITE

redis-cli -c -h 192.168.115.106 -p 8002 CONFIG REWRITE

redis-cli -c -h 192.168.115.106 -p 8003 CONFIG REWRITE

#关闭目标节点,如果有从节点,先关闭从节点

redis-cli -c -h 192.168.115.106 -p 8004 SHUTDOWN save

redis-cli -c -h 192.168.115.106 -p 8005 SHUTDOWN save

redis-cli -c -h 192.168.115.106 -p 8006 SHUTDOWN save

redis-cli -c -h 192.168.115.106 -p 8001 SHUTDOWN save

redis-cli -c -h 192.168.115.106 -p 8002 SHUTDOWN save

redis-cli -c -h 192.168.115.106 -p 8003 SHUTDOWN save

#清理目标集群AOF与RDB文件,主节点

rm -rf /dfs/redis5_test/8001/*.aof

rm -rf /dfs/redis5_test/8001/*.rdb

rm -rf /dfs/redis5_test/8002/*.aof

rm -rf /dfs/redis5_test/8002/*.rdb

rm -rf /dfs/redis5_test/8003/*.aof

rm -rf /dfs/redis5_test/8003/*.rdb

#源集群主节点备份

redis-cli -c -h 192.168.115.106 -p 7000 bgsave

redis-cli -c -h 192.168.115.108 -p 7004 bgsave

redis-cli -c -h 192.168.115.107 -p 7002 bgsave

#判断备份文件是否生成

i4=0

i4=`ls /dfs/redis_cluster/7000/dump.rdb |wc -l`

echo $i4

for i4 in {0}

do

sleep 5

i4=`ls /dfs/redis_cluster/7000/dump.rdb |wc -l`;

done

cp -rf /dfs/redis_cluster/7000/dump.rdb /dfs/redis5_test/8001/

i4=0

i4=`ssh 192.168.115.108 'ls /dfs/redis_cluster/7004/dump.rdb |wc -l'`

for i4 in {0}

do

sleep 5

i4=`ssh 192.168.115.108 'ls /dfs/redis_cluster/7004/dump.rdb |wc -l'`;

done

scp  192.168.115.108:/dfs/redis_cluster/7004/dump.rdb /dfs/redis5_test/8002/

i4=0

i4=`ssh 192.168.115.107 'ls /dfs/redis_cluster/7002/dump.rdb |wc -l'`

for i4 in {0}

do

sleep 5

i4=`ssh 192.168.115.107 'ls /dfs/redis_cluster/7002/dump.rdb |wc -l'`;

done

scp  192.168.115.107:/dfs/redis_cluster/7002/dump.rdb /dfs/redis5_test/8003/

#启动目标集群

redis-server /dfs/redis5_test/8001/redis.conf

redis-server /dfs/redis5_test/8002/redis.conf

redis-server /dfs/redis5_test/8003/redis.conf

#获取目标集群KEY数量

s1=`redis-cli -c -h 192.168.115.106 -p 8001 info|grep db0:keys|awk -F "=" '{print$2}'|awk -F "," '{print$1}'`

s2=`redis-cli -c -h 192.168.115.106 -p 8002 info|grep db0:keys|awk -F "=" '{print$2}'|awk -F "," '{print$1}'`

s3=`redis-cli -c -h 192.168.115.106 -p 8003 info|grep db0:keys|awk -F "=" '{print$2}'|awk -F "," '{print$1}'`

echo $s1-$s2-$s3

七、注意事项

集群槽要对槽

redis5 集群迁移方案的更多相关文章

  1. zookeeper集群迁移方案

    后来问同事是怎么做的迁移:先启动一套新的集群,然后关闭老的集群,同时在老集群的一个IP:2181起了一个haproxy代理新集群以为这样,可以做到透明迁移=.=,其实是触发了ZK的bug-832导致不 ...

  2. Kafka跨集群迁移方案MirrorMaker原理、使用以及性能调优实践

    序言Kakfa MirrorMaker是Kafka 官方提供的跨数据中心的流数据同步方案.其实现原理,其实就是通过从Source Cluster消费消息然后将消息生产到Target Cluster,即 ...

  3. Redis 中常见的集群部署方案

    Redis 的高可用集群 前言 几种常用的集群方案 主从集群模式 全量同步 增量同步 哨兵机制 什么是哨兵机制 如何保证选主的准确性 如何选主 选举主节点的规则 哨兵进行主节点切换 切片集群 Redi ...

  4. MySQL高可用集群MHA方案

    MySQL高可用集群MHA方案 爱奇艺在用的数据库高可用方案 MHA 是目前比较成熟及流行的 MySQL 高可用解决方案,很多互联网公司正是直接使用或者基于 MHA 的架构进行改造实现 MySQL 的 ...

  5. 【转】最近搞Hadoop集群迁移踩的坑杂记

    http://ju.outofmemory.cn/entry/237491 Overview 最近一段时间都在搞集群迁移.最早公司的hadoop数据集群实在阿里云上的,机器不多,大概4台的样子,据说每 ...

  6. 使用jmeter对ActiveMQ集群性能方案进行评估--转载

    原文地址:http://www.51testing.com/html/78/23978-143163.html 1.测试概要1.1 关于这篇文档中涉及的基于JMS的消息系统能为应用程序提供可靠的,高性 ...

  7. Redis Cluster集群主从方案

    本文介绍一种通过Jedis和Cluster实现Redis集群(主从)的高可用方案,该方案需要使用Jedis2.8.0(推荐),Redis3.0及以上版本(强制). 附:Redis Cluster集群主 ...

  8. consul异地多数据中心以及集群部署方案

    consul异地多数据中心以及集群部署方案目的实现consul 异地多数据中心环境部署,使得一个数据中心的服务可以从另一个数据中心的consul获取已注册的服务地址 环境准备两台 linux服务器,外 ...

  9. Hive跨集群迁移

    Hive跨集群迁移数据工作是会出现的事情, 其中涉及到数据迁移, metastore迁移, hive版本升级等. 1. 迁移hdfs数据至新集群hadoop distcp -skipcrccheck ...

随机推荐

  1. 代码本色 用编程模拟自然系统 (Daniel Shiffman 著)

    https://cdnjs.cloudflare.com/ajax/libs/p5.js/0.5.7/p5.js http://www.box2d.org http://www.jbox2d.org ...

  2. redis 的备份策略,最好使用:RDB-AOF 混合持久化

    相关资料: Redis 4.0 新功能简介:RDB-AOF 混合持久化:http://blog.huangz.me/2017/redis-rdb-aof-mixed-persistence.html ...

  3. Linux系统时钟的更改

    linux系统时钟有两个,一个是硬件时钟,即BIOS时间,就是我们进行CMOS设置时看到的时间,另一个是系统时钟,是linux系统Kernel时间. 查看.设置硬件时间: 查看系统硬件时钟 hwclo ...

  4. 把java程序作为windows服务运行

    参考: https://www.jianshu.com/p/fc9e4ea61e13 https://blog.csdn.net/qq_28566071/article/details/8088250 ...

  5. CLOSE_WAIT状态的原因与解决方法

    https://blog.csdn.net/Windgs_YF/article/details/83513696 netstat -nat|awk '{print $6}'|sort|uniq -c| ...

  6. Linux 本地repo配置

    系统版本 centos6.9 配置方法 [local]name=localbaseurl=file:///home/systemimage/gpgcheck=1gpgkey=file:///etc/p ...

  7. python:函数初始

    一.函数 1.函数初始:函数就是封装一个功能 2.函数名,函数体,关键字,函数的返回值 def 关键字,定义一个函数 my_len 函数名书写规则和变量一样 def 与函数名中间一个空格 函数名(): ...

  8. 第一个Eureka程序,Eureka Client的自启动原理和简要过程

    https://blog.csdn.net/u011531425/article/details/81675289 在之前的Spring Cloud Config的基础上,搭建简单的Eureka Se ...

  9. 阿里云 配置ssl 在nginx上

    写给自己的备忘录: 很乱 如果你也是 配置nginx ssl 可以给我留言 ,我是为了 捣鼓微信小程序后台 需要https 阿里云有免费一年的 ssl服务 链接 https://www.aliyun. ...

  10. flask&nginx&gunicore部署

    部署流程: 1.处理服务器的基础环境, 安装和Python有关的软件 安装Python3-pip, Python3-dev apt install python3-pip apt install py ...