RedisShake:redis全量/增量数据同步/迁移工具

99次阅读
没有评论

 

1.概述

RedisShake 是一个用于处理和迁移 Redis 数据的工具,它提供以下特性:

  1. Redis 兼容性:RedisShake 兼容从 2.8 到 7.2 的 Redis 版本,并支持各种部署方式,包括单机,主从,哨兵和集群。
  2. 云服务兼容性

    :RedisShake 与主流云服务提供商提供的流行 Redis-like 数据库无缝工作,包括但不限于:

  3. Module 兼容:RedisShake 与 TairStringTairZSet 和 TairHash 模块兼容。
  4. 多种导出模式:RedisShake 支持 PSync,RDB 和 Scan 导出模式。
  5. 数据处理:RedisShake 通过自定义脚本实现数据过滤和转换。

RedisShake:redis全量/增量数据同步/迁移工具

RedisShake 支持三种模式的数据同步方式:

RedisShake:redis全量/增量数据同步/迁移工具

2.下载安装

下载地址:Releases · tair-opensource/RedisShake (github.com)

wget https://github.com/tair-opensource/RedisShake/releases/download/v4.1.1/redis-shake-linux-amd64.tar.gz
mkdir redis-shake
tar xzvf redis-shake-linux-amd64.tar.gz -C redis-shake
mv redis-shake /software/
cd /software/redis-shake/

3.配置介绍

一般用法下,只需要书写 xxx_readerxxx_writer 两个部分即可

sync_reader

[sync_reader]
cluster = false            # set to true if source is a redis cluster
address = "127.0.0.1:6379" # when cluster is true, set address to one of the cluster node
username = ""              # keep empty if not using ACL
password = ""              # keep empty if no authentication is required
tls = false
sync_rdb = true # set to false if you don't want to sync rdb
sync_aof = true # set to false if you don't want to sync aof
  • cluster:源端是否为集群
  • address:源端地址, 当源端为集群时,address 为集群中的任意一个节点即可
  • 鉴权:

    • 当源端使用 ACL 账号时,配置 username 和 password
    • 当源端使用传统账号时,仅配置 password
    • 当源端无鉴权时,不配置 username 和 password
  • tls:源端是否开启 TLS/SSL,不需要配置证书因为 RedisShake 没有校验服务器证书
  • sync_rdb:是否同步 RDB,设置为 false 时,RedisShake 会跳过全量同步阶段
  • sync_aof:是否同步 AOF,设置为 false 时,RedisShake 会跳过增量同步阶段,此时 RedisShake 会在全量同步阶段结束后退出

Redis Writer

redis_writer 用于将数据写入 Redis-like 数据库。

[redis_writer]
cluster = false
address = "127.0.0.1:6379" # when cluster is true, address is one of the cluster node
username = ""              # keep empty if not using ACL
password = ""              # keep empty if no authentication is required
tls = false
  • cluster:是否为集群。
  • address:连接地址。当目的端为集群时,address 填写集群中的任意一个节点即可
  • 鉴权:

    • 当使用 ACL 账号体系时,配置 username 和 password
    • 当使用传统账号体系时,仅配置 password
    • 当无鉴权时,不配置 username 和 password
  • tls:是否开启 TLS/SSL,不需要配置证书因为 RedisShake 没有校验服务器证书

注意事项:

  1. 当目的端为集群时,应保证源端发过来的命令满足 Key 的哈希值属于同一个 slot。
  2. 应尽量保证目的端版本大于等于源端版本,否则可能会出现不支持的命令。如确实需要降低版本,可以设置 target_redis_proto_max_bulk_len 为 0,来避免使用 restore 命令恢

4 实战1- 单节点向一个一主一从伪集群发起同步

4.1 配置文件

vim shake.toml
[sync_reader]
cluster = false            # set to true if source is a redis cluster
address = "192.168.124.16:6379" # when cluster is true, set address to one of the cluster node
username = ""              # keep empty if not using ACL
password = "123456"              # keep empty if no authentication is required
tls = false                #
sync_rdb = true            # set to false if you don't want to sync rdb
sync_aof = true            # set to false if you don't want to sync aof
prefer_replica = false     # set to true if you want to sync from replica node
try_diskless = false       # set to true if you want to sync by socket and source repl-diskless-sync=yes

[redis_writer]
cluster = false            # set to true if target is a redis cluster
sentinel = false           # set to true if target is a redis sentinel
master = ""                # set to master name if target is a redis sentinel
address = "192.168.124.17:6379" # when cluster is true, set address to one of the cluster node
username = ""              # keep empty if not using ACL
password = "123456"              # keep empty if no authentication is required
tls = false
off_reply = false          # ture off the server reply

4.2 发起同步测试

nohup ./redis-shake shake.toml &
  • 待同步节点写入数据
[root@localhost redis-shake]# redis-cli -h 192.168.124.16 -p 6379
192.168.124.16:6379> auth 123456
OK
192.168.124.16:6379> set key1 value1
OK
192.168.124.16:6379> set key2 value2
OK
  • 同步节点读取测试
[root@localhost redis]#  redis-cli -h 192.168.124.17 -p 6379
192.168.124.17:6379> auth 123456
OK
192.168.124.17:6379> get key1
"value1"
192.168.124.17:6379> get key2
"value2"
192.168.124.17:6379>

参考资料

  1. RedisShake (tair-opensource.github.io)
  2. 【redis数据同步】redis-shake数据同步全量+增量-CSDN博客
  3. redis-shake数据同步&迁移&备份导入导出工具使用介绍-阿里云开发者社区 (aliyun.com)
  4. 什么是 RedisShake | RedisShake (tair-opensource.github.io)
  5. GitHub – tair-opensource/RedisShake: RedisShake is a Redis data processing and migration tool.
  6.  官方教程: https://tair-opensource.github.io/RedisShake/zh/guide/getting-started.html
  7.  官方 github 地址: https://github.com/tair-opensource/RedisShake
正文完
 0
bdspAdmin
版权声明:本站原创文章,由 bdspAdmin 于2025-12-07发表,共计3583字。
转载说明:除特殊说明外本站文章皆由CC-4.0协议发布,转载请注明出处。
评论(没有评论)

摆渡资源站

文章搜索
一言一句话
-「
热门文章
1Panel服务器迁移和WordPress配置

1Panel服务器迁移和WordPress配置

  1Panel服务器迁移 1Panel的整体迁移相对简单,使用快照功能即可实现。但是要求新旧服务器...
Ubuntu 通过页面设置固定 ip

Ubuntu 通过页面设置固定 ip

要在 Ubuntu 图形界面(桌面)设置固定 IP,通过右上角网络图标进入设置,找到有线/无线连接,点击齿轮图...
安装了 openjdk@17 和 zulu@8,通过 jenv 来管理 JDK 版本

安装了 openjdk@17 和 zulu@8,通过 jenv 来管理 JDK 版本

你已经成功安装了 openjdk@17 和 zulu@8,现在可以配置 jenv 来管理 JDK 版本。按照下...
为什么不要在知乎写东西

为什么不要在知乎写东西

知乎的平台注定不能做大做强走向世界,限制太多了 不能发表外链 无缘无故删除文章,警告。
okx websocket 接口问题

okx websocket 接口问题

今天想对接一下 websocket,但是死活不行,主网站 api 接口没问题。 然后发现是电信,联通网络问题,...
最新评论
最新文章
某个货币持仓增长了一倍,但是 jing流入没有增加多少,为啥

某个货币持仓增长了一倍,但是 jing流入没有增加多少,为啥

  这通常是因为该货币的市值(价格)上涨抵消了持仓量的增加,或者存在某些“非交易性”的变动。 简单来...
mac brew 有没有 markdown 格式化工具

mac brew 有没有 markdown 格式化工具

  在 macOS 上通过 Homebrew (brew) 安装 Markdown 格式化工具非常方...
手滑点错更新也不怕!超详细 Mac 系统更新屏蔽指南(附安全恢复方案)

手滑点错更新也不怕!超详细 Mac 系统更新屏蔽指南(附安全恢复方案)

  Mac 屏蔽系统更新并消除小红点全攻略 在 macOS 系统中,系统更新提示的小红点常常让人不胜...
我是如何扫描GitHub上所有“Oops提交”以查找泄露的秘密的

我是如何扫描GitHub上所有“Oops提交”以查找泄露的秘密的

  tl;dr GitHub Archive 会记录每一次公开提交,即使是开发者试图删除的提交也不例...
Mermaid 对比 PlantUML

Mermaid 对比 PlantUML

🔍 核心语法差异说明 为了让转换更顺利,了解两者主要的语法区别会很有帮助: 元素 Mermaid 语法 Pla...