安装redis-dump
redis-dump是基于ruby开发,需要ruby环境,而且新版本的redis-dump要求2.2.2以上的ruby版本,centos中yum只能安装2.0版本的ruby。需要先安装ruby的管理工具rvm安装高版本的ruby
安装rvm
可参考官网:http://rvm.io/
执行下列两个命令安装rvm;
# gpg --keyserver hkp://keys.gnupg.net --recv-keys 409B6B1796C275462A1703113804BB82D39DC0E3 7D2BAF1CF37B13E2069D6956105BD0E739499BDB # curl -sSL https://get.rvm.io | bash -s stable # find / -name rvm -print /usr/local/rvm /usr/local/rvm/scripts/rvm /usr/local/rvm/bin/rvm /usr/local/rvm/src/rvm /usr/local/rvm/src/rvm/scripts/rvm /usr/local/rvm/src/rvm/bin/rvm /usr/local/rvm/src/rvm/lib/rvm /usr/local/rvm/lib/rvm #使rvm生效 source /usr/local/rvm/scripts/rvm
安装ruby
# 查看可以安装的Ruby版本 rvm list known # 当前最高的稳定版本是2.5.1 rvm install ruby 2.5.1 #查看ruby版本 ruby --version
安装redis-dump
# 移除gem自带源,国内连不上 gem sources --remove https://rubygems.org/ # 添加国内淘宝源 gem sources -a https://ruby.taobao.org/ # 安装redis-dump gem install redis-dump –V #查看redis-dump版本,安装成功可以开心的备份和还原redis了 redis-dump -v redis-dump v0.4.0
使用redis-dump导出数据
redis转存储json
redis-dump -u 127.0.0.1:6378 -a password > redis_6378.json
json还原redis
< redis_6378.json redis-load -u 127.0.0.1 -a password
Redis集群数据导出导入
如果是redis集群模式,需要对集群各个实例分别导出导入,如下所示:
数据导出
命令(redis-dump -u :password@host:port -d 0 > fileName.json)无密码可省略
redis-dump -u IP1:6379 -d 0 > 6379.json redis-dump -u IP2:6380 -d 0 > 6380.json redis-dump -u IP3:6381 -d 0 > 6381.json
执行完成命令之后,生成3个json文件,即为集群节点数据,为提升导入效率,可以将文件拷贝到目标集群机进行导入,也可以直接在本机导入。
数据导入
命令(cat filename.json | redis-load -u :password@host:port -d 0)无密码可省略
cat 6379.json | redis-load -u IP4:6379 -d 0 cat 6380.json | redis-load -u IP5:6379 -d 0 cat 6380.json | redis-load -u IP6:6380 -d 0
注意:导入时json文件源集群节点和目的集群节点键所在的槽要对应,如果json的槽不是由导入节点处理的,会报错:提示MOVED 13596 host:port
异常处理
执行redis-dump命令时如果报ERR unknown command 'keys'异常
原因:keys命令用于全局查询 一般不建议使用所以能在redis.conf中配置了禁用该命令 。
解决方案: 检查redis.conf 中是否有该命令禁用配置
rename-command FLUSHALL "" 清空所有的库数据 rename-command FLUSHDB "" 清空当前库数据 rename-command KEYS "" 查询所有库数据 (因为数据量大时,执行此操作会消耗大量的资源 一般不建议使用该命令) 如果有注释掉即可 !
rename-command FLUSHALL "" 清空所有的库数据 rename-command FLUSHDB "" 清空当前库数据 rename-command KEYS "" 查询所有库数据 (因为数据量大时,执行此操作会消耗大量的资源 一般不建议使用该命令) 如果有注释掉即可 !
本文来自博客园,作者:IT老登,转载请注明原文链接:https://www.cnblogs.com/nb-blog/p/11733889.html
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 记一次.NET内存居高不下排查解决与启示
· 探究高空视频全景AR技术的实现原理
· 理解Rust引用及其生命周期标识(上)
· 浏览器原生「磁吸」效果!Anchor Positioning 锚点定位神器解析
· 没有源码,如何修改代码逻辑?
· 分享4款.NET开源、免费、实用的商城系统
· 全程不用写代码,我用AI程序员写了一个飞机大战
· MongoDB 8.0这个新功能碉堡了,比商业数据库还牛
· 白话解读 Dapr 1.15:你的「微服务管家」又秀新绝活了
· 上周热点回顾(2.24-3.2)