Redis-Shake【一】简要介绍

Redis-Shake【一】简要介绍
Redis-Shake【二】 Sync功能实现简介

Redis-Shake

Redis-shake是一个基于golang语言开发的,用于在两个redis之间同步数据的工具,满足用户非常灵活的同步、迁移需求。

github地址 https://github.com/alibaba/RedisShake

支持redis standalone、cluster、sentinel、proxies(如:Codis、twemproxy、Aliyun Cluster Proxy, Tencent Cloud Proxy 等)之间的数据迁移,
redis版本支持2.x to 5.0

支持的迁移模式

decode: 把Redis RDB文件解析成人类可读的文件格式.
restore: 把Rdis RDB文件作为数据源,恢复到目标Redis实例中.
dump: 对源Redis实例中的数据dump到RDB文件中.
sync: 基于Redis sync/psync命令从源redis实例同步到目标Redis实例,该模式包含全量同步和增量同步两个阶段。(通过默认Redis Slave来实现)
rump: 基于Redis scan命令的方式从源Redis同步到目标Redis实例。只支持全量同步,这种方式通常适用于源redis不支持sync/psync命令的场景

sync相比rump模式来说性能较好,通用性较差,一般来说sync模式使用的相对来说更多一些

简单使用

可以参考官网https://github.com/alibaba/RedisShake/wiki/%E7%AC%AC%E4%B8%80%E6%AC%A1%E4%BD%BF%E7%94%A8%EF%BC%8C%E5%A6%82%E4%BD%95%E8%BF%9B%E8%A1%8C%E9%85%8D%E7%BD%AE%EF%BC%9F

redis-shake二进制包

  • 直接下载二进制包:https://github.com/alibaba/RedisShake/releases

  • 手动打包
    这种方式更适合于需要二次定制化开发的场景,首先需要安装golang的开发环境,另外在运行项目的时候可能会遇到一些问题:

    1. 项目中的部分安装下载不下来,可以尝试使用gopm手动下载,下载完成之后可以通过govendor的方式把所有依赖的包放到vendor目录下,这样以后或者别人就不需要下载了
    2. 找不到包github.com/cespare/xxhash/v2,这个是因为prometheus基于依赖于该包,而prometheus是基于gomod构建的,gomod支持能够识别xxhash后面的v2是指定的版本,而redis-shake使用的是govendor不支持版本,解决办法,可以下载github.com/cespare/xxhash/,然后把该文件夹中的内容都copy到github.com/cespare/xxhash/v2目录下即可。

启动命令:
redis-shake --conf={配置文件地址} --type={模式:sync/dump等} 模式需要与配置文件中的source target对应。如下是一个sync模式的配置文件示例:

# id唯一标识一次同步进程
id=redis-shake
# source相关配置
source.type=standalone
source.address=10.xx.xx.xx:6379
source.password_raw={password}
source.auth_type = auth

target.type=standalone
target.address=10.xx.xx.xx:6379
target.password_raw={password}
target.auth_type = auth

# 在rdb全量同步阶段,如果目标redis已经存在对应的key时是否覆盖,如果为false就抛异常
rewrite = true

# 是否做metric统计,建议设置为true,如果设置为false,/metric中的部分参数的值就一直是0
metric = true

下一节介绍一下Redis-Shake Sync的实现原理

你可能感兴趣的:(Redis-Shake【一】简要介绍)