redis-shake工具同步redis数据

news/2025/1/12 13:37:16/文章来源:https://www.cnblogs.com/Leonardo-li/p/18666906

一、我的使用场景说明

1.业务场景

  • 由于业务要求,redis服务器迁移,将A服务器redis(单机)数据迁移到B服务器的redis(单机)上,只迁移5库数据,选择工具的原因是:B服务器上redis其他库都有数据,不能直接迁移A服务器redis的rdb或aof持久化文件
  • redis都是单机、6.0.2版本
  • redis使用docker容器部署
  • redis都开启了rdb持久化
  • A服务器redis-172.16.44.67:6379、B服务器redis=172.16.44.68:6379,密码:123456

 

二、redis-shake工具介绍

redis-shake 是一个用于数据迁移和同步的开源工具,主要用于将 Redis 数据从一个实例迁移到另一个实例。它可以帮助在不同的 Redis 集群或实例之间迁移数据,支持单向同步和双向同步,并可以用于在 Redis 实例之间同步不同的数据集或数据库。

1.主要功能

1.1 数据迁移:

支持将 Redis 实例的数据迁移到另一个实例。可以跨版本进行迁移,支持不同版本的 Redis 之间的数据传输。

1.2 增量同步:

支持全量数据迁移后,通过增量同步进行实时同步,保持目标 Redis 实例数据的实时更新。

1.3 支持多种模式:

Standalone(单机模式): 从一个 Redis 实例同步到另一个 Redis 实例。
Cluster(集群模式): 在 Redis 集群之间进行同步。

1.4 RDB/AOF 支持:

支持通过 RDB(Redis 数据库快照)文件或 AOF(Append Only File)日志进行数据同步。

1.5 多种同步方式:

全量同步: 将源 Redis 实例中的所有数据导出到目标实例。
增量同步: 在全量同步完成后,通过增量同步确保目标实例持续跟踪和同步源实例的更新。

2.常见使用场景

跨集群迁移: 当需要将 Redis 数据从一个集群迁移到另一个集群时,redis-shake 可以实现高效的同步。
集群升级: 在 Redis 集群版本升级时,redis-shake 可以帮助迁移数据,并确保在新版本中同步旧集群的数据。
数据备份与恢复: 可用于备份 Redis 数据并将其恢复到另一台 Redis 实例。
灾难恢复: 用于将一个实例的数据同步到另一个实例,提供灾难恢复的手段。

3.工作原理

全量同步: 使用 bgsave 命令从源实例生成 RDB 文件,然后将文件从源实例传输到目标实例,完成数据迁移。
增量同步: 在全量同步完成后,redis-shake 会启动增量同步机制,实时监控源实例的更新并同步到目标实例。
AOF 和 RDB 文件支持: redis-shake 支持通过 AOF 或 RDB 文件进行数据同步,适应不同的 Redis 持久化机制。

4.redis-shake工具下载

https://github.com/tair-opensource/RedisShake/releases

 

5.配置与使用

  • 解压 redis-shake-v4.3.1-linux-amd64.tar.gz 后,得到 redis-shake 执行程序和 shake.toml 配置文件
  • redis-shake 的配置通常通过 TOML 格式的配置文件进行,配置文件中包含源实例和目标实例的相关信息(如地址、密码、数据库等),并可以设置同步的数据库、同步方式(全量或增量)、同步的详细选项(例如是否启用 TLS、是否同步 AOF 等)。


5.1 配置文件shake.toml编辑(cat shake.toml)

  • 默认shake.toml文件配置较多,可只保留有用的配置即可
[sync_reader]
cluster = false
address = "172.16.44.67:6379" # 源 Redis 地址
password = "123456"          # 源 Redis 密码
sync_rdb = true               # 启用 RDB 同步
sync_aof = false               # 启用 AOF 同步[redis_writer]
cluster = false
address = "172.16.44.68:6379" # 目标 Redis 地址
password = "123456"          # 目标 Redis 密码[filter]
allow_db = [5]                # 只同步 5 号库的数据[advanced]
log_file = "shake.log"        # 日志文件路径
log_level = "info"            # 日志级别:info
pipeline_count_limit = 1024   # 默认管道大小rdb_restore_command_behavior = "rewrite" # 遇到重复键时覆盖

这个配置文件指示 redis-shake 从 172.16.44.67:6379 的 Redis 实例中的 5 号数据库同步数据到 172.16.44.68:6379 的 Redis 实例的 5 号数据库。

5.2 配置项说明

[sync_reader]:配置源 Redis 实例的相关信息。
address:源 Redis 实例的 IP 地址和端口。
password:连接源 Redis 实例的密码。
sync_rdb:是否启用 RDB 同步。
sync_aof:是否启用 AOF 同步。

[redis_writer]:配置目标 Redis 实例的相关信息。
address:目标 Redis 实例的 IP 地址和端口。
password:连接目标 Redis 实例的密码。

[filter]:过滤同步数据的设置。
allow_db:指定要同步的数据库,可以是一个数字列表,这里只同步第 5 号数据库。

[advanced]:高级配置项。
log_file:设置日志文件的路径,记录同步过程中的信息。
log_level:设置日志级别,可以是 info、warn、error 等,控制日志的详细程度。
pipeline_count_limit:设置管道的最大数量,决定批量操作的大小。
rdb_restore_command_behavior:当目标 Redis 实例中已存在相同键时的行为,rewrite 表示覆盖目标 Redis 中的旧数据。

5.3 同步前操作(源服务器上)

  • 执行数据同步前,在源redis上执行落盘命令 bgsave

5.4 使用说明

使用以下命令启动 redis-shake 数据同步:

./redis-shake shake.toml

 这将会按照配置文件中的设置从源 Redis 实例(172.16.44.67:6379)同步数据到目标 Redis 实例(172.16.44.68:6379),并仅同步 5 号数据库的数据。

5.5 执行过程

 

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.hqwc.cn/news/868171.html

如若内容造成侵权/违法违规/事实不符,请联系编程知识网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

网站热门视频无法播放,如何解决?

针对您提到的网站热门视频无法播放的问题,我们可以从多个角度进行排查和解决。以下是一些建议,希望能帮助您快速找到问题所在并恢复正常播放功能。检查视频文件完整性:首先,请确认视频文件是否完整上传到了服务器。有时候由于网络波动或其他原因,可能导致文件传输过程中出…

服务器连接不上,如何排查和解决?

当您遇到服务器连接不上的问题时,首先需要明确具体的症状和环境。以下是详细的排查步骤和解决方案:确认网络连接:检查本地网络是否正常工作,尝试访问其他网站或服务,确保不是本地网络问题。 使用 ping 或 traceroute 命令测试与目标服务器的连通性。如果无法 ping 通,可能…

绑定域名后访问需输入账号密码,且静态资源跳转至缓存地址,如何处理?

当您绑定域名后访问网站时遇到需要输入账号密码以及静态资源跳转至缓存地址的问题,可能是由以下几种原因引起的。以下是详细的排查步骤和解决方案:确认身份验证设置:检查 Web 服务器(如 Apache、Nginx)的配置文件,确保没有启用不必要的身份验证机制。例如,Apache 的 .ht…

解决服务器卡顿及响应缓慢的问题

问题描述: 用户反映其服务器在迁移后出现了严重的卡顿现象,尤其是在执行某些特定操作(如批量打印快递单、查询会员列表)时,响应时间长达十几秒甚至二十多秒。这种情况严重影响了用户体验和工作效率。 解决方案:分析性能瓶颈:首先,使用性能分析工具(如top、htop、iosta…

解决FTP类问题:无法上传或下载文件

问题描述: 用户报告称其FTP账户虽然可以成功连接到服务器,但在尝试上传或下载文件时却失败了。这种情况严重影响了文件管理和更新工作,需要找出根本原因并解决。 解决方案:检查FTP权限设置:首先,确认FTP用户的权限是否足够。对于大多数FTP服务器,默认情况下用户具有读写…

如何解决网站伪静态设置后首页正常但其他页面404的问题

在配置伪静态规则后遇到了首页可以正常访问,但其他页面显示404错误的问题。这种情况通常与伪静态规则的配置、服务器环境或文件路径有关。以下是详细的排查步骤和解决方案:检查伪静态规则配置:确认伪静态规则是否正确配置。伪静态规则通常位于.htaccess(Apache服务器)或we…

9.水卡研究

学习资源:【【教程】手把手教你玩转IC卡-第1章-第1节-基础知识】https://www.bilibili.com/video/BV1QF411r7mw?vd_source=3e114458cfb3d0f9ecfb71a4c76c2465试验对象是本人大学水卡,因为是加密卡,需要嗅探,得要学校取水器,现在哩寒假在家,去嗅探,得开学了。 目前,就打…

ZIP伪加密解析

ZIP伪加密解析 1、zip组成 一个 ZIP 文件由三个部分组成:压缩源文件数据区+压缩源文件目录区+压缩源文件目录结束标志。 一个zip文件由这样三个部分组成_zip 文件结构_一只独孤的程序猿的博客-CSDN博客 2、实例压缩源文件数据区: 50 4B 03 04:这是头文件标记(0x04034b50) …

国内云服务器怎么选

前言 作为一名个人开发者,无论是搭建网站、编写小程序,还是运行脚本,我几乎离不开云服务器。回想从大学时期开始接触服务器,到如今进入职场,已累积了近十年的使用经验。从最初的“乞丐版”1核0.5G服务器,到如今的“土豪版”8核16G云服务器,再到云数据库、云Redis、云存储…

如何解决网站模板无法更新及后台操作异常的问题

您好,根据您的描述,您遇到了以下两个主要问题:网站模板无法更新,即使删除旧模板并上传新模板后,仍然显示旧模板。 登录网站后台后,部分系统板块无法点击,且栏目内容混乱。为了解决这些问题,请按照以下步骤进行排查和处理: 一、网站模板无法更新清除浏览器缓存浏览器缓…

如何安全有效地修改网站后台代码而不影响正常运行

问题描述: 用户希望能够安全有效地修改网站后台代码,但又担心会因为不当操作而导致网站无法正常运行。因此,他们寻求一种既能够实现定制化开发又能保证系统稳定性的方法。 回答: 当涉及到网站后台代码的修改时,确保安全性和稳定性是非常重要的。下面是一些实用的建议和最佳…

rust学习十六.3、并发-线程之间共享数据

线程之间共享数据,即go中部分人所憎恶的方式! 然而,这个方式并非没有其优点,否则操作系统也不提供这种实现方式。闲言少序,上正文! 一、概述 * 1.当我们大谈基于信道通信时,应该指的是应用级别。如果是操作系统,应该还是会有多种措施的,否则rust的源头在哪里来着。* 2…