MaxWell实时监控Mysql并把数据写入到Kafka主题中

news2024/11/20 18:36:33

配置mysql

启用MySQL Binlog

        MySQL服务器的Binlog默认是未开启的,如需进行同步,需要先进行开启

修改MySQL配置文件/etc/my.cnf

sudo vim/etc/my.cof

增加如下配置

注:MySQL Binlog模式

Statement-based基于语句,Binlog会记录所有写操作的SQL语句,包括insert、update、delete等。

优点:节省空间

缺点:有可能造成数据不一致,例如insert语句中包含now()函数。

Row-based基于行,Binlog会记录每次写操作后被操作行记录的变化。

优点:保持数据的绝对一致性。

缺点:占用较大空间。

mixed混合模式,默认是Statement-based,如果SQL语句可能导致数据不一致,就自动切换到Row-based

Maxwell要求Binlog采用Row-based模式

重启MySQL服务

注意:配置完成后一定要重启mysql,不然监控不了

sudo systemctl restart mysqld

创建Maxwell所需数据库和用户

Maxwell需要在MySQL中存储其运行过程中的所需的一些数据,包括binlog同步的断点位置(Maxwell支持断点续传)等等,故需要在MySQL为Maxwell创建数据库及用户

创建数据库

CREATE DATABASE maxwell;

创建Maxwell用户并赋予其必要权限

CREATE USER 'maxwell'@'%' IDENTIFIED BY 'maxwell';

GRANT ALL ON maxwell.* TO 'maxwell'@'%';

GRANT SELECT, REPLICATION CLIENT, REPLICATION SLAVE ON *.* TO 'maxwell'@'%';

创建完成后会在mysql中显示这个库

配置maxwell

修改Maxwell配置文件名称

cd /opt/module/maxwell

cp config.properties.example config.PROPERTIES

修改Maxwell配置文件

Maxwell的使用

启动Kafka集群

        若Maxwell发送数据的目的地为Kafka集群,则需要先确保Kafka集群为启动状态

Maxwell启停

启动Maxwell

opt/module/maxwell/bin/maxwell --config /opt/module/maxwell/config.properties --daemon

停止Maxwell

ps -ef | grep com.zendesk.maxwell.Maxwell | grep -v grep | awk '{print $2}' | xargs kill -9

Maxwell启停脚本

赋予权限

chmod +x mxw.sh    

启动Maxwell    

mxw.sh start

停止Maxwell

mxw.sh stop

增量数据同步

启动zookeeper,kafka,maxwell。

启动Kafka消费者

kafka-console-consumer.sh --bootstrap-server hadoop102:9092 --topic topic_db

只要没有配置错,你的mysql中有变更数据,maxwell会实时监控并写入到kafka的主题中

历史数据全量同步

        现在已经实现了使用Maxwell实时增量同步MySQL变更数据的功能。但有时只有增量数据是不够的,我们可能需要使用到MySQL数据库中从历史至今的一个完整的数据集。这就需要我们在进行增量同步之前,先进行一次历史数据的全量同步。这样就能保证得到一个完整的数据集。

Maxwell-bootstrap

        Maxwell提供了bootstrap功能来进行历史数据的全量同步,命令如下

 /opt/module/maxwell/bin/maxwell-bootstrap --database 你的库名 --table 你的表名 --config /opt/module/maxwell/config.properties

bootstrap数据格式

采用bootstrap方式同步的输出数据格式如下:

{

    "database": "fooDB",

    "table": "barTable",

    "type": "bootstrap-start",

    "ts": 1450557744,

    "data": {}

}

{

    "database": "fooDB",

    "table": "barTable",

    "type": "bootstrap-insert",

    "ts": 1450557744,

    "data": {

        "txt": "hello"

    }

}

{

    "database": "fooDB",

    "table": "barTable",

    "type": "bootstrap-insert",

    "ts": 1450557744,

    "data": {

        "txt": "bootstrap!"

    }

}

{

    "database": "fooDB",

    "table": "barTable",

    "type": "bootstrap-complete",

    "ts": 1450557744,

    "data": {}

}

注意事项:

(1)第一条type为bootstrap-start和最后一条type为bootstrap-complete的数据,是bootstrap开始和结束的标志,不包含数据,中间的type为bootstrap-insert的数据才包含数据。

(2)一次bootstrap输出的所有记录的ts都相同,为bootstrap开始的时间

全量同步脚本

在命令行使用全量同步有点麻烦,我们可以写一个脚本。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/1838013.html

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

相关文章

定制化物联网设备:开启智能生活新篇章

随着科技的进步,物联网(IoT)已成为我们日常生活和工作中不可或缺的一部分。从智能家居到工业自动化,物联网设备以其独特的功能和特性,极大地提高了我们的生活质量和工作效率。然而,在众多的物联网设备中&am…

【深度解析】1688货源拿货价比拼多多贵?为何商家仍选1688

对电商卖家来说,首先需要解决的问题就是货源。 虽然知道1688是个大型综合性的货源平台,但很多卖家还是觉得1688上面的货源很贵,甚至在平台严查无货源的背景下,还是坚持从1688拿货。那么为什么有些拼多多的商品会比1688还便宜呢&a…

基于大型语言模型的全双工语音对话方案

摘要解读 我们提出了一种能够以全双工方式运行的生成性对话系统,实现了无缝互动。该系统基于一个精心调整的大型语言模型(LLM),使其能够感知模块、运动功能模块以及一个具有两种状态(称为神经有限状态机,n…

Linux系统编程——进程信号

目录 一,信号预备 1.1 生活中的信号 1.2 技术应用中的信号 1.3 signal函数捕捉信号 1.3 信号的发送与记录 1.4 信号的常见处理方式 二,信号的产生 2.1 核心转储 2.1.1 环境配置 2.1.2 利用core文件进行调试 2.1.3 core dump标志 2.2 通过系统…

【Python机器学习实战】 | 基于空气质量监测数据,采用多层神经网络预测PM2.5浓度

🎩 欢迎来到技术探索的奇幻世界👨‍💻 📜 个人主页:一伦明悦-CSDN博客 ✍🏻 作者简介: C软件开发、Python机器学习爱好者 🗣️ 互动与支持:💬评论 &…

【漏洞复现】海康威视 综合安防管理平台软件 center_api_files 任意文件上传漏洞

免责声明: 本文内容旨在提供有关特定漏洞或安全漏洞的信息,以帮助用户更好地了解可能存在的风险。公布此类信息的目的在于促进网络安全意识和技术进步,并非出于任何恶意目的。阅读者应该明白,在利用本文提到的漏洞信息或进行相关测…

Navicat 重装 查找 保存的查询sql文件

背景:Navicat 一个收费的软件,存在的最大缺点就是收费,所以我们为了优化它会遇到卸载重装这些复杂的过程,但是我们保存的查询sql会跟随卸载Navicat而删除,为了节省时间省去不必要的麻烦,我们可以查到我们保…

YOLOv10改进 | 注意力篇 | YOLOv10引入HAttention(HAT)注意力

1. HAT介绍 1.1 摘要:基于 Transformer 的方法在低级视觉任务(例如图像超分辨率)中表现出了令人印象深刻的性能。 然而,我们发现这些网络通过归因分析只能利用有限的输入信息空间范围。 这意味着 Transformer 的潜力在现有网络中仍未得到充分发挥。 为了激活更多的输入像素…

通过阿里云OOS定时升级Redis实例临时带宽

功能背景 在数据驱动的现代业务环境中,Redis以其卓越的性能和灵活性,已成为众多企业关键基础设施的重要组成部分。Redis广泛应用于处理缓存、会话管理、消息队列等多种数据密集型和响应敏感型的场景,对业务连续性和用户体验贡献极大。然而&a…

从入门到实战,一篇学会TS,保姆式教程

本文知识图谱分基础、进阶和实战三个部分,分别如下: image.png image.png image.png 这三份知识图谱里罗列的知识看似很多,实际上除了进阶部分的泛型、高级类型(二)和实战部分需要稍微费点脑细胞外,其他…

AlmaLinux 更换CN镜像地址

官方镜像列表 官方列表&#xff1a;https://mirrors.almalinux.org/CN 开头的站点&#xff0c;不同区域查询即可 一键更改镜像地址脚本 以下是更改从默认更改到阿里云地址 cat <<EOF>>/AlmaLinux_Update_repo.sh #!/bin/bash # -*- coding: utf-8 -*- # Author:…

上位机图像处理和嵌入式模块部署(h750 mcu和usb虚拟串口)

【 声明&#xff1a;版权所有&#xff0c;欢迎转载&#xff0c;请勿用于商业用途。 联系信箱&#xff1a;feixiaoxing 163.com】 对于mcu usb而言&#xff0c;大部分情况下&#xff0c;它和上位机之间的关系都是device的关系。一般usb&#xff0c;可以分成host和device。如果mc…

windows如何运行wgcloud-agent-release

只需要右击wgcloud-agent-release.exe&#xff0c;用管理员身份&#xff0c;启动就好啦 你也可以双击regAgentService.bat&#xff0c;将agent注册为系统服务&#xff0c;然后在系统服务里面启动wgcloud-agent-release服务&#xff0c;这样可以隐藏运行窗口&#xff0c;也可以…

Vue59-全局事件总线:任意组件间通信

一、原理图 只是总结出的经验&#xff0c;不是新的API&#xff01; 二、x的要求&#xff1a; 1、保证x被所有组件看见&#xff1b; 2、x可以调用的到$on&#xff0c;才能绑定事件&#xff0c;还能调用到&#xff1a;$of&#xff0c; $emit&#xff1b; 三、x的创建&#xff…

linux系统定时任务执行脚本中断,而手动运行正常

1.问题排查 linux会给对的crontab执行者 返回信息。而这个返回的信息就是通过邮件发给执行者的&#xff0c;通过邮件可以查看你的定时任务 然后发现是在定时任务中找不到对应的命令 2. 定时任务用的什么环境 crontab默认的环境变量并没有一个固定的文件来直接定义&#xf…

Hype 4(html5工具) mac版下载-Hype 4 for mac软件最新版下载附加详细安装步骤

用户量向我们证明了矢量形状&#xff0c;矢量是使用矢量工具绘制的形状&#xff0c;包括直线&#xff0c;曲线和复杂形状。有目共睹的是Hype是一款强大的Mac OS平台 HTML5 创作工具&#xff0c;它能够在网页上做出赏心悦目的动画片效果&#xff0c;创建丰富的网页交互动画片&am…

SpringBoot的入门案例

1、创建一个Maven工程 2、点击设置自动导入jar包 3、导入spring boot需要的依赖 打开sping boot的文档 导入依赖的pom.xml配置内容 4、创建一个spring boot的执行入口程序 5、写controller&#xff0c;service&#xff0c;dao的页面逻辑代码 6、测试&#xff0c;运行工程&#…

【Hive安装】— “schematool -initSchema -dbType mysql -verbose” 报错!!!

项目场景&#xff1a;Hive 元数据配置到 MySQL 执行 “schematool -initSchema -dbType mysql -verbose” 命令 问题描述 报错&#xff1a;org.apache.hadoop.hive.metastore.HiveMetaException: Schema initialization FAILED! Metastore state would be inconsistent !! 原因…

掌握市场脉动,Anzo Capital深度解析随机指标的超买超卖秘密

随机指标&#xff0c;作为市场分析的利器&#xff0c;主要用于判断资产价格的相对位置&#xff0c;是揭示市场超买与超卖状态的关键工具&#xff0c;也是大多数交易平台的标准配置。它以独特的视角&#xff0c;帮助交易者捕捉市场的微妙变化。下面跟随Anzo Capital视角&#xf…

内置类型不够用?试试Python内置类型子类化!

目录 1、经典继承法:直接子类化内置类型 🧬 1.1 了解Python内置类型 1.2 实现子类化的基础步骤 步骤1:定义子类 步骤2:添加自定义行为 步骤3:使用子类 1.3 实战:子类化列表list示例 1.4 优化:重写魔法方法实现自定义行为 2、高级技巧:元类介入定制 🪐 2.1 …