zoukankan      html  css  js  c++  java
  • redis数据转移随笔

    生产环境有一批版本比较老的redis主从架构,是一主多从,版本是2.8

    由于想迁移到阿里云上,那么问题来了,怎么把redis数据转移到阿里云上

    为了省事,阿里云也是和生产环境一样的版本,架构也一致,其实剩下的就好办了,把数据导出,再导入就行了

    我们生产环境使用了aof和rdb两种持久化,好处是不怕意外的数据丢失

    那么问题来了,怎么导入到阿里云

    导出简单,首先在生产环境的redis的主节点执行bgsave,执行后将fork出新的子进程,不会阻塞redis,等完成后,把rdb文件拷贝出来,放到阿里云

    先停止阿里云的主节点的redis, 把rdb文件放到阿里云主节点的数据文件夹下面,然后启动redis,然后,没数据,一看rdb文件没了,被重新创建了

    这是怎么回事,想了好久才明白,由于同时开启aof和rdb持久化,优先使用aof恢复数据,由于没有aof,所以先创建aof然后再创建RDB那么数据肯定是没了,那这怎么办法呢?

    既然这样,就先关闭aof,在配置文件里 appendonly yes 注释掉

    然后关闭redis,再解压缩rdb文件,再启动redis,看下info有数据了,不错,然后关闭redis,打开aof持久化,启动redis,一看数据又没了,这可咋办

    想了想应该还是aof优先的缘故,由于没有aof就创建aof然后清空RDB了,又回到了上面的问题

    那么既然这样的话,就动态打开aof

    先注释掉配置文件里的aof

    解压缩RDB,启动redis,好了数据有了

    然后我们动态打开aof

    config set appendonly yes

    然后去数据文件夹下看,已经开始产生aof文件了,等文件生成完毕,我们可以shutdown redis

    然后打开配置文件中的appendonly yes 这次,rdb和aof都正常了,其实最后的rdb是重新生成的,从aof生成的

    注释掉aof - 导入rdb-动态打开aof-生成aof-关闭redis-打开配置文件注释aof-redis从aof从新生成rdb

    至此,数据迁移完成,主从数据也正常了

    参考了以下解决方案

  • 相关阅读:
    进程总结
    三大流程
    canvas简介
    时钟
    vim
    马拉车
    模拟退火
    洛谷P2055假期的宿舍
    洛谷P2320鬼谷子的钱袋.
    洛谷P2278操作系统
  • 原文地址:https://www.cnblogs.com/hh2737/p/10751368.html
Copyright © 2011-2022 走看看