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

news2025/1/11 14:48:09

背景

作为一名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.coloradmin.cn/o/2065028.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

【C++11】常用新语法②(类的新功能 || 可变参数模板 || lambda表达式 || 包装器)

🔥个人主页: Forcible Bug Maker 🔥专栏: C 目录 🌈前言🔥类的新功能新增默认成员函数强制生成默认函数的关键字default禁止生成默认函数的关键字delete 🔥可变参数模板递归函数方式展开参数包…

论文翻译:Benchmarking Large Language Models in Retrieval-Augmented Generation

https://ojs.aaai.org/index.php/AAAI/article/view/29728 检索增强型生成中的大型语言模型基准测试 文章目录 检索增强型生成中的大型语言模型基准测试摘要1 引言2 相关工作3 检索增强型生成基准RAG所需能力数据构建评估指标 4实验设置噪声鲁棒性结果负面拒绝测试平台结果信息…

算法5:位运算

文章目录 小试牛刀进入正题 没写代码的题,其链接点开都是有代码的。开始前请思考下图: 小试牛刀 位1的个数 class Solution { public:int hammingWeight(int n) {int res 0;while (n) {n & n - 1;res;}return res;} };比特位计数 class Solution…

计算机毕业设计选题推荐-猫眼电影数据可视化分析-Python爬虫-k-means算法

✨作者主页:IT毕设梦工厂✨ 个人简介:曾从事计算机专业培训教学,擅长Java、Python、微信小程序、Golang、安卓Android等项目实战。接项目定制开发、代码讲解、答辩教学、文档编写、降重等。 ☑文末获取源码☑ 精彩专栏推荐⬇⬇⬇ Java项目 Py…

进程和文件痕迹排查——LINUX

目录 介绍步骤 介绍 进程(Process)是计算机中的程序关于某数据集合上的一次运行活动,是系统进行资源分配和调度的基本单位,是操作系统结构的基础。 在早期面向进程设计的计算机结构中,进程是程序的基本执行实体&…

fastadmin 安装

环境要求,大家可以参考官方文档的,我这里使用的是phpstudy,很多已经集成了。 注意一点,PHP 版本:PHP 7.4 。 第二步:下载 下载地址:https://www.fastadmin.net/download.html 进入下载地址后…

IDEA:Terminal找不到npm

Terminal的命令失效通过修改cmd.exe的方式还是不生效的话,考虑是windwos11 默认idea不是通过管理员启动的,如下图修改就可以了。

前端vue 3中使用 顶象 vue3 版本

顶象 验证 的插件 不知道大家使用过没有 顶象-业务安全引领者&#xff0c;让数字世界无风险 可以防止 机器人刷接口 等 可以在任何 加密操作中使用 下面我直接 贴代码 解释 <script src"https://cdn.dingxiang-inc.com/ctu-group/captcha-ui/v5/index.js" cro…

第12章 网络 (2)

目录 12.5 网络命名空间 12.6 套接字缓冲区 12.6.1 使用 sk_buff 管理数据 12.6.2 管理套接字缓冲区数据 本专栏文章将有70篇左右&#xff0c;欢迎关注&#xff0c;查看后续文章。 12.5 网络命名空间 一个网卡可能只在某个特定命名空间可见。 struct net&#xff1a; 表…

C语言贪吃蛇之BUG满天飞

C语言贪吃蛇之BUG满天飞 今天无意间翻到了大一用C语言写的贪吃蛇&#xff0c;竟然还标注着BUG满天飞&#xff0c;留存一下做个纪念&#xff0c;可能以后就找不到了 /* 此程序 --> 贪吃蛇3.0 Sur_流沐 当前版本&#xff1a; Bug满天飞 */ #include<stdio.h> #includ…

Linux C、C++编程之线程同步

【图书推荐】《Linux C与C一线开发实践&#xff08;第2版&#xff09;》_linux c与c一线开发实践pdf-CSDN博客《Linux C与C一线开发实践&#xff08;第2版&#xff09;&#xff08;Linux技术丛书&#xff09;》(朱文伟&#xff0c;李建英)【摘要 书评 试读】- 京东图书 (jd.com…

qt处理表格,Qtxlsx库文件的安装以及导入

qt想要处理excel表格的&#xff0c;这个过程中避免不了使用Qtxlsx这个库文件。这几天花了几天时间&#xff0c;终于本地调通了。记录一下。 关于Qtxlsx的使用&#xff0c;大致分为2中方法。 方法一&#xff1a;直接下载对应的xlsx文件&#xff0c;然后在.pro文件中 这种方法是…

使用Java往Geoserver发布tif图层和shp图层

1. Maven依赖 栅格文件对应Tif文件 (即: 栅格就是tif) 矢量文件对应shp文件(即: 矢量就是shp) 注: 有的依赖可能在中央仓库及一些镜像仓库找不到需要手动指定仓库, 在依赖最下方 <!-- 中文转拼音工具类 --><dependency><groupId>com.belerweb</groupId&g…

指针的学习和理解

初级 1、指针的概念 在64位操作系统中&#xff0c;不管什么类型的指针都占8个字节 int a1; int* p&a;//p就是一个整型的指针&#xff0c;保存了a的地址2、指针和变量 int* p&a;* p100; // 等价于a100p //p&a*有两种定义&#xff1a; 定义的时候&#xff08;前…

【工具类】Java优雅的将XML转为JSON格式、XML转JSON

Java优雅的将XML转为JSON格式、XML转JSON 1. 导入依赖1.1 Maven使用1.2 Gradle使用 2. 代码编写3.运行示例 1. 导入依赖 1.1 Maven使用 <dependency><groupId>org.dom4j</groupId><artifactId>dom4j</artifactId><version>2.1.3</vers…

TCP连接过程

文章目录 TCP连接过程 附录TCP报文中关键术语字段 后面再完整出理论、出实战、出总结 TCP连接过程 三次握手&#xff08;Three-Way Handshake&#xff09;过程。 TCP抓包结果分析&#xff1a; step1&#xff1a;Client1客户端--->Server1服务器发送SYN&#xff08;同步…

【C++二分查找 前缀和】1658. 将 x 减到 0 的最小操作数

本文涉及的基础知识点 C二分查找 C算法&#xff1a;前缀和、前缀乘积、前缀异或的原理、源码及测试用例 包括课程视频 LeetCode1658. 将 x 减到 0 的最小操作数 给你一个整数数组 nums 和一个整数 x 。每一次操作时&#xff0c;你应当移除数组 nums 最左边或最右边的元素&am…

MambaCSR: 使用SSM的双交错扫描压缩图像超分辨率

MambaCSR: Dual-Interleaved Scanning for Compressed Image Super-Resolution With SSMs 2408.11758 (arxiv.org) GitHub - renyulin-f/MambaCSR: The code source of MambaCSR 摘要 本文提出了MambaCSR&#xff0c;这是一个基于Mamba的简单但有效的框架&#xff0c;用于解决…

ffmpeg读取时长、读取视频格式

ffmpeg读取时长、读取视频格式 ffmpeg读取时长ffmpeg读取视频格式 ffmpeg读取时长 命令命令介绍具体用法ffmpeg -i查看视频时长ffmpeg -i 视频链接 or 视频路径 2>&1 | grep Duration ffmpeg读取视频格式 命令命令介绍具体用法ffmpeg -i查看视频时长ffmpeg -i 视频链接…

集合及数据结构第八节(下)———— 队列(Queue)、队列的模拟实现和练习

系列文章目录 集合及数据结构第八节&#xff08;下&#xff09;———— 队列(Queue)、队列的模拟实现和练习 队列(Queue)、队列的模拟实现和练习 队列的概念队列的使用队列模拟实现循环队列双端队列练习题 文章目录 系列文章目录集合及数据结构第八节&#xff08;下&#x…