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 ...
随机推荐
- BZOJ 2277 Poi2011 Strongbox
题目大意:一个集合A,包含了0~n-1这n个数.另有一个集合B,满足: 1.B是A的子集. 2.如果a.b均在B中,则(a+b)%n也在B中(a=b亦可) 给出k个数ai,前k-1个不在B中,第k个在 ...
- rviz初接触
- 一、Ansible安装
1:安装ansible ,选择的是yum 安装,简单,ansible的管理端必须是Linux系统 YUM是一个shell前端软件包管理器.基于RPM包管理,能够从指定的服务器自动下载RPM ...
- PostgreSQL获取所有表名、字段名、字段类型、注释
转载自:http://blog.csdn.net/cicon/article/details/51577655 获取表名及注释: select relname as tabname,cast(obj_ ...
- springboot中添加热部署
<dependency> <!--Spring 官方提供的热部署插件 --> <groupId>org.springframework.boot</group ...
- 八皇后(DFS)
题目描述 会下国际象棋的人都很清楚:皇后可以在横.竖.斜线上不限步数地吃掉其他棋子.如何将8个皇后放在棋盘上(有8 * 8个方格),使它们谁也不能被吃掉!这就是著名的八皇后问题. 对于某个满足要求的8 ...
- Linux集群之keepalive+Nginx
集群从功能实现上分高可用和负载均衡: 高可用集群,即“HA"集群,也常称作“双机热备”. 当提供服务的机器宕机,备胎将接替继续提供服务: 实现高可用的开源软件有:heartbeat.keep ...
- jenkins-1
1 下载jenkins,https://jenkins.io/download/, 我在此处用的是war的的形式启动的,配置tomact的server.xml,如果是一个主机多个tomact的话还要编 ...
- wampserver_x86_3.0.6 允许外网访问配置教程
1.打开wamp目录下的apache配置文件中的httpd.conf 用可以看行数的编辑器打开 大概244行: 改为 <Directory /> AllowOverride none Re ...
- python字符串前面的r/u/b的意义 (笔记)
u/U:表示unicode字符串 : 不是仅仅是针对中文, 可以针对任何的字符串,代表是对字符串进行unicode编码. r/R:非转义的原始字符串: 与普通字符相比,其他相对特殊的字符,其中可能包含 ...