redis-shake是阿里云redis和mongodb团队开源,支持2.8~5.0版本的单实例以及部分代理与集群之间同步。
redis-shake同步原理
第一阶段:源redis节点到redis-shake
1.psync
2.发送rdb
3.发送增量命令
第二阶段:redis-shake到目的redis节点
1.写入rdb
2.写入增量命令
redis-shake特点
高效性:全量同步阶段并发执行,增量同步阶段异步执行,能够达到毫秒级别延迟取决于网络延时。同时,还对大key同步进行分批拉取,优化同化性能。
redis-shake的同步方式
1.dump:从源端下载rdb文件
2.decode:以json格式解析rdb文件
3.restore:将rdb文件恢复健康到目的端red is
4.sync:支持数据同步,原端可以是单节点,主从,集群也支持codis.目的端同样可以是各种模式的redis
5.rump:采用scan和restore命令进行的全量迁移。主要是应对一些云厂商没有开放sync/psync权限的情况下,进行全量迁移的场景
redis-shake的使用
##下载
wget https://github.com/alibaba/RedisShake/releases/download/release-v2.0.3-20200724/redis-shake-v2.0.3.tar.gz
##解压
tar -zxvf redis-shake-v2.0.3.tar.gz
##修改配置文件
vim redis-shake.conf
parallel = ##同步并发线程数量
source.type = cluster ##模式
source.address = slave@ip:port ##源地址
source.password_raw = ##没有密码,不用输入
source.auth_type = auth
target.type = cluster ##模式
target.address = @ip:port ##目的地址
target.password_raw =
target.auth_type = auth
source.rdb.parallel = ##rdb同步并发
##启动
redis-shake.linux -type=sync -conf=redis-shake.conf