mysql binlog 同步组件_GitHub - skymysky/go-mysql-transfer: MySQL Binlog 增量实时同步工具

68747470733a2f2f696d672e736869656c64732e696f2f62616467652f6c6963656e73652d417061636865253230322d3445423142412e737667

简介

go-mysql-transfer是使用Go语言实现的MySQL数据库实时增量同步工具。能够实时监听MySQL二进制日志(binlog)的变动,将变更内容形成指定格式的消息,发送到接收端。在数据库和接收端之间形成一个高性能、低延迟的增量数据(Binlog)同步管道。

特性

1、不依赖其它组件,一键部署

2、集成多种接收端,如:Redis、MongoDB、Elasticsearch、RabbitMQ、Kafka、RocketMQ,不需要再编写客户端,开箱即用

3、内置丰富的数据解析、消息生成规则;支持Lua脚本扩展,以处理更复杂的数据逻辑

4、集成Prometheus客户端,支持监控告警

5、支持高可用集群部署

6、数据同步失败重试

7、支持全量数据初始化同步

原理

1、将自己伪装为MySQL的Slave监听binlog,获取binlog的变更数据

2、根据规则或者lua脚本解析数据,生成指定格式的消息

3、将生成的消息批量发送给接收端

与同类工具比较

特色

Canal

mysql_stream

go-mysql-transfer

开发语言

Java

Python

Golang

HA

支持

支持

支持

接收端

编码定制

Kafka等

Redis、MongoDB、Elasticsearch、RabbitMQ、Kafka、RocketMQ

后续支持更多

数据初始化

不支持

支持

支持

数据格式

编码定制

json(固定)

规则 (固定)

lua脚本 (定制)

安装包

二进制安装包

直接下载安装包: 点击下载

源码编译

1、依赖Golang 1.14 及以上版本

2、设置' GO111MODULE=on '

3、拉取源码 ‘ go get -d github.com/wj596/go-mysql-transfer’

3、进入目录,执行 ‘ go build ’ 编译

全量数据初始化

go-mysql-transfer -stock

运行

开启MySQL的binlog

#Linux在my.cnf文件

#Windows在my.ini文件

log-bin=mysql-bin # 开启 binlog

binlog-format=ROW # 选择 ROW 模式

server_id=1 # 配置 MySQL replaction 需要定义,不要和 go-mysql-transfer 的 slave_id 重复

命令行运行

1、修改app.yml

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

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

使用说明

感谢

更新日志

v1.0.0 bate

9.17 初始化提交bate版本

v1.0.1 release

9.22 release

v1.0.2 release

添加dbOps(数据库操作)、httpOps(http操作)两个Lua模块

修复enum类型字段出现的乱码问题

redis接收端增加Sorted Set数据类型支持

修复了近来反馈的bug

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值