多应用+插件架构,代码干净,二开方便,首家独创一键云编译技术,文档视频完善,免费商用码云13.8K 广告
go-mysql-transfer是一款MySQL数据库实时增量同步工具。 能够监听MySQL二进制日志(Binlog)的变动,将变更内容形成指定格式的消息,实时发送到接收端。从而在数据库和接收端之间形成一个高性能、低延迟的增量数据同步更新管道。 # 特性 1、简单,不依赖其它组件,一键部署 2、集成多种接收端,如:Redis、MongoDB、Elasticsearch、RocketMQ、Kafka、RabbitMQ、HTTP API等,无需编写客户端,开箱即用 3、内置丰富的数据解析、消息生成规则,支持模板语法 4、支持Lua脚本扩展,可处理复杂逻辑,如:数据的转换、清洗、打宽 5、集成Prometheus客户端,支持监控、告警 6、集成Web Admin监控页面 7、支持高可用集群部署 8、数据同步失败重试 9、支持全量数据初始化 # 与同类工具比较 <table> <thead> <tr> <th width="20%">特色</th> <th width="20%">Canal</th> <th width="20%">mysql_stream</th> <th width="40%">go-mysql-transfer</th> </tr> </thead> <tbody> <tr> <td>开发语言</td> <td>Java</td> <td>Python</td> <td>Golang</td> </tr> <tr> <td>高可用</td> <td>支持</td> <td>支持</td> <td>支持</td> </tr> <tr> <td>接收端</td> <td>编码定制</td> <td>Kafka等(MQ)</td> <td>Redis、MongoDB、Elasticsearch、RabbitMQ、Kafka、RocketMQ、HTTP API <br>后续支持更多</td> </tr> <tr> <td>全量数据初始化</td> <td>不支持</td> <td>支持</td> <td>支持</td> </tr> <tr> <td>数据格式</td> <td>编码定制</td> <td>Json(固定格式)</td> <td>Json(规则配置)<br>模板语法<br>Lua脚本</td> </tr> </tbody> </table> # 实现原理 1、go-mysql-transfer将自己伪装成MySQL的Slave, 2、向Master发送dump协议获取binlog,解析binlog并生成消息 3、将生成的消息实时、批量发送给接收端 如下图所示: ![](images/1.png) # 开源 gitee (速度更快) :[go-mysql-transfer](https://gitee.com/wj596/go-mysql-transfer) github:[go-mysql-transfer](https://github.com/wj596/go-mysql-transfer?_blank) 如果此工具对你有帮助,请在Star支持下;