ARTICLE DETAIL

资讯详情

深耕郑州网站建设与运营推广的一线实战洞察。

Redis迁移、同步、备份一站式搞定:开源多任务同步引擎RedisSyncer完全介绍

Redis迁移、同步、备份一站式搞定:开源多任务同步引擎RedisSyncer完全介绍 Redis迁移、同步、备份一站式搞定开源多任务同步引擎RedisSyncer完全介绍【免费下载链接】redissyncer-serverRedisSyncer是一个多任务的redis数据同步工具可灵活的满足Redis间的数据同步、迁移需求; redissyncer is a redis synchronization tool, used in redis single instance and cluster synchronization项目地址: https://gitcode.com/gh_mirrors/re/redissyncer-serverRedisSyncer是一个开源的Redis 数据同步工具用于 Redis 单实例与集群之间的数据同步、迁移与备份。它作为多任务同步引擎支持全量 增量实时同步、跨版本迁移、RDB/AOF 文件导入、断点续传和大 key 拆分帮助企业以最小的业务停机时间完成 Redis 数据迁移。为什么你需要一款专业的 Redis 迁移同步工具常见的 Redis 数据迁移方式主要有两种但都有明显的短板迁移方式优点痛点RDB/AOF 文件恢复操作简单、无需引入其他工具业务停写时间长10分钟~1小时源目标 RDB 版本必须兼容集群拓扑必须一致主从复制Replication停写时间短两端网络必须可达、复制协议必须兼容集群节点数必须一一对应换句话说版本不一致、节点数不同、存量数据大、业务不能长时间停写——传统方式几乎都会卡住。这正是 RedisSyncer 要解决的问题✅ 单节点、多节点在线同步✅ 跨版本迁移支持高版本至低版本✅ 不同节点数量的集群间迁移✅ 断点续传✅ RDB / AOF / 混合文件批量导入本地或在线 URL✅ 大 key 自动拆分✅ key / command 过滤与放行✅ TTL 校准、增量命令订阅目标端支持 Kafka✅ 易部署、多任务并发、任务状态可监控完整功能清单可参考 docs/FunctionList.md。图RedisSyncer 同步引擎架构——左侧源 Redis 集群通过 replicator 拉取数据经 transmission 写入目标集群同时支持数据回滚与增量命令实时备份RedisSyncer 核心原理全量 增量实时同步RedisSyncer 的同步过程分为两个阶段理解它就理解了所有迁移方案全量同步阶段通过sync命令在源 Redis 节点拉取全量数据经过 RDB 版本识别、db 映射、大 key 拆分等计算后写入目标集群增量同步阶段全量完成后自动进入命令传播模式基于 Redis 的 PSYNC 机制实时同步增量命令并记录每个任务的 runid 和 offset。关于跨版本迁移的实现细节、命令幂等处理与断点续传机制可阅读架构文档 docs/architectrue.md。跨版本迁移是怎么做到的Redis 原生只向下兼容低版本无法加载高版本 RDB会抛出Cant handle RDB format version错误。RedisSyncer 的做法是不再直接传输 RDB 文件而是把 RDB 数据解析成命令对 SET、ZSET、HASH 等结构解析为SADD、ZADD、HMSET等命令对 List 等有序结构拆分为多个子命令并保证顺序发送对 String 等结构按目标端 RDB 版本重新序列化使用REPLACE命令幂等写入。这样从 Redis 6.x 迁移到 4.x 甚至 3.x 都没有问题这也是主从复制完全做不到的。5分钟上手Redis 同步任务创建步骤RedisSyncer 是一个多任务服务端程序用户通过 RESTful API或配套 dashboard 面板管理任务。基本使用步骤只有五步创建任务 → 启动任务 → 查看状态 → 停止任务 → 删除任务。一键部署Docker 快速启动服务docker run -idt -m 2G -p 8000:80 --name redissyncer redissyncer:v2.0.8如果从源码构建只需 Maven 3.0 与 JDK 1.8mvn clean package -Ddockerfile.skip java -jar syncer-webapp/syncer-webapp.jar创建你的第一个 Redis 同步任务假设 redissyncer 部署在 10.0.0.100:8080源库 192.168.0.10目标库 192.168.0.20curl -X POST http://10.0.0.100:8080/api/v2/createtask \ -H Content-Type: application/json \ -d { sourcePassword: xxxxxx, sourceRedisAddress: 192.168.0.10:6379, targetRedisAddress: 192.168.0.20:6379, targetPassword: xxxxxx, targetRedisVersion: 4, taskName: firsttest }返回的taskids即任务唯一 ID源端为集群时任务会按节点数自动拆分成多个子任务{ msg: Task created successfully, code: 2000, data: { taskids: [10F7B3A0E5344598BAA9F847ADBFF9D6] } }启动、查看与停止任务# 启动任务每次仅支持单任务启动 curl -X POST http://10.0.0.100:8080/api/v2/starttask \ -H Content-Type: application/json \ -d { taskid: 10F7B3A0E5344598BAA9F847ADBFF9D6 } # 按名称查看任务状态 curl -X POST http://10.0.0.100:8080/api/v2/listtasks \ -H Content-Type: application/json \ -d { regulation: bynames, tasknames: [firsttest] } # 停止任务支持批量 curl -X POST http://10.0.0.100:8080/api/v2/stoptask \ -H Content-Type: application/json \ -d { taskids: [10F7B3A0E5344598BAA9F847ADBFF9D6] }完整 API 参数说明见 docs/api.md快速上手指南见 docs/quickstart.md。图Dashboard 面板可实时监控所有同步任务状态、进度与数据量进阶实战跨版本、断点续传与大 key 拆分 集群迁移节点数可以不同这是 RedisSyncer 相对主从复制的最大优势——源与目标集群的节点数量不需要一致。创建任务时把集群各节点用;分隔填入地址redissyncer 会根据源节点数自动生成对应任务并依据 key 的 hash 规则计算其目标节点。集群迁移的两种创建方式详见场景文档 docs/scenecases.md。⏪ 断点续传任务中断不从头再来任务主动暂停或异常中断后重新启动时可通过afresh参数指定续传方式设为false时任务从停止前的最后一个 offset 继续设为true默认则从头开始。每个同步子任务都会持续记录 runid 和 offset增量阶段断开后可精确续传。 大 key 自动拆分对于 LIST、SET、ZSET、HASH 等结构当大小超过阈值时redissyncer 会自动按配置的 batchSize 迭代切割成多个子命令避免单个超大 key 造成的同步卡顿与目标端阻塞。 RDB/AOF 文件导入离线备份恢复新选择除了在线同步RedisSyncer 还支持RDB、AOF、混合文件的批量并行导入文件来源可以是本地路径也可以是 URL 在线文件。这让备份文件异地恢复变得像执行一个同步任务一样简单——源端宕机、数据误删时直接用备份文件导入新集群即可。 跨云迁移实战架构在跨云场景下例如私有云迁移到公有云 Redis通常结合消息中间件本地代理顺序复制增量数据到 MQ topicredissyncer 将存量 RDB/AOF 文件同步至对端云最终实现秒级业务切换。图跨云 Redis 数据同步方案——Cloud A 的存量 RDB/AOF 数据与增量数据分别通过 redissyncer 同步至 Cloud B真实案例某支付业务需将 Redis 4.0 原生集群迁移到基于 Redis 3.2 的自研集群RDB 版本不兼容、存量数据 200G、要求秒级切换——使用 RedisSyncer 后整个迁移切换仅耗时 15 分钟。详见 docs/introduction.md。Redis 双向同步数据动态一致的终极玩法双向同步指两个都有存量数据和写流量的 Redis 实例互相同步最终达到动态数据一致。难点在于 Redis 没有实例 ID数据会在两端形成无限回环。RedisSyncer 通过**冲销池write-off cache**破环每个方向维护一个冲销集合已冲销过的数据在回环时直接丢弃从根源上切断循环复制。在长距离网络瞬断场景下还可以引入 Kafka 作为缓冲两端各部署一个 redissyncer Kafka本地同步器作为生产者、远端作为消费者网络抖动时数据在 Kafka 中堆积而不丢失。图基于 Kafka 的双向同步方案——syncer1/syncer2 分别通过 Kafka k1/k2 与冲销池 set1/set2 实现跨数据中心 Redis 数据动态一致分布式部署多节点组团同步大集群当单台 redissyncer 服务器资源不足以支撑大规模同步时可以部署多个 redissyncer 节点组团完成任务。系统采用分布式设计portal 负责调度与健康检查多个 server 节点向 etcd 注册服务并上报健康状态通过分布式锁execlock协调巡检与任务执行任意节点宕机后可由其他节点接管。图RedisSyncer 分布式部署设计——redissyncer-portal 与多个 redissyncer-server 通过 etcd 协作完成任务调度支持的 Redis 版本与命令项目支持范围Redis 版本2.8 ~ 6.2跨版本迁移高版本 → 低版本支持命令SET/GET、INCR 系列、LPUSH/RPUSH 系列、HSET/HDEL、SADD/SREM、ZADD/ZREM、GEOADD、XADD/XACK 等 60 写命令数据来源在线 Redis、本地/在线 RDB、本地/在线 AOF、混合文件运行环境JDK 1.8 学习资源与下一步想深入使用 RedisSyncer可以从以下项目资料入手快速上手与部署方法docs/quickstart.md产品介绍与典型案例docs/introduction.md架构原理与跨版本机制docs/architectrue.mdAPI 接口文档docs/api.md场景案例集群迁移、断点续传、文件导入docs/scenecases.md双向同步设计docs/two-way_synchronization.md服务端配置详情docs/serverconfig.md项目采用 Maven 多模块组织syncer-common通用基础、syncer-jedis定制 Redis 客户端、syncer-replicareplica 复制协议与命令解析、syncer-transmission数据写入与任务管理、syncer-webappRESTful 接口与打包源码结构清晰适合二次开发。使用建议迁移中和业务切换前请反复观察日志位于~/log确认无异常切换前充分校验数据一致性建议将 redissyncer 部署在独立空闲机器上避免内存、带宽、IOPS 不足。无论你是要做Redis 跨版本迁移、集群扩容重构、跨云搬站还是搭建双活异地容灾RedisSyncer 都能用一个多任务引擎一站式搞定。立即 clone 仓库开始你的第一次 Redis 数据同步之旅吧git clone https://gitcode.com/gh_mirrors/re/redissyncer-server【免费下载链接】redissyncer-serverRedisSyncer是一个多任务的redis数据同步工具可灵活的满足Redis间的数据同步、迁移需求; redissyncer is a redis synchronization tool, used in redis single instance and cluster synchronization项目地址: https://gitcode.com/gh_mirrors/re/redissyncer-server创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考
返回列表