美文网首页
Redis集群数据迁移

Redis集群数据迁移

作者: 轻飘飘D | 来源:发表于2021-03-10 00:35 被阅读0次

1.下载RedisShake

[root@mpb201 ~]# cd /usr/local/src

[root@mpb201 src]# wget https://github.com/alibaba/RedisShake/releases/download/release-v2.0.3-20200724/redis-shake-v2.0.3.tar.gz

[root@mpb201 src]# tar -xvf redis-shake-v2.0.3.tar.gz

[root@mpb201 src]# cd redis-shake-v2.0.3

[root@mpb201 redis-shake-v2.0.3]# ls
ChangeLog  redis-shake.conf  redis-shake.darwin  redis-shake.linux  redis-shake.windows  start.sh  stop.sh

2.获取源集群的Master节点和IP
redis-cli -h {redis_address} -p {redis_port} cluster nodes

[root@MPPAY-CORE2 ~]# redis-cli -h 10.0.101.5 -c -p 7000 cluster nodes
e1dff2cf251fb181d17e3f1198b631167010284b 10.0.101.213:7000 master - 0 1615171002171 295 connected 4096-8191
7ef1467f755f3a0be3c42397966589ebf5b80d62 10.0.101.5:7003 master - 0 1615170999661 13 connected 8192-12287
e4347dda7a22f004658a2591d2ca4b1dd1006010 10.0.101.5:7001 master - 0 1615170998157 294 connected 12288-16383
e3ca082dfdba88c793615d6538c64c3e68b86fe0 10.0.101.5:7000 myself,master - 0 0 0 connected 0-4095
...

3.获取目标集群的Master节点和IP

[root@mpb201 redis-shake-v2.0.3]#  redis-cli -h 10.0.102.201 -c -p 7000 cluster nodes
fca1f250b9fb15a5166470e438e21ef45b1c878e 10.0.102.204:7000@17000 master - 0 1615171549000 4 connected 12288-16383
f1a4f1f596dd923dd02289c3a2a94692d0a18c56 10.0.102.201:7000@17000 myself,master - 0 1615171547000 1 connected 0-4095
fe1ad8daace996a8563d7efa0f84ab0f6f0e2efd 10.0.102.203:7000@17000 master - 0 1615171549000 3 connected 8192-12287
2905b1a509b3ba4367b1bee857da2995c189d750 10.0.102.202:7000@17000 master - 0 1615171550000 2 connected 4096-8191
...

4.编辑RedisShake配置文件

[root@mpb201 redis-shake-v2.0.3]# mkdir log

[root@mpb201 redis-shake-v2.0.3]# pwd
/usr/local/src/redis-shake-v2.0.3

vim redis-shake.conf
------------------------------------------------------------------------------
log.file = /usr/local/src/redis-shake-v2.0.3/log/redis-shake.log
parallel = 64
source.type = cluster
source.address = 10.0.101.5:7000;10.0.101.5:7001;10.0.101.5:7003;10.0.101.213:7000    #源端集群master节点
source.password_raw = #有密码则设置,无则置空
target.type = cluster
target.address = 10.0.102.201:7000;10.0.102.202:7000;10.0.102.203:7000;10.0.102.204:7000    #目标集群master节点
target.password_raw = #有密码则设置,无则置空
target.rdb.output = local_dump
key_exists = rewrite

5.在线迁移

[root@mpb201 redis-shake-v2.0.3]# nohup ./redis-shake.linux -type sync -conf redis-shake.conf &

tail -1000f nohup.out                                              --查看程序启动有没有报错

tail -1000f /usr/local/src/redis-shake-v2.0.3/log/redis-shake.log  --查看redis同步数据信息
出现如下信息,代表全量数据同步完成,进入增量同步阶段  "sync rdb done."
------------------------------------------------------------
2021/03/08 11:58:55 [INFO] DbSyncer[3] total = 37.94MB -      34.95MB [ 92%]  entry=358550      
2021/03/08 11:58:55 [INFO] DbSyncer[3] total = 37.94MB -      37.94MB [100%]  entry=389043      
2021/03/08 11:58:55 [INFO] DbSyncer[3] sync rdb done
2021/03/08 11:58:55 [INFO] DbSyncer[3] FlushEvent:IncrSyncStart Id:redis-shake  
2021/03/08 11:58:55 [INFO] input password is empty, skip auth address[10.0.101.213:7000] with type[auth].
2021/03/08 11:58:56 [INFO] DbSyncer[2] total = 38.34MB -      36.64MB [ 95%]  entry=371800      
2021/03/08 11:58:56 [INFO] DbSyncer[1] total = 37.88MB -      34.69MB [ 91%]  entry=356008      
2021/03/08 11:58:56 [INFO] DbSyncer[0] total = 38.29MB -      37.59MB [ 98%]  entry=378514      
2021/03/08 11:58:56 [INFO] DbSyncer[0] total = 38.29MB -      38.29MB [100%]  entry=386756      
2021/03/08 11:58:56 [INFO] DbSyncer[0] sync rdb done
2021/03/08 11:58:56 [INFO] DbSyncer[0] FlushEvent:IncrSyncStart Id:redis-shake  
2021/03/08 11:58:56 [INFO] input password is empty, skip auth address[10.0.101.5:7000] with type[auth].
2021/03/08 11:58:56 [INFO] DbSyncer[2] total = 38.34MB -      38.34MB [100%]  entry=390403      
2021/03/08 11:58:56 [INFO] DbSyncer[2] sync rdb done
2021/03/08 11:58:56 [INFO] DbSyncer[2] FlushEvent:IncrSyncStart Id:redis-shake  
2021/03/08 11:58:56 [INFO] input password is empty, skip auth address[10.0.101.5:7003] with type[auth].
2021/03/08 11:58:56 [INFO] DbSyncer[1] total = 37.88MB -      37.88MB [100%]  entry=389915      
2021/03/08 11:58:56 [INFO] DbSyncer[1] sync rdb done
2021/03/08 11:58:56 [INFO] DbSyncer[1] FlushEvent:IncrSyncStart Id:redis-shake  
2021/03/08 11:58:56 [INFO] input password is empty, skip auth address[10.0.101.5:7001] with type[auth].
2021/03/08 11:58:56 [INFO] DbSyncer[3] sync:  +forwardCommands=9      +filterCommands=0      +writeBytes=513
2021/03/08 11:58:57 [INFO] DbSyncer[0] sync:  +forwardCommands=5      +filterCommands=0      +writeBytes=179
2021/03/08 11:58:57 [INFO] DbSyncer[2] sync:  +forwardCommands=4      +filterCommands=0      +writeBytes=78
2021/03/08 11:58:57 [INFO] DbSyncer[1] sync:  +forwardCommands=4      +filterCommands=0      +writeBytes=465

...

2021/03/08 12:06:01 [INFO] DbSyncer[3] sync:  +forwardCommands=4      +filterCommands=0      +writeBytes=649
2021/03/08 12:06:01 [INFO] DbSyncer[0] sync:  +forwardCommands=0      +filterCommands=0      +writeBytes=0
2021/03/08 12:06:01 [INFO] DbSyncer[2] sync:  +forwardCommands=0      +filterCommands=0      +writeBytes=0
2021/03/08 12:06:02 [INFO] DbSyncer[1] sync:  +forwardCommands=0      +filterCommands=0      +writeBytes=0
2021/03/08 12:06:02 [INFO] DbSyncer[3] sync:  +forwardCommands=0      +filterCommands=0      +writeBytes=0
2021/03/08 12:06:02 [INFO] DbSyncer[0] sync:  +forwardCommands=0      +filterCommands=0      +writeBytes=0

------------------------------------------------------------
执行日志出现如下信息时,代表增量同步无新增内容:
sync:  +forwardCommands=0  +filterCommands=0  +writeBytes=0

6.如果确定已经全部同步完成,且后续不会有新的业务数据进来,则手动停止同步程序

[root@mpb201 redis-shake-v2.0.3]# ps -ef|grep redis-shake.linux
root      3437  3334 11 11:58 pts/0    00:01:04 ./redis-shake.linux -type sync -conf redis-shake.conf


kill -9 3437

7.驗證

[root@MPPAY-CORE2 ~]# 
redis-cli -h 10.0.101.5 -p 7000  info keyspace
redis-cli -h 10.0.101.5 -p 7001  info keyspace
redis-cli -h 10.0.101.5 -p 7003  info keyspace
redis-cli -h 10.0.101.213 -p 7000  info keyspace

redis-cli -h 10.0.102.201 -p 7000  info keyspace
redis-cli -h 10.0.102.202 -p 7000  info keyspace
redis-cli -h 10.0.102.203 -p 7000  info keyspace
redis-cli -h 10.0.102.204 -p 7000  info keyspace


相关文章

网友评论

      本文标题:Redis集群数据迁移

      本文链接:https://www.haomeiwen.com/subject/lsqpqltx.html