ARTICLE DETAIL

资讯详情

深耕网站建设、视觉设计与SEO优化的一线实战洞察。

5条curl命令搞定Redis同步:RedisSyncer创建、启动、停止与查询任务实战

5条curl命令搞定Redis同步:RedisSyncer创建、启动、停止与查询任务实战 5条curl命令搞定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 数据同步工具支持单实例与集群之间的数据同步和迁移。本文带你用 5 条 curl 命令走通 RedisSyncer 的任务创建、启动、查询、停止与删除全流程10 分钟上手。上图展示了 RedisSyncer 的核心架构replicator负责从源 Redis 拉取数据存量 RDB 增量命令transmission负责将数据写入目标 Redis用户则通过底部的Restful API也就是本文主角 curl 命令来管理同步任务。在分布式部署模式下RedisSyncer 还包含 portal任务调度、server执行同步任务和 etcd注册与健康上报三类组件支持多节点水平扩展。一、准备工作1分钟启动RedisSyncer服务在执行 curl 命令前先启动服务端。两种方式任选其一详见 docs/quickstart.md方式1jar 包启动mvn clean package -Ddockerfile.skip java -jar syncer-webapp/syncer-webapp.jar方式2Docker 启动docker run -idt -m 2G -p 8000:80 --name redissyncer redissyncer:v2.0.8服务默认监听8080端口Docker 示例映射为 8000。假设 RedisSyncer 部署在10.0.0.100:8080源 Redis 为192.168.0.10:6379目标 Redis 为192.168.1.10:6379。二、命令1创建同步任务creattask这是最核心的一条命令通过POST /api/v2/creattask描述从哪个 Redis 同步到哪个 Rediscurl -X POST \ http://10.0.0.100:8080/api/v2/creattask \ -H Content-Type: application/json \ -d { sourcePassword: xxxxxx, sourceRedisType: SINGLE, sourceRedisAddress: 192.168.0.10:6379, targetRedisAddress: 192.168.1.10:6379, targetRedisType: SINGLE, targetPassword: xxxxxx, targetRedisVersion: 4, taskName: firsttest }成功返回{ msg: Task created successfully, code: 2000, data: { taskids: [10F7B3A0E5344598BAA9F847ADBFF9D6] } } 记住返回的taskid它是任务唯一 ID后续启动、停止、删除都要用它。当源库为集群时任务会按集群节点数拆分成多个任务每个任务一个 id。常用可选参数速查字段示例说明tasktypeincrementonly任务类型stockonly仅存量 /incrementonly仅增量 /total存量增量默认dbMapper{1: 1}源→目标 db 映射关系未列出的 db 不同步filterTypeKEY_FILTER_ACCEPTkey/命令过滤类型支持正则autostarttrue创建后自动启动可省去第二条命令集群地址用;分割如192.168.1.10:16379;192.168.1.10:16380。完整的字段说明可参考 docs/3.3/createtask.md文件类任务AOF/RDB 文件同步则参考 docs/3.3/createfiletask.md。三、命令2启动同步任务starttask启动接口每次只支持单任务启动curl -X POST \ http://10.0.0.100:8080/api/v2/starttask \ -H Content-Type: application/json \ -d { taskid: 10F7B3A0E5344598BAA9F847ADBFF9D6, afresh: false }其中afresh控制断点续传设为false时从上次中断的 offset 继续前提是任务之前已进入增量同步阶段且 offset 已记录否则启动会失败。返回code: 2000即启动成功。四、命令3查询任务状态listtasks同步中随时可以查看任务进度支持按名称、ID、状态查询也支持分页# 按任务名查询 curl -X POST \ http://10.0.0.100:8080/api/v2/listtasks \ -H Content-Type: application/json \ -d { regulation: bynames, tasknames: [firsttest] }regulation取值all全部、bynames、byids、bystatus。分页查询用/api/v2/listtasksByPage追加currentPage与pageSize即可。常见任务状态含义状态含义CREATING/CREATED创建中 / 创建完成STARTING启动中RDBRUNING存量 RDB 数据同步中COMMANDRUNING增量命令实时同步中FINISH任务完成BROKEN任务异常五、命令4停止同步任务stoptask停止接口支持批量停止taskids传数组即可curl -X POST \ http://10.0.0.100:8080/api/v2/stoptask \ -H Content-Type: application/json \ -d { taskids: [10F7B3A0E5344598BAA9F847ADBFF9D6] }返回code: 2000表示停止成功。若任务已停止再次调用会提示请先停止处于运行状态的任务。六、命令5删除任务removetask清理不再需要的非运行态任务curl -X POST \ http://10.0.0.100:8080/api/v2/removetask \ -H Content-Type: application/json \ -d { taskids: [10F7B3A0E5344598BAA9F847ADBFF9D6] }⚠️ 运行中的任务不能直接删除必须先执行 stoptask 停止后再删除。七、可视化面板任务列表一目了然除了 curlRedisSyncer 还自带 Web 管理面板创建、启动、停止、删除任务都可以在界面上点选完成任务状态、同步进度一目了然八、实战避坑清单 主从源只填一个节点源端为主从架构时只填主节点地址填多个会导致数据同步两份。留足内存与带宽同步前确认源机器内存足够生成至少一个 RDB 文件建议 RedisSyncer 部署在独立空闲机器上。调大 slave 缓冲区注意client-output-buffer-limit的 slave 项buffer size 与超时时间要设置足够大防止 RDB 传输被断开。多观察日志迁移中和业务切换前反复查看日志位置~/log确认无异常并充分核对数据一致性。状态码含义2000成功、4007任务不存在或已在运行、4020不存在指定任务 id、400JSON 格式错误。以上 5 条 curl 命令覆盖了 RedisSyncer 任务管理的完整生命周期。更多 API 参数细节可查阅 docs/api.md典型场景案例可参考 docs/scenecases.md。【免费下载链接】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),仅供参考
返回列表