ITPUB论坛-中国专业的IT技术社区

 找回密码
 注册
查看: 4133|回复: 0

[笔记] 利用redis-dump导出、还原数据

[复制链接]
论坛徽章:
3
Jeep
日期:2013-12-10 19:57:542014年新春福章
日期:2014-02-18 16:50:09马上有车
日期:2014-02-18 16:50:09
发表于 2017-12-21 14:21 | 显示全部楼层 |阅读模式
create-2017-12-01
角色:
源服务器 189.202 端口 6520
目标服务器  193.16 端口  6888

业务需求:有一台缓存服务器189.202,因系统问题无法登录,我们需要导出上面的缓存数据,通过迁移工具(redis-migrate-tool、redis-port)和主从方式均失败,最终利用redis-dump实现。

现在我们通过193.16服务器 安装利器后,把202服务器的数据导进来16的6888端口

一 、安装Ruby依赖
1)安装Ruby环境
yum -y install ruby ruby-devel
yum -y install rubygems
2)添加taobao Ruby镜像



添加淘宝ruby源;
# gem sources --add http://gems.ruby-china.org --removehttps://rubygems.org/
http://gems.ruby-china.org added to sources
source https://rubygems.org/ not present in cache

查看现有ruby源;
# gem sources --l
*** CURRENT SOURCES ***
http://rubygems.org/
http://gems.ruby-china.org

二、安装redis-dump
Centos默认支持ruby到2.0.0,可gem 安装redis需要最低是2.2.2
解决办法是 先安装rvm,再把ruby版本提升至2.3.3
# gem install redis-dump
select id,user,host,db,command,time,state,info from information_schema.processlist where command <>'sleep'  order by time;
ERROR:  Error installing redis-dump:
        redis requires Ruby version >= 2.2.2.

# gpg2 --keyserver hkp://keys.gnupg.net --recv-keys D39DC0E3
gpg: directory `/root/.gnupg' created
gpg: new configuration file `/root/.gnupg/gpg.conf' created
gpg: WARNING: options in `/root/.gnupg/gpg.conf' are not yet active during this run
gpg: keyring `/root/.gnupg/secring.gpg' created
gpg: keyring `/root/.gnupg/pubring.gpg' created
gpg: requesting key D39DC0E3 from hkp server keys.gnupg.net
gpg: /root/.gnupg/trustdb.gpg: trustdb created
gpg: key D39DC0E3: public key "Michal Papis (RVM signing) <mpapis@gmail.com>" imported
gpg: no ultimately trusted keys found
gpg: Total number processed: 1
gpg:               imported: 1  (RSA: 1)

1.安装curl
# sudo yum install curl

2. 安装RVM
# curl -L get.rvm.io | bash -s stable

3. source/usr/local/rvm/scripts/rvm

4. 查看rvm库中已知的ruby版本

# rvm list known   
   # MRI Rubies
[ruby-]2.0.0[-p648]
[ruby-]2.1[.10]
[ruby-]2.2[.7]
[ruby-]2.3[.4]
[ruby-]2.4[.1]

5. 安装一个ruby版本
# rvm install 2.3.4   这里要选择正确   //rvm install 2.3会失败

6. 使用一个ruby版本
#rvmuse2.3.4

# rvm --create ruby-2.3.4
Using /usr/local/rvm/gems/ruby-2.3.4

# ruby --version
ruby 2.3.4p301 (2017-03-30 revision 58214) [x86_64-linux]

7. 卸载一个已知版本rvmremove2.0.0

安装redis-dump
# gem install redis-dump

导出数据
# redis-dump -u 10.40.189.202:6520 > test.json

还原数据 ,如果redis的端口不是6520的话,还需要设定一个环境变量,用来导入数据。
# export REDIS_URI=127.0.0.1:6888
# < test.json redis-load
ERROR (Yajl::ParseError): lexical error: invalid bytes in UTF8 string.
          },"size":274} {"db":0,"key":"0000\u0005t\u0000#100776963
                     (right here) ------^
[root@cache_hx_193_16 bohai]# cp test.json test.json-bak

如果报错,请使用-n选项,使用请参考官方,请谨慎使用!
#< test.json redis-load -n    //-n (以二进制形式导入)

[size=1.8em]Loading data with binary strings
If you have binary or serialized data in your [size=14.3999996185303px]Redis database, the YAJL parser may not load your dump file because it sees some of the binary data as 'invalid bytes in UTF8 string'. If you are certain that your data is binary and not malformed UTF8, you can use the -n flag to redis-load to tell YAJL to not check the input for UTF8 validity. Use with caution!

看到数据已经导入:
# redis-cli -p 6888 dbsize  
(integer) 5001
打赏鼓励一下!

您需要登录后才可以回帖 登录 | 注册

本版积分规则

TOP技术积分榜 社区积分榜 徽章 电子杂志 团队 统计 虎吧 老博客 知识索引树 读书频道 积分竞拍 文本模式 帮助
  ITPUB首页 | ITPUB论坛 | 数据库技术 | 企业信息化 | 开发技术 | 微软技术 | 软件工程与项目管理 | IBM技术园地 | 行业纵向讨论 | IT招聘 | IT文档 | IT博客
  ChinaUnix | ChinaUnix博客 | ChinaUnix论坛 | SAP ERP系统
CopyRight 1999-2011 itpub.net All Right Reserved. 北京盛拓优讯信息技术有限公司版权所有 联系我们 网站律师 隐私政策 知识产权声明
京ICP备16024965号 北京市公安局海淀分局网监中心备案编号:11010802021510 广播电视节目制作经营许可证:编号(京)字第1149号
  
快速回复 返回顶部 返回列表