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
稍等片刻,就会在目录下生产几个文件
这3个result.db.X 文件,就是我们3轮过程中最后产生的文件,可以使用sqlite3程序打开查看里面的内容。 result.log 是用来记录不一致结果的。 看 result.log 就可以初步知道哪些key不一致了。