redis集群数据备份迁移方案

迁移环境描述及分析

当前我们面临的数据迁移环境是:集群->集群。

源集群:

源集群为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

选择合适的迁移方法

1.  使用shell脚本+redis命令

2.  使用dump.rdb或appendonly.aof文件

第一种适用于数据量少,只迁移部分数据的情况。第二种适用于我们当下的情况。

迁移步骤

前期准备:

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) 启动所有应用,并验证

迁移测试实施

以下是迁移步骤的整个实施过程:

目标端停集群(先备后主):

清除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集群数据迁移的更多相关文章

  1. redis集群数据迁移txt版

    ./redis-trib.rb create --replicas 1 192.168.112.33:8001 192.168.112.33:8002 192.168.112.33:8003 192. ...

  2. 【Redis】集群数据迁移

    Redis通过对KEY计算hash,将KEY映射到slot,集群中每个节点负责一部分slot的方式管理数据,slot最大个数为16384. 在集群节点对应的结构体变量clusterNode中可以看到s ...

  3. 从零自学Hadoop(17):Hive数据导入导出,集群数据迁移下

    阅读目录 序 将查询的结果写入文件系统 集群数据迁移一 集群数据迁移二 系列索引 本文版权归mephisto和博客园共有,欢迎转载,但须保留此段声明,并给出原文链接,谢谢合作. 文章是哥(mephis ...

  4. elasticsearch7.5.0+kibana-7.5.0+cerebro-0.8.5集群生产环境安装配置及通过elasticsearch-migration工具做新老集群数据迁移

    一.服务器准备 目前有两台128G内存服务器,故准备每台启动两个es实例,再加一台虚机,共五个节点,保证down一台服务器两个节点数据不受影响. 二.系统初始化 参见我上一篇kafka系统初始化:ht ...

  5. redis集群在线迁移第一篇(数据在线迁移至新集群)实战一

    迁移背景:1.原来redis集群在A机房,需要把其迁移到新机房B上来.2.保证现有环境稳定.3.采用在线迁移方式,因为原有redis集群内有大量数据.4.如果是一个全新的redis集群搭建会简单很多. ...

  6. redis集群在线迁移第二篇(redis迁移后调整主从关系,停掉14机器上的所有从节点)-实战二

    变更需求为: 1.调整主从关系,所有节点都调整到10.129.51.30机器上 2.停掉10.128.51.14上的所有redis,14机器关机 14机器下线迁移至新机房,这段时间将不能提供服务. 当 ...

  7. 从零自学Hadoop(16):Hive数据导入导出,集群数据迁移上

    阅读目录 序 导入文件到Hive 将其他表的查询结果导入表 动态分区插入 将SQL语句的值插入到表中 模拟数据文件下载 系列索引 本文版权归mephisto和博客园共有,欢迎转载,但须保留此段声明,并 ...

  8. elasticsearch跨集群数据迁移

    写这篇文章,主要是目前公司要把ES从2.4.1升级到最新版本7.8,不过现在是7.9了,官方的文档:https://www.elastic.co/guide/en/elasticsearch/refe ...

  9. Redis集群数据没法拆分时的搭建策略

    在上一篇文章中,针对服务器单点.单例.单机存在的问题: 单点故障 容量有限 可支持的连接有限(性能不足) 提出了解决的办法:根据AKF原则搭建集群,大意是先X轴拆分,创建单机的镜像,组成主主.主备.主 ...

随机推荐

  1. qt painter多个点的曲线

    plot.h #ifndef PLOT_H #define PLOT_H #include<QTimer> #include <QWidget> class pathplot ...

  2. 10-2 body标签中相关的标签(字体标签,排版标签(div,span),超链接,图片标签)

    一 排版标签(div,span) 1块级标签 <!--div:把标签中的内容作为一个块儿来对待(division).必须单独占据一行.--> <!--div标签的属性:--> ...

  3. CSS常用函数calc等

    >>CSS常用函数<<

  4. settTimeout vs setInterval

    setTimeout:过一段固定的时间后,将代码提交到代码队列中排队. setInterval:每隔一段固定的时间,执行一次代码. 他们两都接受两个参数,第一个参数是字符串或者函数,第二个参数是设定的 ...

  5. CSS引入的方式有哪些? link和@import的区别是?

    CSS引入的方式包括内联 内嵌 外链 导入 link和@import的区别是 : ①link属于XHTML标签,除了加载CSS外,还能 用于定义RSS, 定义rel连接属性等作用:而@import是C ...

  6. js实现圆形的碰撞检测

    文章地址:https://www.cnblogs.com/sandraryan/ 碰撞检测这个东西写小游戏挺有用der~~~ 注释写的还挺全,所以就不多说了,看注释 这是页面结构.wrap存放生成的小 ...

  7. 2018-2-13-wpf-使用-Dispatcher.Invoke-冻结窗口

    title author date CreateTime categories wpf 使用 Dispatcher.Invoke 冻结窗口 lindexi 2018-2-13 17:23:3 +080 ...

  8. js基础——变量、作用域、内存

    1.new关键字创建的是引用类型: eg. var box = new Object();      box.name = "Linda";//引用类型添加属性没问题     al ...

  9. UVA 1343 - The Rotation Game-[IDA*迭代加深搜索]

    解题思路: 这是紫书上的一道题,一开始笔者按照书上的思路采用状态空间搜索,想了很多办法优化可是仍然超时,时间消耗大的原因是主要是: 1)状态转移代价很大,一次需要向八个方向寻找: 2)哈希表更新频繁: ...

  10. springboot上传文件时500错误,提示临时目录无效

    org.springframework.web.multipart.MultipartException: Could not parse multipart servlet request; nes ...