旧redis:  

192.168.1.204    192.168.1.205    分别存放着不同的key

 

redis-cluster:

Master:192.168.1.200  192.168.1.202   192.168.1.203

Slave:  192.168.1.206   192.168.1.207   192.168.1.208

 

模拟redis离线迁移,即需要先断开所有客户端请求

 

 

一、准备旧redis:

1.修改配置文件,指定AOF文件路径

dir /etc/redis/                                  //修改redis的工作目录

 

appendfilename "appendonly.aof"               //会在工作目录中生成aof文件

 

 

2.    准备key

迁移数据到redis-cluster_第1张图片

 

迁移数据到redis-cluster_第2张图片

 

3.    导出key为AOF文件

BGREWRITEAOF

 

迁移数据到redis-cluster_第3张图片

 

 

二、准备redis-cluster:

1.修改配置文件,指定AOF文件路径

dir /etc/redis/

 

 

2.    创建redis-cluster

wKioL1hy8R-xzCIkAAGQIrH0yk0467.png

 

 

3.    关闭redis-cluster,替换AOF文件

204节点的AOF文件替换200节点

205节点的AOF文件替换202节点

 

 

4.    重启redis-cluster

迁移数据到redis-cluster_第4张图片

 

 

5.    执行修复操作

redis-trib.rb fix192.168.1.200:6379      //指定集群内的任一节点即可

 

迁移数据到redis-cluster_第5张图片

 

 

redis-trib.rb check 192.168.1.200:6379     //检查集群状态

 

 

迁移数据到redis-cluster_第6张图片

 

 

迁移数据到redis-cluster_第7张图片

 

 

6.    迁移结果

迁移数据到redis-cluster_第8张图片

 

注:

1.    使用此方法,新的redis-cluster中的master节点要大于等于旧redis-master节点的数量

2.    官方文档中,建议在新建redis-cluster的时候先不要创建slave节点,导入数据后再创建slave节点。可以使用redis-trib.rbcreate --replicas 0 192.168.1.200:6379 192.168.1.202:6379192.168.1.203:6379  来创建只有3个master节点的redis-cluster

 

 

迁移方法二:

redis-trib.rb import --from 192.168.1.204:6379192.168.1.200:6379

 

redis-trib.rb import --from 192.168.1.205:6379192.168.1.200:6379

//直接使用脚本,分别从两台旧redis服务器导入key到集群中,同时会清除旧redis服务器的所有key

 

注:

1.使用--copy  选项可以保存旧redis上的key

 

2.使用--replace  选项可以替换集群中相同名称的key,如果不使用,此类key不会被导入

 

3.如果旧redis的版本是2.8的,导入速度会很慢,可以先把该redis升级为3.0以上再执行命令导入

 

4.迁移数据前记得先导出并备份AOF文件