使用redis-shake 进行redis的数据同步或迁移操作

  • 2019 年 10 月 4 日
  • 笔记

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不一致了。