redis集群数据迁移
redis集群数据备份迁移方案
n 迁移环境描述及分析
当前我们面临的数据迁移环境是:集群->集群。
源集群:
源集群为6节点,3主3备
主 |
备 |
192.168.112.33:8001 |
192.168.112.33:8004-8006 |
192.168.112.33:8002 |
无 |
192.168.112.33:8003 |
无 |
值得注意的是:所有的槽位都分配在192.168.112.33:8001节点上,这样更方便我们迁移。
目标集群:
也是6节点,3主3备
主 |
备 |
192.168.112.33:6001 |
192.168.112.34:6002 |
192.168.112.33:6005 |
192.168.112.33:6000 |
192.168.112.33:6004 |
192.168.112.34:6003 |
n 选择合适的迁移方法
1. 使用shell脚本+redis命令
2. 使用dump.rdb或appendonly.aof文件
第一种适用于数据量少,只迁移部分数据的情况。第二种适用于我们当下的情况。
n 迁移步骤
前期准备:
1) 停掉所有节点(先备后主),然后删除所有节点下的appendonly.aof和dump.rdb文件,再动所有主节点,停掉所有节点(有密码的话,最好先不要用密码)
2) 确定目标库所有节点appendonly为yes,将所有槽位分配到一个主节点
3) 停掉拥有所有槽位的那个节点,等待appendonly.aof文件
停业务迁移:
4) 停业务,此时可以同步对所有应用修改redis配置(钉钉,管理门户,搜索引擎)
5) 源库手动触发bgrewriteaof 源端(2分钟)
6) 复制发送备份appendonly.aof 源端,目标端(5分钟)
7) 启动目标节点 目标端(5分钟)
8) reshared槽位,启动备节点,设置密码 目标端(5分钟)
恢复应用:
9) 启动所有应用,并验证
n 迁移测试实施
以下是迁移步骤的整个实施过程:
目标端停集群(先备后主):
清除appendonly.aof和dump.rdb
启动所有主节点
转移槽位到192.168.112.36:6004节点
./redis-trib.rb reshard --from bdd63e1f522d78eb1bb2574b2461a7302e14944a --to 1d204c88a14a76dc30abb05025135f7e850f2a5d --slots 5461 --yes 192.168.112.36:6004
./redis-trib.rb reshard --from be5b41880afac9c41b09e0d4e3be1ce1eb00959a --to 1d204c88a14a76dc30abb05025135f7e850f2a5d --slots 5462 --yes 192.168.112.36:6004
改配置文件,并停掉节点
原端集群,停业务备份数据
copy文件appendonly.aof到目标库分配了所有槽位的那个节点指定的appendonly.aof路径下,并启动节点。
再重新分配槽位,使槽位平均分配到各主节点。
然后启动所有的备节点,并设置密码,
redis-cli -c -h 192.168.112.33 -p 6000 config set masterauth Woread#2018
redis-cli -c -h 192.168.112.33 -p 6000 config set requirepass Woread#2018
redis-cli -c -h 192.168.112.33 -p 6000 config rewrite
redis-cli -c -h 192.168.112.33 -p 6001 config set masterauth Woread#2018
redis-cli -c -h 192.168.112.33 -p 6001 config set requirepass Woread#2018
redis-cli -c -h 192.168.112.33 -p 6001 config rewrite
redis-cli -c -h 192.168.112.34 -p 6002 config set masterauth Woread#2018
redis-cli -c -h 192.168.112.34 -p 6002 config set requirepass Woread#2018
redis-cli -c -h 192.168.112.34 -p 6002 config rewrite
redis-cli -c -h 192.168.112.34 -p 6003 config set masterauth Woread#2018
redis-cli -c -h 192.168.112.34 -p 6003 config set requirepass Woread#2018
redis-cli -c -h 192.168.112.34 -p 6003 config rewrite
redis-cli -c -h 192.168.112.36 -p 6004 config set masterauth Woread#2018
redis-cli -c -h 192.168.112.36 -p 6004 config set requirepass Woread#2018
redis-cli -c -h 192.168.112.36 -p 6004 config rewrite
redis-cli -c -h 192.168.112.36 -p 6005 config set masterauth Woread#2018
redis-cli -c -h 192.168.112.36 -p 6005 config set requirepass Woread#2018
redis-cli -c -h 192.168.112.36 -p 6005 config rewrite
redis集群迁移就到此完成了。
redis集群数据迁移的更多相关文章
- redis集群数据迁移txt版
./redis-trib.rb create --replicas 1 192.168.112.33:8001 192.168.112.33:8002 192.168.112.33:8003 192. ...
- 【Redis】集群数据迁移
Redis通过对KEY计算hash,将KEY映射到slot,集群中每个节点负责一部分slot的方式管理数据,slot最大个数为16384. 在集群节点对应的结构体变量clusterNode中可以看到s ...
- 从零自学Hadoop(17):Hive数据导入导出,集群数据迁移下
阅读目录 序 将查询的结果写入文件系统 集群数据迁移一 集群数据迁移二 系列索引 本文版权归mephisto和博客园共有,欢迎转载,但须保留此段声明,并给出原文链接,谢谢合作. 文章是哥(mephis ...
- elasticsearch7.5.0+kibana-7.5.0+cerebro-0.8.5集群生产环境安装配置及通过elasticsearch-migration工具做新老集群数据迁移
一.服务器准备 目前有两台128G内存服务器,故准备每台启动两个es实例,再加一台虚机,共五个节点,保证down一台服务器两个节点数据不受影响. 二.系统初始化 参见我上一篇kafka系统初始化:ht ...
- redis集群在线迁移第一篇(数据在线迁移至新集群)实战一
迁移背景:1.原来redis集群在A机房,需要把其迁移到新机房B上来.2.保证现有环境稳定.3.采用在线迁移方式,因为原有redis集群内有大量数据.4.如果是一个全新的redis集群搭建会简单很多. ...
- redis集群在线迁移第二篇(redis迁移后调整主从关系,停掉14机器上的所有从节点)-实战二
变更需求为: 1.调整主从关系,所有节点都调整到10.129.51.30机器上 2.停掉10.128.51.14上的所有redis,14机器关机 14机器下线迁移至新机房,这段时间将不能提供服务. 当 ...
- 从零自学Hadoop(16):Hive数据导入导出,集群数据迁移上
阅读目录 序 导入文件到Hive 将其他表的查询结果导入表 动态分区插入 将SQL语句的值插入到表中 模拟数据文件下载 系列索引 本文版权归mephisto和博客园共有,欢迎转载,但须保留此段声明,并 ...
- elasticsearch跨集群数据迁移
写这篇文章,主要是目前公司要把ES从2.4.1升级到最新版本7.8,不过现在是7.9了,官方的文档:https://www.elastic.co/guide/en/elasticsearch/refe ...
- Redis集群数据没法拆分时的搭建策略
在上一篇文章中,针对服务器单点.单例.单机存在的问题: 单点故障 容量有限 可支持的连接有限(性能不足) 提出了解决的办法:根据AKF原则搭建集群,大意是先X轴拆分,创建单机的镜像,组成主主.主备.主 ...
随机推荐
- 巧用 PHP 数组函数
0x00 前言 PHP 的数组是一种很强大的数据类型,与此同时 PHP 内置了一系列与数组相关的函数可以很轻易的实现日常开发的功能.但是我发现好像很多小伙伴都忽略了内置函数的作用(比如我自己就编写过一 ...
- 删除username的索引
-- 删除index_name 索引 drop index index_name on user; show index from user \G; -- 创建新索引列组成,index_pinyin为 ...
- java根据年月获取当前月的每一天日期
public static List<String> getDayByMonth(int yearParam,int monthParam){ List list = ne ...
- 洛谷P1510 精卫填海
//01背包 求背包内物品价值超过某一定值时的最小体积 #include<bits/stdc++.h> using namespace std; ; ; int n,v_tot,w_tot ...
- php统计近一周和近30天的用户数据
https://blog.csdn.net/shenpengchao/article/details/59073589 先上一张效果图 这边用的是echarts插件http://echarts.bai ...
- OJ大集合、
转载自:传送门 什么是OJ Online Judge系统(简称OJ)是一个在线的判题系统.用户可以在线提交程序源代码,系统对源代码进行编译和执行,并通过预先设计的测试数据来检验程序源代码的正确性. 一 ...
- Python xrange() 函数
描述 xrange() 函数用法与 range 完全相同,所不同的是生成的不是一个数组,而是一个生成器. 语法 xrange 语法: xrange(stop) xrange(start, stop[, ...
- H3C 物理层
- JavaScript 拖曳和居中问题
今天遇到了一个问题,是这样的,有一个div盒子,实现盒子居中,居中的样式是这样的见下 #box{ width:300px; height:150px; position:absolute; left: ...
- jq动画和停止动画
使用jq 实现动画循环效果 <!DOCTYPE html> <html lang="en"> <head> <meta charset=& ...