当前位置: 首页 > news >正文

一款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


http://www.mrgr.cn/news/12360.html

相关文章:

  • 图片去噪及边缘检测
  • 8月27日笔记
  • ubuntu64位配置兼容32位程序手册
  • 基于STM32开发的智能家居语音控制系统
  • 创建索引对象pandas.Index()
  • SpringBoot调用通义千问
  • 谷歌浏览器与edge哪个好用
  • 天宝TBCTrimble Business Center中文版本下载安装使用介绍
  • Vue -- 总结 01
  • 电机foc学习渠道已开放,欢迎各位加入
  • JavaScript:js;知识回顾;笔记分享
  • WPF ToolkitMVVM IOC IServiceConllection
  • 内存函数memcpy和memmove
  • 基于SSM的垃圾分类管理系统的设计与实现 (含源码+sql+视频导入教程+论文)
  • JSP 常用指令精简介绍
  • C++基础知识(三)
  • 第一次运行Neo4J
  • 力扣455-分发饼干(java题解)
  • 深度学习100问8-什么是PTB语料库
  • 标准UEFI Shell命令