使用Redis-Shake工具迁移Redis-Cluster集群的数据
|Word count:852|Reading time:3min|Post View:
之前介绍过《使用redis-migrae-tool迁移Redis集群的数据》,但是这个工具很久不更新了,于是就找到了阿里开源的Redis-Shake作为本次迁移的工具。
Redis-Shake简介
Redis-shake 是一个用于在两个 redis之 间同步数据的工具,满足用户非常灵活的同步、迁移需求。
安装部署
如果两个集群能通信,那么任意找一台机器部署即可,如果不能通信,那么需要在源集群和目标集群中都需要部署一个。
下载Redis-Shake
1
| wget https://github.com/alibaba/RedisShake/releases/download/release-v2.0.3-20200724/redis-shake-v2.0.3.tar.gz
|
解压
1 2
| mkdir redis-shake tar -zxvf redis-shake-v2.0.3.tar.gz -C redis-shake
|
修改配置文件
本次迁移的两个集群分布是5.0.5
和6.2.5
,不过这个倒没有跨版本的问题。分别查看两个集群的master节点及端口
5.0.5集群
1 2 3 4 5 6 7
| cluster nodes 8b33f273386c9504ef8bd10b005e24825b3b9596 10.10.100.197:7001@17001 master - 0 1628824461416 2 connected 5461-10922 06851aa134d50096d82a434eced9194233b5204e 10.10.100.197:7003@17003 slave 8b33f273386c9504ef8bd10b005e24825b3b9596 0 1628824461515 4 connected a42297b65f7101fc9e4941ef8a0e65080d1b6338 10.10.100.197:7005@17005 slave 0aa20378d14e3ef0859815196cbafa67e1001d0e 0 1628824461515 6 connected e7b6a35b1e92f94c225c507ea19f7f0318f0d1c3 10.10.100.197:7002@17002 master - 0 1628824460113 3 connected 10923-16383 fe355eed99100197f43d1216d1de82643dd496a5 10.10.100.197:7004@17004 slave e7b6a35b1e92f94c225c507ea19f7f0318f0d1c3 0 1628824460415 5 connected 0aa20378d14e3ef0859815196cbafa67e1001d0e 10.10.100.197:7000@17000 myself,master - 0 1628824461000 1 connected 0-5460
|
6.2.5集群
1 2 3 4 5 6 7
| cluster nodes c9ce81a1d93db0c7fc6c5f6d795949560e579840 10.40.80.18:7003@17003 slave 1924b7a138e3fa11309eef26832fe443be5a95ca 0 1628825002180 3 connected 1924b7a138e3fa11309eef26832fe443be5a95ca 10.40.80.18:7002@17002 master - 0 1628825001578 3 connected 10923-16383 447c5cfc918fde8fb64737dc8a6359f368083fb5 10.40.80.18:7005@17005 slave 2af9d5e1529aa6d03906e6848e4ee65aa8501e06 0 1628825001177 2 connected 2af9d5e1529aa6d03906e6848e4ee65aa8501e06 10.40.80.18:7001@17001 master - 0 1628825000574 2 connected 5461-10922 64d26b57e7a95c99bfa563f3d4191a5760216efa 10.40.80.18:7000@17000 myself,master - 0 1628825000000 1 connected 0-5460 271dc2158b0aefc5906b7b1ed2781a7f3999a385 10.40.80.18:7004@17004 slave 64d26b57e7a95c99bfa563f3d4191a5760216efa 0 1628825002582 1 connected
|
修改配置文件
根据上面的信息填写如下配置:
1 2 3 4 5 6 7 8 9 10 11 12 13
| source.type = cluster
source.address = 10.10.100.197:7000;10.10.100.197:7001;10.10.100.197:7002
source.password_raw =
target.type = cluster
target.address = 10.40.80.18:7000;10.40.80.18:7001;10.40.80.18:7002
target.password_raw =
|
主要改以上内容,至于其他配置及功能可以参考这个配置文件中的注释。
迁移Redis Cluster数据
在线迁移
在两个Redis集群之间是可以互相通信的情况下:
1
| ./redis-shake -type sync -conf redis-shake.conf
|
如果出现sync rdb done
表示全量数据同步完成,接着会同步增量数据,如果集群已经停止写操作,可以手动关闭。
离线迁移
如果两个集群互相不能通信,需要导出rdb文件即可。
在源集群中修改配置文件
1 2 3 4 5 6 7 8 9
| vim redis-shake.conf
source.type = cluster
source.address = 10.10.100.197:7000;10.10.100.197:7001;10.10.100.197:7002
source.password_raw =
|
然后执行命令导出rdb文件,上传rdb文件到目标集群。
1
| ./redis-shake -type dump -conf redis-shake.conf
|
在目标集群中修改配置文件
1 2 3 4 5 6 7 8 9 10 11
| vim redis-shake.conf
target.type = cluster
target.address = 10.40.80.18:7000;10.40.80.18:7001;10.40.80.18:7002
target.password_raw =
rdb.input = local_dump.0;local_dump.1;local_dump.2;local_dump.3
|
然后执行命令导入rdb文件
1
| ./redis-shake -type restore -conf redis-shake.conf
|