今天有个环境要迁移,发现redis都是内网VPC隔离的,没法用同步工具,只能用导出备份、再还原备份的方式迁移。网上找了一圈Redis-dump的安装使用方法,发现总有些坑,索性就写一篇文案吧,希望能帮到需要的人。
一、Ruby环境安装
Redis 是一款开源的,内存中的数据结构存储系统,它可以用作数据库、缓存和消息中间件。在日常使用中,数据的备份和恢复是不可缺的一环。Redis-dump 是一个基于 Ruby 实现的工具,用于 Redis 数据的导入导出。由于 Redis-dump 是基于 Ruby 的,因此在使用之前需要先安装 Ruby 环境。
1、安装需要的依赖
yum install ruby rubygems ruby-devel -y
2、配置秘钥
curl -sSL https://rvm.io/mpapis.asc | gpg2 --import -
curl -sSL https://rvm.io/pkuczynski.asc | gpg2 --import -
3、安装rvm
curl -sSL https://get.rvm.io | bash -s stable
看到这么界面说明已经安装成功,可以通过 `rvm help` 进行查看。
4、重载配置文件,使配置生效
source /etc/profile.d/rvm.sh
5、安装Ruby 2.6.1版本,且设置为默认
因为redis-dump 0.6.0需要Ruby =>2.6.1,所以选择安装2.6.1版本。
rvm install 2.6.1
rvm use 2.6.1 --default
6、rvm常用命令分享
# 列出已知的 ruby 版本
rvm list known
# 安装指定版本的 ruby
rvm install 2.6.1
# 更新 rvm
rvm get stable
# 切换到指定 ruby 版本
rvm use 2.6.1
# 设置指定 ruby 版本为默认版本
rvm use 2.6.1 --default
# 查询已经安装的 ruby 版本
rvm list
# 卸载指定的 ruby 版本
rvm remove 2.6.1
二、安装redis-dump
1、配置使用国内源:
gem sources --remove https://rubygems.org/
gem sources -a https://gems.ruby-china.com/
2、安装redis-dump
gem install redis-dump -V
安装是出现如下异常:
ERROR: Error installing redis-dump:
The last version of uri-redis (>= 0.4.0) to support your Ruby & RubyGems was 0.4.2. Try installing it with `gem install uri-redis -v 0.4.2` and then running the current command again
uri-redis requires Ruby version >= 2.6.8. The current ruby version is 2.6.1.33.
3、按照提示安装 uri-redis 0.4.2
gem install uri-redis -v 0.4.2
4、再次执行安装命令:
gem install redis-dump -V
直到安装成功。
三、redis-dump的导出、导入
1、redis-dump导出备份
# redis没有设置密码,直接数据导出
#redis-dump -u <redis_host>:<redis_port> > redis.json
redis-dump -u 127.0.0.1:6379 > redis.json
# 导出指定数据库中的数据,例子是2号库
#redis-dump -u <redis_host>:<redis_port> -d <redis_db> > redis1.json
redis-dump -u 127.0.0.1:6379 -d 2 > redis1.json
# 对于Redis设置了密码的导出方式
#redis-dump -u :<redis_password>@<redis_host>:<redis_port> > redis.json
redis-dump -u :123456@127.0.0.1:6379 > redis.json
<redis_host>
:Redis 服务器地址,默认为127.0.0.1
。<redis_port>
:Redis 服务器端口,默认为6379
。<redis_db>
:要备份的 Redis 数据库编号,默认为0
。<redis_password>
:Redis 服务器密码,如果 Redis 未设置密码,则无需此参数。
2、redis-load 还原备份
# 导入没有设置密码的Redis中
cat redis.json | redis-load
# 或者
< redis.json redis-load
# 将备份导入到2号DB中,目标库带密码的
#cat data.json | redis-load -u :<redis_password>@<redis_host>:<redis_port> -d <redis_db>
cat redis2.json | redis-load -u :123456@127.0.0.1:6379 -d 2
# 或者
#< redis2.json redis-load -u <redis_host>:<redis_port> -a <redis_password> -d <redis_db>
< redis2.json redis-load -u 127.0.0.1:6379 -a 123456 -d 2
# 要是命令是因为 utf-8 格式报错时,需要加上 `-n` 参数
cat data2.json | redis-load -n -u 127.0.0.1:6379 -a 123456 -d 2
- <redis_host>:Redis 服务器地址,默认为 127.0.0.1。
- <redis_port>:Redis 服务器端口,默认为 6379。
- <redis_db>:要备份的 Redis 数据库编号,默认为 0。
- <redis_password>:Redis 服务器密码,如果 Redis 未设置密码,则无需此参数。
四、不重要的总结
Redis-dump作为一个轻量级的Redis数据备份和恢复工具,具有简单易用、快速高效的特点。
通过本文的分享,希望能帮助你避开一些坑,少走有一些弯路。