redis集群数据迁移

redis集群数据备份迁移方案

迁移环境描述及分析

当前我们面临的数据迁移环境是:集群->集群。

源集群:

 

源集群为6节点,3主3备

192.168.112.33:8001

192.168.112.33:8004-8006

192.168.112.33:8002

192.168.112.33:8003

值得注意的是:所有的槽位都分配在192.168.112.33:8001节点上,这样更方便我们迁移。

目标集群:

 

也是6节点,3主3备

192.168.112.33:6001

192.168.112.34:6002

192.168.112.33:6005

192.168.112.33:6000

192.168.112.33:6004

192.168.112.34:6003

选择合适的迁移方法

1.  使用shell脚本+redis命令

2.  使用dump.rdb或appendonly.aof文件

第一种适用于数据量少,只迁移部分数据的情况。第二种适用于我们当下的情况。

迁移步骤

前期准备:

1) 停掉所有节点(先备后主),然后删除所有节点下的appendonly.aof和dump.rdb文件,再动所有主节点,停掉所有节点(有密码的话,最好先不要用密码)

2) 确定目标库所有节点appendonly为yes,将所有槽位分配到一个主节点

3) 停掉拥有所有槽位的那个节点,等待appendonly.aof文件

停业务迁移:

4) 停业务,此时可以同步对所有应用修改redis配置(钉钉,管理门户,搜索引擎)

5) 源库手动触发bgrewriteaof            源端(2分钟)

6) 复制发送备份appendonly.aof            源端,目标端(5分钟)

7) 启动目标节点                        目标端(5分钟)

8) reshared槽位,启动备节点,设置密码  目标端(5分钟)

恢复应用:

9) 启动所有应用,并验证

迁移测试实施

以下是迁移步骤的整个实施过程:

 

目标端停集群(先备后主):

 

 

 

 

清除appendonly.aof和dump.rdb

 

 

 

 

启动所有主节点

 

 

 

 

 

转移槽位到192.168.112.36:6004节点

./redis-trib.rb reshard --from bdd63e1f522d78eb1bb2574b2461a7302e14944a  --to 1d204c88a14a76dc30abb05025135f7e850f2a5d  --slots 5461 --yes 192.168.112.36:6004

./redis-trib.rb reshard --from be5b41880afac9c41b09e0d4e3be1ce1eb00959a  --to 1d204c88a14a76dc30abb05025135f7e850f2a5d  --slots 5462 --yes 192.168.112.36:6004

 

改配置文件,并停掉节点

 

 

原端集群,停业务备份数据

 

 

copy文件appendonly.aof到目标库分配了所有槽位的那个节点指定的appendonly.aof路径下,并启动节点。

 

再重新分配槽位,使槽位平均分配到各主节点。

 

 

 

然后启动所有的备节点,并设置密码,

redis-cli -c -h 192.168.112.33 -p 6000 config set masterauth Woread#2018

redis-cli -c -h 192.168.112.33 -p 6000 config set requirepass Woread#2018

redis-cli -c -h 192.168.112.33 -p 6000 config rewrite

 

redis-cli -c -h 192.168.112.33 -p 6001 config set masterauth Woread#2018

redis-cli -c -h 192.168.112.33 -p 6001 config set requirepass Woread#2018

redis-cli -c -h 192.168.112.33 -p 6001 config rewrite

 

redis-cli -c -h 192.168.112.34 -p 6002 config set masterauth Woread#2018

redis-cli -c -h 192.168.112.34 -p 6002 config set requirepass Woread#2018

redis-cli -c -h 192.168.112.34 -p 6002 config rewrite

 

redis-cli -c -h 192.168.112.34 -p 6003 config set masterauth Woread#2018

redis-cli -c -h 192.168.112.34 -p 6003 config set requirepass Woread#2018

redis-cli -c -h 192.168.112.34 -p 6003 config rewrite

 

redis-cli -c -h 192.168.112.36 -p 6004 config set masterauth Woread#2018

redis-cli -c -h 192.168.112.36 -p 6004 config set requirepass Woread#2018

redis-cli -c -h 192.168.112.36 -p 6004 config rewrite

 

redis-cli -c -h 192.168.112.36 -p 6005 config set masterauth Woread#2018

redis-cli -c -h 192.168.112.36 -p 6005 config set requirepass Woread#2018

redis-cli -c -h 192.168.112.36 -p 6005 config rewrite

 

redis集群迁移就到此完成了。

 

posted @ 2018-06-27 10:42  知言行  阅读(4845)  评论(0编辑  收藏  举报