五分钟写出你的第一份轻量级数据同步配置:Transporter 数据同步工具完全指南
五分钟写出你的第一份轻量级数据同步配置:Transporter 数据同步工具完全指南
【免费下载链接】transporterSync data between persistence engines, like ETL only not stodgy项目地址: https://gitcode.com/gh_mirrors/tr/transporter
你有没有遇到过这种情况:MySQL 里订单状态刚更新,搜索索引里却还是几个小时前那条旧记录?手工刷一遍吧,数据量大、还得定时跑,一断就漏。Transporter 就是一个为解决这类问题而生的数据同步工具:单二进制、无需外部服务,用一份 JavaScript 配置把数据从一种存储搬到另一种,还能持续追增量。
单二进制、零外部服务的轻量级数据同步
传统批量同步方案往往要拉起一堆服务:调度器、中间存储、消息队列、转换服务,各占各的内存。Transporter 不要求这些——编译出来的一个可执行文件,就是全部。读取源、转换消息、写入目标,管道逻辑集中在 pipeline/ 与 commitlog 相关目录里。部署它,只需要一台机器和一个能跑二进制的目录。
一个真实任务:把 MySQL 数据增量同步到目标存储
🛠️ 下面以"MySQL 增量同步到目标存储"为主线,走一遍完整流程。
数据同步配置怎么写?运行transporter init mysql <目标数据源>,会生成一份 pipeline.js 基础配置。你把 MySQL 连接串填进源、目标端配置填进 sink,先用transporter test试跑:它只建立连接、不跑数据,适合先确认配置没写错;确认无误再transporter run正式跑。整个过程就是一份 JS 文件,没有额外的配置中心。
字段转换放在管道里做。源里的表名、字段名和目标对不上很正常。在 function/remap/ 这类内置函数里,pick 挑字段、rename 改名、remap 做表名与命名空间映射、opfilter 过滤操作类型——全部在 pipeline.js 里几行配置完成,不用为转换单独起服务。
实时捕获靠 tail。在源适配器里打开tail选项后,Transporter 会监听 binlog、WAL 这类变更流,INSERT、UPDATE、DELETE 逐条捕获。改一条记录,目标端马上跟着变,而不是等下一轮全量任务。
一致性靠 commit log 保障。配置里加上xlog_dir指向一个本地目录,每条消息会先落 commit log,目标端按 namespace 记录自己处理到了哪个 offset;进程中断或机器重启,从断点继续消费,而不是从头再来。xlog和offset两个子命令可以随时查看日志状态和各目标的消费进度。资源开销也因此很克制:消息流经 commit log 落盘而不是全部压在内存里,低配机器上也能稳定长期运行。
支持哪些数据源
📚 内置适配器都在 adaptor/ 目录下,每个适配器自带 README,说明它的配置项和能力:
- MongoDB / MySQL / PostgreSQL / RethinkDB:可作源,也可作目标
- Elasticsearch:作为写入目标
- RabbitMQ:发布/订阅场景的桥接
- file:读/写本地文件,方便拿静态数据试跑
需要留意:当前版本官方正式维护的是 MongoDB 与 PostgreSQL 适配器,其余处于维护状态,选型前建议先确认目标数据源的支持情况。
它和批量 ETL 的差异,以及适用边界
| 维度 | 批量 ETL 任务 | Transporter |
|---|---|---|
| 重启恢复 | 重新调度、全量重跑 | commit log 断点续传,从 offset 继续 |
| 增量变更 | 等下一轮批处理 | tail 监听变更流,实时跟随 |
| 配置方式 | 平台任务编排 | 一份 JS 文件,transporter run即生效 |
适合谁:想把业务库长期同步到搜索库、分析库或备份库的小团队;一台低配机器、一个二进制就能跑的轻量级数据同步场景;以及需要 MySQL 实时同步这类持续跟增量、而非一次性迁移的任务。
不适合谁:需要调度平台、可视化 DAG、多集群并行批处理的企业级 ETL 体系;涉及复杂多表关联、跨系统业务规则的大规模清洗——这类需求它帮不了大忙,硬上只会受罪。
扩展与社区
想接一个现成适配器之外的存储,只需按 adaptor/ 下的接口写一个能读、能写的适配器,参考现有实现改起来并不快——结构都很清晰。CONTRIBUTING.md 写明了环境搭建、提交规范与 PR 流程,修 bug 或贡献新适配器都可以直接参与。
一条命令开始
git clone https://gitcode.com/gh_mirrors/tr/transporter克隆下来后,从仓库里的 README.md 快速启动章节开始;想抄一份能跑的 pipeline.js,直接翻 integration_tests/ 里的现成示例。
【免费下载链接】transporterSync data between persistence engines, like ETL only not stodgy项目地址: https://gitcode.com/gh_mirrors/tr/transporter
创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考
