当前位置: 首页 > 工具软件 > redis-test > 使用案例 >

redis 备份和恢复 :redis-dump安装与导出redis数据

薛弘厚
2023-12-01

! 下面的工具适合于redis 哨兵模式,不适合于redis cluster模式!

在redis cluster模式下,执行redis-dump,会碰到下面的问题。

CROSSSLOT Keys in request don't hash to the same slot redis dump

推荐一个redis cluster下的迁移工具:redis-migrate-tool. 更多的redis dump信息见这篇文章

这里说下redis-dump的安装和简单使用

一、安装redis-dump 
redis-dump安装的时候一般都会遇到下面的错误:

ERROR:  Error installing redis-dump:
redis requires Ruby version >= 2.2.2.

所以这里我直接按照解决方案来安装redis-dump.

1、安装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/src/rvm 
/usr/local/rvm/src/rvm/bin/rvm 
/usr/local/rvm/src/rvm/lib/rvm 
/usr/local/rvm/src/rvm/scripts/rvm 
/usr/local/rvm/bin/rvm 
/usr/local/rvm/lib/rvm 
/usr/local/rvm/scripts/rvm

2、让rvm生效

source /usr/local/rvm/scripts/rvm

3、安装Ruby

# 查看可以安装的Ruby版本
rvm list known 

//输出的例子如下

# MRI Rubies
[ruby-]1.8.6[-p420]
[ruby-]1.8.7[-head] # security released on head
[ruby-]1.9.1[-p431]
[ruby-]1.9.2[-p330]
[ruby-]1.9.3[-p551]
[ruby-]2.0.0[-p648]
[ruby-]2.1[.10]
[ruby-]2.2[.10]
[ruby-]2.3[.8]
[ruby-]2.4[.9]
[ruby-]2.5[.7]
[ruby-]2.6[.5]
[ruby-]2.7[.0]
ruby-head

# for forks use: rvm install ruby-head-<name> --url https://github.com/github/ruby.git --branch 2.2

# JRuby
jruby-1.6[.8]
jruby-1.7[.27]
jruby-9.1[.17.0]
jruby[-9.2.11.1]
jruby-head

# Rubinius
rbx-1[.4.3]
rbx-2.3[.0]
rbx-2.4[.1]
rbx-2[.5.8]
rbx-3[.107]
rbx-4[.12]
rbx-head

# TruffleRuby
truffleruby[-20.0.0]

# Opal
opal

# Minimalistic ruby implementation - ISO 30170:2012
mruby-1.0.0
mruby-1.1.0
mruby-1.2.0
mruby-1.3.0
mruby-1[.4.1]
mruby-2.0.1
mruby-2[.1.0]
mruby[-head]

# Ruby Enterprise Edition
ree-1.8.6
ree[-1.8.7][-2012.02]

# Topaz
topaz

# MagLev
maglev-1.0.0
maglev-1.1[RC1]
maglev[-1.2Alpha4]
maglev-head

# Mac OS X Snow Leopard Or Newer
macruby-0.10
macruby-0.11
macruby[-0.12]
macruby-nightly
macruby-head

# IronRuby
ironruby[-1.1.3]
ironruby-head


# 上面最高的稳定版本是2.7.0,于是就安装它
rvm install ruby 2.7.0

#然后查看ruby版本

ruby --version

4、设置默认ruby

rvm use 2.7.0 --default

5、查看ruby版本

ruby --version

6、安装redis-dump

A) #直接执行下面的命令安装,如果不行,则执行B
gem install redis-dump -V

B) #如果执行A失败,则执行下面的步骤
   #移除gem自带源,国内连不上
  gem sources --remove https://rubygems.org/ 
   #添加国内淘宝源
  gem sources -a https://ruby.taobao.org/ 
   #安装redis-dump
  gem install redis-dump –V


C) #查看redis-dump版本

redis-dump -v
//例子输出
redis-dump v0.4.0

二、使用redis-dump导出数据

# redis-dump -h
  Try: /usr/local/rvm/gems/ruby-2.3.3/bin/redis-dump show-commands
Usage: /usr/local/rvm/gems/ruby-2.3.3/bin/redis-dump [global options] COMMAND [command options] 
    -u, --uri=S                      Redis URI (e.g. redis://hostname[:port])
    -d, --database=S                 Redis database (e.g. -d 15)
    -a, --password=S                 Redis password (e.g. -a 'my@pass/word')
    -s, --sleep=S                    Sleep for S seconds after dumping (for debugging)
    -c, --count=S                    Chunk size (default: 10000)
    -f, --filter=S                   Filter selected keys (passed directly to redis' KEYS command)
    -b, --base64                     Encode key values as base64 (useful for binary values)
    -O, --without_optimizations      Disable run time optimizations
    -V, --version                    Display version
    -D, --debug

导出指令如下:

-d 指定导出哪个数据库的数据,如果不写则导出所有的,一定要注意数据库名字(这里是 1)前后必须要加空格。

-u 后面可以写登陆密码

redis-dump -u :mypassword@127.0.0.1:6379 -d 1 >test.json

如果没有密码可以不写,如

redis-dump -u 127.0.0.1:6377 -d 1 >test.json
  • 如果直接导出本机端口为6379的可以把 -u 的部分给省去
redis-dump > test.json

三、redis-load导入

# redis-load  -help
Usage: /usr/local/rvm/gems/ruby-2.3.3/bin/redis-load [global options] COMMAND [command options] 
    -u, --uri=S                      Redis URI (e.g. redis://hostname[:port])
    -d, --database=S                 Redis database (e.g. -d 15)
    -a, --password=S                 Redis password (e.g. -a 'my@pass/word')
    -s, --sleep=S                    Sleep for S seconds after dumping (for debugging)
    -b, --base64                     Decode key values from base64 (used with redis-dump -b)

 

# cat test.json | redis-load -u 127.0.0.1:6379

 

//如果需要认证密码,则使用下面的命令

# cat test.json | redis-load -u :password@127.0.0.1:6379

 类似资料: