一款MySQL数据库实时增量同步工具,能够监听MySQL二进制日志(Binlog)的变动(附源码)

背景

作为一名CURD的程序员,少不了跟MySQL打交道,在同步数据的时候,MySQL的Binlog显得重中之重,所以处理Binlog的工具尤为重要。

其中阿里巴巴开源的canal 更是耳闻目睹,但是今天小编给大家介绍另外一款MySQL数据库实时增量同步工具:go-mysql-transfer

介绍

go-mysql-transfer是一款MySQL数据库实时增量同步工具。功能也比较简单,就是能够监听MySQL二进制日志(Binlog)的变动,将变更内容形成指定格式的消息,实时发送到接收端。从而在数据库和接收端之间形成一个高性能、低延迟的增量数据同步更新管道。

特性

  • 简单一键部署,并且不依赖其它组件,

  • 内置丰富的数据解析、消息生成规则、模板语法

  • 天然集成多种接收端,无需编写客户端,开箱即用

  • 支持Lua脚本扩展,可处理复杂逻辑

  • 集成Web Admin监控页面、支持监控告警、高可用集群部署

  • 支持全量数据初始化、数据同步失败重试

快速使用

官方提供了二进制安装包源码编译下载方式,我们选用二进制安装包下载

下载地址:https://github.com/wj596/go-mysql-transfer/releases

前置条件

我们先准备一个MySQL,并且修改对应配置

#Linux在my.cnf文件
#Windows在my.ini文件
log-bin=mysql-bin # 开启 binlog
binlog-format=ROW # 选择 ROW 模式
server_id=2 # 配置 MySQL replaction 需要定义,不要和 go-mysql-transfer 的 slave_id 重复

运行

  1. 修改app.yml

  2. Windows直接运行 go-mysql-transfer.exe

  3. Linux执行 nohup go-mysql-transfer &

监控

go-mysql-transfer支持两种监控模式,Prometheus和内置的Web Admin,我们开启相关配置

# web admin相关配置
enable_web_admin: true #是否启用web admin,默认false
web_admin_port: 8060 #web监控端口,默认8060

直接访问127.0.0.1:8060 可以看到监控界面

图片

img

图片

与同类工具比较

特色Canalmysql_streamgo-mysql-transfer
开发语言JavaPythonGolang
高可用支持支持支持
接收端编码定制Kafka等(MQ)Redis、MongoDB、Elasticsearch、RabbitMQ、Kafka、RocketMQ、HTTP API 后续支持更多
全量数据初始化不支持支持支持
数据格式编码定制Json(固定格式)Json(规则配置) 模板语法 Lua脚本

总结

总的来说go-mysql-transfer作为一款MySQL数据库实时增量同步工具,功能非常齐全,特别是天然集成多种接收端,给开发者省下了很多开发代码。

大家使用的时候多测师,看是否满足自己的需求。

最后在贴上地址:

官方文档:https://www.kancloud.cn/wj596/go-mysql-transfer/2064425

Github:https://github.com/wj596/go-mysql-transfer

  • 25
    点赞
  • 16
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值