redis

redis数据迁移

redis迁移方案
整理一下常用的几种redis迁移的方案,分别对应不同的场景。
备份/拷贝/重启
redis-dump
客户端

  1. 备份/拷贝/重启
    利用redis的持久化功能,redis重启的时候,会自动从硬盘的持久化文件中读取数据再恢复到内存中。利用这里原理,把redis2的持久化备份
    替换成redis1的,然后重启redis2,它就会从硬盘持久化文件恢复到内存,这样一来redis2就跟redis1一样了
    要使用这个方案,就必须了解redis的持久化,redis的持久化方案有2种,rdb模式和aof模式:

rdb 保存整个redis的数据
aof 保存成redis可以执行的命令
rdb覆盖过去之后,新的redis数据就没了,毕竟是覆盖操作。而aof因为是保存的命令,只是在新的redis上重新执行了一遍,所以不会覆盖
新redis上的数据。 简单来说如果需要保留新redis的数据,可以使用aof。

具体命令
rdb方案

链接redis

$ redis-cli -u 127.0.0.1 -p 6379 -a 你的密码

执行持久化

$ 127.0.0.1:6379> bgsave

查看文件位置

$ 127.0.0.1:6379> config get dir
复制 redis数据目录/dump.rdb 到另一台redis的数据目录下,启动即可。

ps:先关闭目标redis,先复制文件的话,在目标redis关闭的时候,会生成持久化文件,覆盖你刚刚复制的文件
aof

设置appendonly yes

$ 127.0.0.1:6379> config set appendonly yes

or

$ redis-cli -u 127.0.0.1 -p 6379 -a 你的密码 config set appendonly yes
执行之后,就会在 redis的数据目录 看到 appendonly.aof 文件

目标redis

把appendonly.aof scp到目标机器的 config get dir 指令里的目录
$ redis-cli -h aliyun_redis_instance_ip -p 6379 -a password --pipe < appendonly.aof
如果报错则需要修改配置文件:
/var/lib/redis
添加配置:
appendonly yes
appendfilename "appendonly.aof"

systemctl restart redis
导入完成后,再改回来,重启


  1. redis-dump
    redis-dump是一个第三方的工具,提供redis的导出和导入。
    安装步骤
    1、安装rvm。可参考官网:http://rvm.io/

gpg2 没安装的化自行安装 apt install gnupg2

$ gpg2 --recv-keys 409B6B1796C275462A1703113804BB82D39DC0E3 7D2BAF1CF37B13E2069D6956105BD0E739499BDB

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

按照系统提示执行,添加系统环境

$ source /etc/profile.d/rvm.sh

确认安装成功

$ rvm list known
2、安装ruby 参考官方网站:http://www.ruby-lang.org/en/d...

移除国外的库,不然下载不了

$ gem sources --remove https://rubygems.org/

安装国内的资源地址

$ gem sources -a https://gems.ruby-china.com/

安装

$ gem install redis-dump -V
3、安装 redis-dump

导出所有db

$ redis-dump -u 127.0.0.1:6371 > db_full.json

导出db15

$ redis-dump -u 127.0.0.1:6371 -d 15 > db_db15.json

导入

$ < db_full.json redis-load -u 127.0.0.1:6379
$ < db_db15.json redis-load -u 127.0.0.1:6379 -d 15

OR

$ cat db_full | redis-load
$ cat db_db15.json | redis-load -d 15

使用密码的小技巧(注意密码前面的:)

$ redis-dump -u :密码@127.0.0.1:6371
一些简单的使用

导出所有db

$ redis-dump -u 127.0.0.1:6371 > db_full.json

导出db15

$ redis-dump -u 127.0.0.1:6371 -d 15 > db_db15.json

导入

$ < db_full.json redis-load -u 127.0.0.1:6379
$ < db_db15.json redis-load -u 127.0.0.1:6379 -d 15

OR

$ cat db_full | redis-load
$ cat db_db15.json | redis-load -d 15

使用密码的小技巧(注意密码前面的:)

$ redis-dump -u :密码@127.0.0.1:6371

  1. 客户端
    使用phpredisadmin等客户端,自带导入、导出
    git库 https://github.com/ErikDubbel...

Example: http://dubbelboer.com/phpRedi...

redis数据迁移已关闭评论