redis数据导入导出

在2017年,项目上的redis集群需要从2.8版本更换为3.2版本,此时涉及到redis数据key的迁移,经百度、×××,发现有三种方法可以实现
1、第三方工具redis-dump、redis-load实现
2、通过aof机制导入导出,需要开启aof功能
3、通过rdb存储机制迁移数据,此方法最为简单,直接dump $key、restore $key即可

此篇主要介绍第一种方式,redis-dump、redis-load实现redis的数据导入导出,直接进入主题

   redis-dump,要求ruby版本>=2.2.2 

第一步:安装依赖的服务包(gcc服务包可用CentOS自带源即可)

  yum install ruby rubygems ruby-devel gcc -y 

第二步:配置ruby官网源

   gem sources -a http://gems.ruby-china.org/   ##将国内的源添加至本地
   gem source -l  ##查看ruby源
   gem source --remove http://rubygems.org/  ##去掉对外源,如果使用rubygems源需×××
   gem source -l  ##核实ruby源 

第三步:gem安装redis-dump

   gem install redis-dump -V   ##redis-dump,执行此步很慢,以下操作基本均略慢,镜像都为copy国外源
        ERROR:  Error installing redis-dump:redis requires Ruby version >= 2.2.2.
            gpg2 --keyserver hkp://keys.gnupg.net --recv-keys D39DC0E3  ##安装rvm命令  略慢
                                gpg: key D39DC0E3: public key "Michal Papis (RVM signing) <[email protected]>" imported
                                gpg: no ultimately trusted keys found
                                gpg: Total number processed: 1
                                gpg:  imported: 1  (RSA: 1)    ##出现类似信息,获取key成功
           curl -L get.rvm.io | bash -s stable  ##执行此命令时,需要对配置google DNS /etc/resolv.conf nameserver 8.8.8.8(我也不知道为什么要配置8.8.8.8,但是他就是成功了)
             rvm list known  ##查看服务ruby所有版本,如果执行失败,执行"source /etc/profile.d/rvm.sh"
             echo "export rvm_max_time_flag=20" >> ~/.rvmrc(此步根据提示操作)
             rvm install 2.3.3  ##安装ruby2.3.3版本,此过程下载时间极慢
             rvm use 2.3.3 --default  ##设置ruby最新版本为
             rvm remove 2.0.0   ##卸载旧版本,随后再此安装redis-dump

第四步:确认redis-dump安装成功

  find / -iname redis-dump  ##确认redis-dump安装成功
  /usr/local/rvm/gems/ruby-2.3.3/wrappers/redis-dump
  /usr/local/rvm/gems/ruby-2.3.3/gems/redis-dump-0.4.0/bin/redis-dump
  /usr/local/rvm/gems/ruby-2.3.3/bin/redis-dump
 ##相关参数可用help查看,这里不做详解

第五步:测试(https://github.com/delano/redis-dump)

  数据备份:##redis-dump备份出来的数据格式都是json格式
    redis-dump -a 123456 -u 10.111.132.168:9736 > /tmp/wtc.json
    more wtc.json
      {"db":0,"key":"LMS:0930115529001000512619-18800074594","ttl":-1,"type":"string","value":"AQA=","size":4}
      {"db":0,"key":"LMS:0607225238001000808201-18800487249","ttl":-1,"type":"string","value":"AQA=","size":4}
      {"db":0,"key":"LMS:0930103825001000502800-18800031090","ttl":-1,"type":"string","value":"AQA=","size":4}
      {"db":0,"key":"LMS:0606193159001000503202-18800444032","ttl":-1,"type":"string","value":"AQABAA==","size":8}
      {"db":0,"key":"LMS:0930122140001000517332-18800198151","ttl":-1,"type":"string","value":"AQA=","size":4}
      {"db":0,"key":"LMS:0606151834001000801439-18800188730","ttl":-1,"type":"string","value":"AQEBAA==","size":8}
      {"db":0,"key":"LMS:0930103607001000502525-18800457188","ttl":-1,"type":"string","value":"AQA=","size":4}
      {"db":0,"key":"LMS:0606190129001000501706-18800345537","ttl":-1,"type":"string","value":"AQEBAA==","size":8}
      {"db":0,"key":"LMS:0930113721001000509873-18800167485","ttl":-1,"type":"string","value":"AQA=","size":4}
      {"db":0,"key":"LMS:0930125722001000523748-18800320602","ttl":-1,"type":"string","value":"AQA=","size":4}
      {"db":0,"key":"LMS:0606192506001000502796-18800478597","ttl":-1,"type":"string","value":"AQEBAA==","size":8}

  数据恢复:
    < 160.json  redis-load -u 10.111.132.176:9736 -a wtc.com
    < /root/161.json  redis-load -u 10.111.132.173:19000 -a wtc.com    

    redis-load
                 < db_full.json redis-load
                 $ < db_db15.json redis-load -d 15
       # OR
                 $ < cat db_full | redis-load
                 $ < cat db_db15.json | redis-load -d 15
以上就是借助第三方工具来做redis数据迁移,但是需要注意一下几点

1、每个key都在相同或者不同的solt区间中,而每个solt都是基于proxy计算方式的来,迁移时需要确认proxy计算方式有咩有改变(我是不知道怎么计算的,都是通过主节点导出,在通过proxy导入)

2、暂时没发现

原文地址:http://blog.51cto.com/wangtianci/2093525

时间: 2024-10-16 11:15:28

redis数据导入导出的相关文章

Redis 数据导入导出,redis-dump命令

安装redis-dump 工具 yum install ruby rubygems ruby-devel gem install redis-dump -V 使用方法 没有密码: # 导出 redis-dump -u 127.0.0.1:6379 -d 1 > test.json # 导入 < test.json redis-load -u 10.137.195.25 有密码: # 导出 redis-dump -u :123456@127.0.0.1:6379 -O > test.jso

Oracle数据导入导出基本操作示例

Oracle数据导入导出基本操作示例 数据导出 a.将数据库orcl完全导出,用户名user 密码password 导出到D:\dc.dmp中 exp user/[email protected]   file=d:\dc.dmp    full=y full=y   表示全库导出 b.将数据库中user1和user2用户导出 exp user/[email protected]  file=d:\dc.dmp    owner=(user1,user2) full方式可以备份所有用户的数据库对

考试系统维护--不同版本SQL数据导入导出

考试系统维护过程中,为了保证考试的顺利进行需要在多个服务器上搭建考试系统(备份),这时候需要把数据库来回迁移,之前我们常用的数据库备份还原的方法确实简单方便,但是遇到不同的服务器安装的SQL版本不同就歇菜了,虽然当时为了以后操作方便,我们把这次要用的服务器的数据库版本都统一了,但是在考试系统维护中米老师让我感触最深的一点-----"凡事多想一点!"多思考必须要应用到实际,所以我回来又仔细研究了几种不同版本SQL数据导入导出的方法,与大家交流提高. 一:使用SQLServer Impor

excel数据导入导出数据库

第一种方法: 先把Excel另存为.csv格式文件,如test.csv,再编写一个insert.ctl 用sqlldr进行导入! insert.ctl内容如下: load data          --1.控制文件标识 infile ‘my.csv‘          --2.要输入的数据文件名为my.csv append into table "tbl_test"   --3.向表table_name中追加记录 fields terminated by ‘,‘          

Oracle11g和10g数据导入导出

背景:Oracle数据导入导出imp/exp就相当于oracle数据还原与备份.exp命令可以把数据从远程数据库服务器导出到本地的dmp文件,imp命令可以把dmp文件从本地导入到远处的数据库服务器中.下面总结下具体的导入导出步骤: ------------------------------------------------------------------------------------------- #11g新特性数据库使用数据泵expdp&impdp导出导入操作# -------

Linux下mongodb安装及数据导入导出教程

Linux下mongodb安装及数据导入导出教程 #查看linux发行版本 cat /etc/issue #查看linux内核版本号 uname -r 一.Linux下mongodb安装的一般步骤 1.到mongodb的官网(https://www.mongodb.org/downloads) 下载相应你系统的安装包,拷贝(能够用ftp工具如winscp)到你的linux系统上面. 2.解压相应的安装包 命令例如以下:tar zxvf mongodb-linux-x86_64-3.0.4.tgz

Redis数据导入工具优化过程总结

Redis数据导入工具优化过程总结 背景 使用C++开发了一个Redis数据导入工具 从oracle中将所有表数据导入到redis中: 不是单纯的数据导入,每条oracle中的原有记录,需要经过业务逻辑处理, 并添加索引(redis集合): 工具完成后,性能是个瓶颈: 优化效果 使用了2个样本数据测试: 样本数据a表8763 条记录: b表940279 条记录: 优化前,a表耗时11.417s: 优化后,a表耗时1.883s: 用到的工具 gprof, pstrace,time 使用time工具

Oracle数据导入导出imp/exp

在oracle安装目录下有EXP.EXE与IMP.EXE这2个文件,他们分别被用来执行数据库的导入导出.所以Oracle数据导入导出imp/exp就相当与oracle数据还原与备份. Oracle数据导出exp Exp参数详解: USERID 运行导出命令的帐号的用户名/口令 BUFFEER 用来取数据行的缓冲区的大小 FILE 导出转储文件的名字 COMPRESS 导出是否应该压缩有碎片的段成一个范围,这将会影响STORAGE子句 GRANTS 导出时否要导出数据库对象上的授权 INDEXES

Hive 实战(1)--hive数据导入/导出基础

前沿: Hive也采用类SQL的语法, 但其作为数据仓库, 与面向OLTP的传统关系型数据库(Mysql/Oracle)有着天然的差别. 它用于离线的数据计算分析, 而不追求高并发/低延时的应用场景. 最显著的特别是, Hive的数据是Schema On Read, 对数据的写入非常的自由和松散, 而对数据的读取则作了各种限制. 而RMDBS则是Schema On Write, 对数据写入限制非常的严苛. *). 数据导入/导出 让我们体验以下Hive中数据如何导入: 1). 创建数据库 db_