小易说IT 小易说IT

Redis-Shake安装部署方式

✅ Redis-Shake 支持 Docker 部署

Redis-Shake(v3,推荐版本,支持 key 过滤)没有官方 Docker 镜像,但社区广泛使用两种容器方案:

  1. 直接用二进制 + 自定义 Dockerfile(生产推荐)

  2. docker-compose 一键拉起(测试 / 演练) 同时也提供传统二进制部署方式。

Github:https://github.com/tair-opensource/RedisShake v3 才支持 allow_key_prefix 等 key 过滤,v2 没有内置前缀过滤,一定要用 v3

一、Docker 部署方案(推荐,独立中转机)

1. 目录准备

mkdir -p /opt/redis-shake/conf
cd /opt/redis-shake

新建配置文件 conf/shake.toml(只同步 user: 前缀 key,PSync 全量 + 增量,就是前面我们聊的按 key 过滤)

type = "sync"
[sync_reader]
address = "192.168.1.10:6379"  #源Redis
password = "source@123"
tls = false

[sync_writer]
address = "192.168.1.20:6379"  #目标Redis
password = "target@123"
tls = false

[filter]
allow_key_prefix = ["user:"]
allow_db = [0]

[advanced]
log_file = "/logs/redis-shake.log"
log_level = "info"

2. Dockerfile

FROM alpine:3.19
WORKDIR /app
# 安装依赖
RUN apk add --no-cache wget tar
# 下载v3二进制 linux-amd64
RUN wget https://github.com/tair-opensource/RedisShake/releases/download/v3.1.0/redis-shake-linux-amd64.tar.gz && \
    tar -zxvf redis-shake-linux-amd64.tar.gz && rm -f redis-shake-linux-amd64.tar.gz

VOLUME ["/app/conf", "/logs"]
# 启动命令,加载toml配置
CMD ["./redis-shake", "/app/conf/shake.toml"]

3. docker-compose.yml(一键启动)

version: '3.8'
services:
  redis-shake:
    build: .
    container_name: redis-shake
    restart: unless-stopped
    volumes:
      - ./conf:/app/conf
      - ./logs:/logs
    # 网络:能访问源Redis、目标Redis
    network_mode: "bridge"
    # host网络模式备选:network_mode: host

4. 构建 & 启动

# 构建镜像
docker-compose build
# 后台启动
docker-compose up -d
# 查看日志
docker logs -f redis-shake

⚠️ 网络重点:容器内必须能 ping 通、能访问源 Redis 和目标 Redis 的 6379 端口。 如果源 / 目标在宿主机,不要用 127.0.0.1,要用宿主机内网 IP;跨机房需要放通防火墙 / 安全组。

二、传统二进制部署(不用 Docker,线上备选)

# 下载v3
wget https://github.com/tair-opensource/RedisShake/releases/download/v3.1.0/redis-shake-linux-amd64.tar.gz
tar -zxvf redis-shake-linux-amd64.tar.gz
cd redis-shake-linux-amd64

# 编写 shake.toml(同上配置文件)
# 前台启动(测试)
./redis-shake shake.toml

# 后台常驻(生产,用nohup/systemd)
nohup ./redis-shake shake.toml > redis-shake.log 2>&1 &

生产长期同步建议做成 systemd 托管,方便自启动、日志管理。

三、关键前置检查(部署前必做)

  1. 源 Redis:支持 PSync,replicaof 权限,密码正确;云 Redis 很多云厂商 PSync 受限,只能改用scan_reader模式。

  2. 端口:源 6379、目标 6379,Redis-Shake 所在机器双向连通。

  3. 版本:v3 才有内置 key 前缀过滤,v2 只能 Lua 脚本过滤,不推荐。

  4. 内存:容器 / 机器预留足够内存,全量 RDB 回放阶段占用内存较高。

四、常用操作命令

# 停止同步
docker-compose down

# 查看实时同步日志
docker logs -f redis-shake

# 查看同步指标:qps、全量进度、延迟
# redis-shake内置metrics,默认 http://容器IP:9320/metrics

五、生产避坑

  1. Docker 容器默认 bridge 网络,访问宿主机 Redis 不能写 127.0.0.1,要用宿主机内网 IP;

  2. 同步持续运行,属于长进程,业务割接完成后手动停止;

  3. 全量阶段源 Redis 生成完整 RDB,哪怕只同步少量 key,源端依然有 fork 开销;

  4. 同步完成后,一定要做数据校验:key 数量抽样,大 key 比对。

六、两种部署方式对比

方式

优点

缺点

适用场景

Docker 部署

环境隔离,一键迁移,方便销毁,标准化

需要自己构建镜像,网络需要注意

测试演练、K8s 运行、多环境

二进制

简单,无容器网络坑,性能损耗最小

环境依赖需要手动维护

生产长期同步、独立中转机


本文原创作者:易君召,详见:https://www.yijunzhao.cc/about,转载请注明出处。

原文链接 https://www.yijunzhao.cc/archives/redis-shake-installation-deployment-guide

欢迎访问 https://www.yijunzhao.cc/

https://www.yijunzhao.cc/