Redis数据备份导出工具——Redis-Dump

Posted by Reed on August 9, 2019

前言

Redis-Dump是一款将Redis里的数据备份为json格式的文件和从备份文件恢复的工具,其基于Ruby环境运行。

安装软件

因为Redis-Dump是用Ruby开发的,当然少不了安装Ruby。

从官网下载安装好Ruby后,由于官方源不在国内非常的缓慢,因此需要换源,这里使用ruby-china的源。

$ gem sources --add https://gems.ruby-china.com/ --remove https://rubygems.org/
$ gem sources -l
https://gems.ruby-china.com
# 确保只有 gems.ruby-china.com

这款工具有两个命令:redis-dump、redis-load,分别是导出与导入的功能。

数据导出、备份

直接导出所有的数据库

redis-dump > db.json

如果不是默认的端口或者主机

redis-dump -u 127.0.0.1:666 > db.json

如果有密码

redis-dump -u passwd@127.0.0.1:6379 > db.json

选择其中一个数据库导出

redis-dump -d 15 > db_15.json

数据导入、恢复

查看导出的json文件可知,其中已经包含了所在的数据库,所以恢复数据的时候就不需要加上-d参数了。

无密码恢复

< db.json redis-load

端口不是默认的

< db.json redis-load -u 127.0.0.1:666

设有密码

< db_15.json redis-load -u passwd@127.0.0.1:666

遇到的问题

上述命令行操作在Linux系统或Mac系统是十分简单好用的,然而我在Windows系统中操作redis-dump的时候,却报错了

ERROR (Errno::ENOENT): No such file or directory

经过搜索找到一个解决方案:

  • 打开C:\Ruby26-x64\lib\ruby\gems\2.6.0\gems\redis-dump-0.4.0\lib\redis 注:目录名会因为Ruby版本有所差异
  • 打开目录下的dump.rb文件
  • 找到这样一句话 然后把它注释掉
    `ps -o rss= -p #{Process.pid}`.to_i # in kb
    
  • 然后就可以正常执行redis-dump命令了