redis 版本升级数据迁移使用Redis-Shake

RedisShake是一款开源的Redis迁移工具,支持Cluster集群的在线迁移与离线迁移(备份文件导入)。DCS Cluster集群与Redis Cluster集群设计一致,数据可平滑迁移。
本文以Linux系统环境为例,介绍如何使用Redis-Shake工具进行Cluster集群数据迁移


在线迁移
在线迁移主要适用于自建Redis Cluster集群迁移到DCS Cluster集群的场景,且两端集群实例能够网络连通,或者有一台中转服务器能够连通两端集群实例。
部署在其他云厂商Redis服务上的Cluster集群数据,由于SYNC、PSYNC命令被云厂商禁用,暂不支持在线迁移。

1,创建redis-cluster集群实例.详情见上一章。
注意集群的内存规格不能小于源端Cluster集群


2,准备迁移包
wget https://github.com/alibaba/RedisShake/releases/download/release-v2.0.3-20200724/redis-shake-v2.0.3.tar.gz
tar xf redis-shake-v2.0.3.tar.gz
cd redis-shake-v2.0.3
redis 版本升级数据迁移使用Redis-Shake

 

 

 

3,修改配置
vim redis-shake.conf
# log file,日志文件,不配置将打印到stdout (e.g. /var/log/redis-shake.log )
log.file = /home/ap/cloudapp/redis/dump/redis-shake-v2.0.3/log/redis-shake.log

# pid path,进程文件存储地址(e.g. /var/run/),不配置将默认输出到执行下面,
# 注意这个是目录,真正的pid是`{pid_path}/{id}.pid`
pid_path = /home/ap/cloudapp/redis/dump/redis-shake-v2.0.3/log

# 源端redis的类型,支持standalone,sentinel,cluster和proxy四种模式,注意:目前proxy只用于rump模式。
source.type = cluster

# 架构,比如codis, twemproxy, aliyun proxy等需要配置所有master或者slave的db地址。
source.address = 10.10.202.190:7005;10.10.202.190:7006;10.10.202.190:7004
# password of db/proxy. even if type is sentinel.
source.password_raw = Lining123

# 目的redis的类型,支持standalone,sentinel,cluster和proxy四种模式。
target.type = cluster

target.address = 10.10.202.151:7001;10.10.202.151:7002;10.10.202.151:7003
# password of db/proxy. even if type is sentinel.
target.password_raw =

# rewrite表示源端覆盖目的端。
# none表示一旦发生进程直接退出。
# ignore表示保留目的端key,忽略源端的同步key。该值在rump模式下没有用。
key_exists = rewrite


4,执行同步 ,建议同步时停止业务
 ./redis-shake.linux -conf=redis-shake.conf -type=sync
 
 在打开一个窗口执行
 tailf -100 /home/ap/cloudapp/redis/dump/redis-shake-v2.0.3/log/redis-shake.log

DbSyncer[1] sync:  +forwardCommands=0      +filterCommands=0      +writeBytes=0    # 代表同步完成

DbSyncer[1] sync:  +forwardCommands=3      +filterCommands=0      +writeBytes=158 #代表有数据写入

redis 版本升级数据迁移使用Redis-Shake

 

上一篇:消息队列学习记录


下一篇:「Unity3D」MojoUnity-Shake:使用PerlinNoise实现Unity通用的震动(抖动)特效工具