离线安装redis-dump工具
1 场景和问题
1.1 redis-dump工具作用
redis-dump可以将redis数据库中的各个slot中的数据导出到文本中,方便迁移备份数据;
1.1 为什么采用redis-dump容器的方式
使用普通的物理机直接安装redis-dump工具,需要下载各种各样的依赖,相对都比较麻烦(例如安装ruby2.2以上版本的依赖),各种rvm依赖包的安装;
使用docker容器单间redis-dump,直接下载依赖安装更简单;
2.下载安装redis-dump工具
2.1 下载镜像
下载地址https://hub.docker.com/r/gaofeng0300/redis-dump
docker pull gaofeng0300/redis-dump:latest
2.2安装
docker run --rm --name fct-redis-dump \
-v /data/my-redis-dump/data:/data \
-v /data/my-redis-dump/dump.rb:/var/lib/gems/2.5.0/gems/redis-dump-0.4.0/lib/redis/dump.rb \
gaofeng0300/redis-dump:latest
2.3 进入容器,执行redis-dump命令,
(1)导出
redis-dump -u localhost:6379 > ./redis_6379.json
(2)导入
cat ./redis_6379.json | redis-load -u localhost:6379
此时,可能报错。
执行 redis-dump 报错:ERROR (Errno::ENOENT): No such file or directory - ps -o rss= -p xxxxx
解决参考:https://blog.csdn.net/qq_36759224/article/details/100812814
即, 修改dump.rb这个配置文件就可以了;
解决方法:找到 Ruby 安装目录下的 dump.rb 文件,用记事本或者 VS Code 打开
比如我的路径为:E:\Ruby26-x64\lib\ruby\gems\2.6.0\gems\redis-dump-0.4.0\lib\redis\dump.rb
注释掉第 32 行代码: `ps -o rss= -p #{Process.pid}`.to_i # in kb
----我是分割线-----
注意事项说明:
如果出现小数量redis-dump的slot可以down下来,但是部分大数据量的slot槽位,dump的过程中出现killed的提示,多数情况下,都是因为redis-dump容器内存过小的原因导致该问题(只用分配比solt更大的容器资源内存即可解决!)