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 ...
随机推荐
- 在MySQL中快速的插入大量测试数据
很多时候为了测试数据库设计是否恰当,优化SQL语句,需要在表中插入大量的数据,怎么插入大量的数据就是个问题了. 最开始想到的办法就是写一个程序通过一个很大的循环来不停的插入,比如这样: int i = ...
- 664. Strange Printer
class Solution { public: int dp[100][100]; int dfs(const string &s, int i,int j) { if(i>j)ret ...
- win10的linux子系统安装及使用
最近需要用到linux但是又不想装双系统,正好win10推出了linux子系统,省事了,自己也是煞费苦心才整明白 1.首先你要是很新的win10版本(1607及已上),这样才有下面的步骤 依次在 设置 ...
- cannot find package "context"
导入 github.com/go-sql-driver/mysql 和 database/sql 时,报cannot find package "context"的错误因为go1 ...
- java应用:向用户注册的邮箱发送邮件
实现功能 忘记密码,注册成功等向用户发送验证码信息或注册信息. 业务流程 忘记密码: 1.验证邮箱是否注册过: 2.向邮箱发送验证码: 3.验证验证码是否正确: 4.重新设置密码: 我这里着重介绍发送 ...
- Centos7.4安装配置haproxy和Keepalived
系统版本是centos7.4的 [root@data-1-1 ~]# cat /etc/redhat-release CentOS Linux release 7.4.1708 (Core) [roo ...
- redis 延时任务 看一篇成高手系列2
引言 在开发中,往往会遇到一些关于延时任务的需求.例如 生成订单30分钟未支付,则自动取消 生成订单60秒后,给用户发短信 对上述的任务,我们给一个专业的名字来形容,那就是延时任务.那么这里就会产生一 ...
- django模板语言循环字典,及forloop
views: from django.shortcuts import render,redirect from django.shortcuts import HttpResponse # Crea ...
- 由override 和 overload 引发的学习感悟
工作已三年的我,竟然面试的时候去裸考了.想当然的认为有很多东西会在工作中不知不觉积累下来,现在想想,真是扯淡... 我的三年的工作经验是开发测试的工作,主要负责测试用例的自动化实现,稍深一些的是自动化 ...
- 知识点:spring 完全手册
什么是spring spring是一个开源框架,为简化企业级开发而生,使用spring可以使简单的java bean 实现以前只有EJG才能实现的功能. Spring是一个轻量级的控制反转(IoC)和 ...