redis-shake 是阿里开源的一个redis 同步工具(redis-migrate-tool比较老了,对一些命令的支持不好,并且官方的版本对应4.X的直接就是不支持)


下载地址: https://github.com/alibaba/RedisShake (直接去下载官方编译好的tar.gz包即可)

官方文档: https://yq.aliyun.com/articles/691794



mkdir /root/redis-shake-1.6.3 -pv

tar xf redis-shake.tar.gz -C /root/redis-shake-1.6.3

cd /root/redis-shake-1.6.3


我的修改后的配置文件如下: redis-shake.conf 

id = redis-shake

log.file = ./redis-shake.log

log.level = all

pid_path =  ./

system_profile = 9310

http_profile = 9320

ncpu = 0

parallel = 32

source.type = standalone     # 源redis是个单机版本的

source.address = 10.80.1.9:6389   # 这是我源redis的地址

# source.password_raw = 123456   # 没有密码的话, 可以注释掉这行配置,或者设置 source.password_raw =

source.auth_type = auth

source.tls_enable = false

target.type = standalone    # 目标redis 是个sentinel版的,下面 target.address 填sentinel环境下的redis master地址即可

target.address = 10.81.10.9:6390   # 目标redis的master地址

target.password_raw =

target.auth_type = auth

target.db = -1

target.tls_enable = false

rdb.input = local

rdb.output = local_dump

rdb.parallel = 0

rdb.special_cloud = 

fake_time =

rewrite = true

filter.db =

filter.key =

filter.slot =

big_key_threshold = 524288000

psync = false

metric = true

metric.print_log = false

heartbeat.url =

heartbeat.interval = 3

heartbeat.external = test external

heartbeat.network_interface =

sender.size = 104857600

sender.count = 5000

sender.delay_channel_size = 65535

keep_alive = 0

scan.key_number = 50

scan.special_cloud =

scan.key_file =

replace_hash_tag = false

extra = false



启动命令:     

./redis-shake -type=sync   -conf=redis-shake.conf 



数据同步过程到最后上线切换阶段, 我们还需要检验下数据是否一致。 可以使用配套的工具: redis-full-check

下载地址: https://github.com/alibaba/RedisFullCheck

文档地址:https://yq.aliyun.com/articles/690463?spm=a2c4e.11153940.blogcont691794.7.50c53f76mTeis6  (文档从原理到使用介绍得很详细,这里就不贴了)


 redis-full-check的用法很简单, 解压后就一个可执行文件。


mkdir /root/redis-full-check-1.2.3/ -pv 

tar xf redis-full-check.tar.gz -C /root/redis-full-check-1.2.3/

cd /root/redis-full-check-1.2.3/

./redis-full-check.linux64 -s 10.80.1.9:6389  -t 10.81.10.9:6390 -p '' -a ''  --log=./check.log --result result.log  

稍等片刻,就会在目录下生产几个文件

image.png

这3个result.db.X 文件,就是我们3轮过程中最后产生的文件,可以使用sqlite3程序打开查看里面的内容。 result.log 是用来记录不一致结果的。  看 result.log 就可以初步知道哪些key不一致了。