redis5 集群迁移方案
Redis5 集群迁移方案
一、KEY优化
1.按原来要求进行优化与大KEY分拆。
二、现Redis 集群缩容(对业务无影响)
- 主节点按要求合并至3个主节点。
- 业务配置为3主4从
- 删除没有槽的主节点与相应从节点。
三、配置新Redis集群
- 按集群方式配置2个虚拟机或3台虚拟机(按最终集群要求,主从采用2个虚拟机,集群采用3台虚拟机,从节点先不建)。
- 增加监控。
- 测试,主集群备份RDB数据,复制至待迁移节点,查看过程时间与KEY数据是否相差不大。(测试脚本详细见附件)
- 把源集群至所有目标主节点的免密认证打开
四、正式迁移
- 关闭目标集群AOF与RDB备份文件。
- 更新配置回写至本地配置文件
- 关闭目标集群(注意非删除节点)
- 停止源集群(shudown save方式)
- 删除目标节点所有RDB文件与AOF文件。
- 复制源集群RDB至目标集群主节点(按主节点一一对应)。
- 启动目标集群
- 检查目标集群状态
- 核对目标集群与源集群KEY数量是否一至。
- 启动目标集群
- 开启所有集群AOF备份(从节点)
- 配置回写
- 修改业务模块Redis配置,并重启模块。
- 检查业务是否恢复。
- 更新完成
五、缩容与优化
- 等非本集群KEY过期与清理
- 按方案设计迁移槽点数量
- 修改模块Redis配置。
- 删除空主节点与增加相关从节点。
六、示例脚本
#!/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 集群迁移方案的更多相关文章
- zookeeper集群迁移方案
后来问同事是怎么做的迁移:先启动一套新的集群,然后关闭老的集群,同时在老集群的一个IP:2181起了一个haproxy代理新集群以为这样,可以做到透明迁移=.=,其实是触发了ZK的bug-832导致不 ...
- Kafka跨集群迁移方案MirrorMaker原理、使用以及性能调优实践
序言Kakfa MirrorMaker是Kafka 官方提供的跨数据中心的流数据同步方案.其实现原理,其实就是通过从Source Cluster消费消息然后将消息生产到Target Cluster,即 ...
- Redis 中常见的集群部署方案
Redis 的高可用集群 前言 几种常用的集群方案 主从集群模式 全量同步 增量同步 哨兵机制 什么是哨兵机制 如何保证选主的准确性 如何选主 选举主节点的规则 哨兵进行主节点切换 切片集群 Redi ...
- MySQL高可用集群MHA方案
MySQL高可用集群MHA方案 爱奇艺在用的数据库高可用方案 MHA 是目前比较成熟及流行的 MySQL 高可用解决方案,很多互联网公司正是直接使用或者基于 MHA 的架构进行改造实现 MySQL 的 ...
- 【转】最近搞Hadoop集群迁移踩的坑杂记
http://ju.outofmemory.cn/entry/237491 Overview 最近一段时间都在搞集群迁移.最早公司的hadoop数据集群实在阿里云上的,机器不多,大概4台的样子,据说每 ...
- 使用jmeter对ActiveMQ集群性能方案进行评估--转载
原文地址:http://www.51testing.com/html/78/23978-143163.html 1.测试概要1.1 关于这篇文档中涉及的基于JMS的消息系统能为应用程序提供可靠的,高性 ...
- Redis Cluster集群主从方案
本文介绍一种通过Jedis和Cluster实现Redis集群(主从)的高可用方案,该方案需要使用Jedis2.8.0(推荐),Redis3.0及以上版本(强制). 附:Redis Cluster集群主 ...
- consul异地多数据中心以及集群部署方案
consul异地多数据中心以及集群部署方案目的实现consul 异地多数据中心环境部署,使得一个数据中心的服务可以从另一个数据中心的consul获取已注册的服务地址 环境准备两台 linux服务器,外 ...
- Hive跨集群迁移
Hive跨集群迁移数据工作是会出现的事情, 其中涉及到数据迁移, metastore迁移, hive版本升级等. 1. 迁移hdfs数据至新集群hadoop distcp -skipcrccheck ...
随机推荐
- 《DSP using MATLAB》Problem 7.9
代码: %% ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ %% Output In ...
- 记一次Chrome冒充QQ浏览器领取奖励之行
DNF游戏十周年活动,但是看到活动页面竟然是QQ浏览器专属活动,可是对于QQ浏览器,我内心是拒绝的,所以本着能不下载就不下载的原则,当然是选择放弃它了..... 开玩笑,看到这一活动,虽然奖励不高 ...
- Jekins学习
1.Windows 安装入门 https://blog.csdn.net/u011541946/article/details/78003772 PS:坑1,https问题 坑2,offline ...
- 在centos7中安装python3并设置为默认版本
1,查看Python默认版本 python -V (大写V) 2,看看执行Python在哪个位置 which python 3,安装gcc,用于编译Python源码 yum install gcc 4 ...
- 菜鸟Vue学习笔记(二)
上一篇文章跟大家分享了Vue笔记上半部分,这篇文章接着跟大家分享.最近学习Vue越来越顺利了,今天接着学习,接着记录. 首先,来学习下常用的v-bind属性,它的作用是在属性中使用vue中定义的变量的 ...
- kafka-producer配置
kafka-producer版本对比 Kafka的producer的API根据版本的不同分为kafka0.8.1.X之前的 kafka.javaapi.producer.Producer.以及之后版本 ...
- java实现导入excel功能
实现功能: 1.Excel模板下载 2.导入excel 一.jsp效果和代码 <form id="uploadForm" target="frameFile&quo ...
- 概念:dependency injection, IOC, vs callback
callback function as a dependency of the object that it is being passed into. DI is the process of p ...
- 3.3 MathType自动公式编号和对齐
1.利用MathType录入公式并自动公式编号.自动对齐. 将光标置于需录入公式位置,点[MathType]>[(1)Insert Number]>下拉选择[1.a Format]. 如下 ...
- insert 插入
自动关联当前时间: GETDATE():返回当前时间和日期.