Redis数据迁移

最近在工作中遇到一个需要对redis进行数据迁移的场景,经过学习和验证,找到两种有效的迁移方法,在此做一下记录。

1. 物理迁移

所谓的物理迁移,指的是在redis开启了持久化存储过后,我们可以通过复制dump.rdb文件的方式都redis进行数据迁移。具体实施方法如下:

● 在redis源端,找到正确的数据持久化存储文件dump.rdb

● 将dump.rdb复制到目标端的redis指定的持久化存储所在的路径

● 启动redis

如果redis是一主二从的,则先关闭从redis,然后关闭主redis,再把rdb文件传过去,然后重启主redis,最后重启从redis使数据同步。

2. 逻辑迁移

所谓的逻辑迁移,指的是通过第三方工具,例如本次使用的redis-dump和redis-load工具进行逻辑导入导出的方式进行数据迁移。

2.1. 安装redis-dump

redis-dump的安装较为复杂,centos系统可以参考以下安装方式进行安装:

安装redis-dump之前首先需要安装ruby:

yum install ruby rubygems ruby-devel -y

ruby安装完成后,尝试安装redis-dump:

gem install redis-dump

如果提示ruby版本过低,那么则需要更新ruby版本,可以通过以下方式进行更新:

● 安装rvm

curl -L get.rvm.io | bash -s stable

安装完成会提示ruby的安装方法,显示如下:

[root@izuf63g0jydq42k49eo7zcz ~]# curl -L get.rvm.io | bash -s stable
  % Total    % Received % Xferd  Average Speed   Time    Time     Time  Current
                                 Dload  Upload   Total   Spent    Left  Speed
100   194  100   194    0     0    197      0 --:--:-- --:--:-- --:--:--   197
100 24173  100 24173    0     0   9655      0  0:00:02  0:00:02 --:--:-- 24014
Downloading https://github.com/rvm/rvm/archive/1.29.7.tar.gz
Downloading https://github.com/rvm/rvm/releases/download/1.29.7/1.29.7.tar.gz.asc
gpg: directory `/root/.gnupg' created
gpg: new configuration file `/root/.gnupg/gpg.conf' created
gpg: WARNING: options in `/root/.gnupg/gpg.conf' are not yet active during this run
gpg: keyring `/root/.gnupg/pubring.gpg' created
gpg: Signature made Fri 04 Jan 2019 06:01:48 AM CST using RSA key ID 39499BDB
gpg: Can't check signature: No public key
GPG signature verification failed for '/usr/local/rvm/archives/rvm-1.29.7.tgz' - 'https://github.com/rvm/rvm/releases/download/1.29.7/1.29.7.tar.gz.asc'! Try to install GPG v2 and then fetch the public key:

    gpg2 --keyserver hkp://pool.sks-keyservers.net --recv-keys 409B6B1796C275462A1703113804BB82D39DC0E3 7D2BAF1CF37B13E2069D6956105BD0E739499BDB

or if it fails:

    command curl -sSL https://rvm.io/mpapis.asc | gpg2 --import -
    command curl -sSL https://rvm.io/pkuczynski.asc | gpg2 --import -

In case of further problems with validation please refer to https://rvm.io/rvm/security

通过提示的第一个命令进行安装:

$ gpg2 --keyserver hkp://pool.sks-keyservers.net --recv-keys 409B6B1796C275462A1703113804BB82D39DC0E3 7D2BAF1CF37B13E2069D6956105BD0E739499BDB

$ curl -sSL https://get.rvm.io | bash -s stable

$ source ~/.bashrc

$ source ~/.bash_profile

$ source /usr/local/rvm/scripts/rvm

$ rvm list known #列出版本

$  rvm install 3.0.0 #选择一个高版本的安装

$ rvm use 3.0.0 #使用安装的版本

$ ruby --version  #查看版本

● 安装redis-dump:

gem install redis-dump

2.2. 导入与导出

导出和导入命令使用较为灵活,也比较简单,具体可以通过--help命令查看详细说明,以下举一个简单的到处和导入例子。

2.2.1. 导出

# 导出全部数据
redis-dump -u redis://192.168.10.101:6380 -a Nq2_6cJqhbU8 >> redis.json

# 可以通过-d 指定数据库号的方式导出需要的数据库
redis-dump -u redis://192.168.10.101:6380 -a Nq2_6cJqhbU8 -d 0>> redis_0.json

2.2.2. 导入

cat redis.json | redis-load -u redis://192.168.10.101:6379 -a Nq2_6cJqhbU8

上一篇:【分布式websocket 】前端vuex管理客户端消息crud!使用localStorage来存储【第19期】


下一篇:AI系统性学习—LangChain入门