大数据技术之Maxwell基础知识
大数据技术之Maxwell基础知识
文章目录
- 大数据技术之Maxwell基础知识
- 0、写在前面
- 1、Maxwell 概述
- 1.1 Maxwell 定义
- 1.2 Maxwell 工作原理
- 1.2.1 MySQL 主从复制过程
- 1.2.2 Maxwell 的工作原理
- 1.2.3 MySQL 的 binlog
- 1.3 Maxwell与Cannal对比
- 2. Maxwell 使用
- 2.1 Maxwell 安装部署
- 2.1.1 安装地址
- 2.1.2 安装部署
- 2.1.3 MySQL 环境准备
- 2.1.4 初始化 Maxwell 元数据库
- 2.1.5 Maxwell 进程启动
0、写在前面
1.3.0版本开始不支持JDK8,本文是尚硅谷的教学文档,并加以个人学习记录
- Maxwell版本:
Maxwell1.2.9
- Zookeeper版本:
Zookeeper3.4.5
- Kafka版本:
Kafka2.4.1
- MySQL版本:
MySQL5.7
1、Maxwell 概述
1.1 Maxwell 定义
Maxwell 是由美国 Zendesk 开源,用 Java 编写的 MySQL 实时抓取软件。 实时读取 MySQL 二进制日志 Binlog,并生成JSON
格式的消息,作为生产者发送给 Kafka,Kinesis、 RabbitMQ、Redis、Google Cloud Pub/Sub、文件或其它平台的应用程序
。
官网地址:http://maxwells-daemon.io/
1.2 Maxwell 工作原理
1.2.1 MySQL 主从复制过程
-
Master 主库将改变记录,写到二进制日志(
binary log
)中 -
Slave 从库向 mysql master 发送
dump 协议
,将 master 主库的binary log events
拷贝到它的中继日志(relay log
); -
Slave 从库读取并重做中继日志中的事件,将改变的数据
同步
到自己的数据库。
1.2.2 Maxwell 的工作原理
Maxwell 的工作原理很简单,就是把自己
伪装成 MySQL 的一个 slave
,然后以 slave的身份假装从 MySQL(master)复制数据。
1.2.3 MySQL 的 binlog
(1)什么是 binlog
MySQL 的二进制日志可以说 MySQL 最重要的日志了,它记录了所有的 DDL 和DML(除了数据查询语句)语句
,以事件
形式记录,还包含语句所执行的消耗的时间
,MySQL 的二进制日志是事务安全型
的。
一般来说开启二进制日志大概会有 1%的性能损耗。二进制有两个最重要的使用场景:
-
其一:MySQL Replication 在 Master 端开启binlog,Master 把它的二进制日志传递给 slaves 来达到 master-slave
数据一致
的目的。 -
其二:自然就是
数据恢复
了,通过使用 mysqlbinlog 工具来使恢复数据。
二进制日志包括两类文件:二进制日志索引文件
(文件名后缀为.index
)用于记录所有的二进制文件,二进制日志文件
(文件名后缀为.00000*
)记录数据库所有的 DDL 和DML(除了数据查询语句)语句事件。
(2)binlog 的开启
-
找到 MySQL 配置文件的位置
-
Linux:
/etc/my.cnf
如果/etc 目录下没有,可以通过
locate my.cnf
查找位置
-
Windows: MySQL安装目录下的
\my.ini
文件-
在 mysql 的配置文件下,修改配置
-
在[mysqld] 区块,设置/添加
log-bin=mysql-bin
-
这个表示binlog 日志的前缀
是 mysql-bin,以后生成的日志文件就是 mysql-bin.000001
的文件后面的数字按顺序
生成,每次 mysql 重启或者到达单个文件大小的阈值时
,新生一个文件,按顺序编号。
(3)binlog 的分类设置
mysql的binlog 格式有三种,分别是 STATEMENT
,MIXED
,ROW
。
在配置文件中可以选择配置 binlog_format=statement|mixed|row
三种格式的区别:
- statement
语句级
,binlog 会记录每次一执行写操作的语句
。
相对 row 模式节省空间
,但是可能产生不一致性
,比如
update test set create_date=now();
如果用 binlog 日志进行恢复,由于执行时间不同可能产生的数据就不同。
优点: 节省空间
缺点: 有可能造成数据不一致。
- row
行级
, binlog 会记录每次操作后每行记录的变化
。
优点:保持数据的
绝对一致性
。因为不管 sql 是什么,引用了什么函数,他只记录执行后的效果。缺点:占用
较大空间
。
- mixed
混合
级别,statement 的升级版,一定程度上解决了 statement 模式因为一些情况而造成的数据不一致问题。
默认还是statement
,在某些情况下,譬如:
当函数中包含 UUID() 时;
包含 AUTO_INCREMENT 字段的表被更新时;
执行 INSERT DELAYED 语句时;
用 UDF 时;
会按照 ROW
的方式进行处理。
优点:节省空间,同时兼顾了一定的一致性。
缺点:还有些极个别情况依旧会造成不一致,另外 statement 和 mixed 对于需要对
三种方式,binlog 监控的情况都不方便。
综合上面对比,Maxwell 适合做监控分析,选择 row格式比较合适
1.3 Maxwell与Cannal对比
对比 | Canal | Maxwell |
---|---|---|
语言 | java | java |
数据格式 | 格式自由 | json |
采集数据模式 | 增量 | 全量/增量 |
数据落地 | 定制 | 支持 kafka 等多种平台 |
HA | 支持 | 支持 |
2. Maxwell 使用
2.1 Maxwell 安装部署
2.1.1 安装地址
(1) Maxwell 官网地址:http://maxwells-daemon.io/
(2) 文档查看地址:http://maxwells-daemon.io/quickstart/
2.1.2 安装部署
(1) 软件基础,读者需要提前安装好 kafka 和 MySQL,此文档不再赘述。
(2) 上传 maxwell-1.29.2.tar.gz 到/opt/software 下
(3) 解压 maxwell-1.29.2.tar.gz 的安装包到/opt/module 下
[whybigdata@node01 software]$ tar -zxvf maxwell-1.29.2.tar.gz - C /opt/module/
2.1.3 MySQL 环境准备
(1)修改 mysql 的配置文件,开启 MySQL
[whybigdata@node01 software]$ sudo vim /etc/my.cnf
在[mysqld]模块下添加以下内容
[mysqld] server_id=1
log-bin=mysql-bin binlog_format=row
#binlog-do-db=test_maxwell并重启 Mysql 服务
[whybigdata@node01 software]$ sudo systemctl restart mysqld登录 mysql 并查看是否修改完成
[whybigdata@node01 ~]$ mysql -uroot -p123456 mysql> show variables like '%binlog%';
查看下列属性
binlog_format | ROW
binlog-do-db=test_maxwell表示只监控test_maxwell这个库,不加这个参数表示监控所有库;
监控多个库(例如:test_maxwell、my_test),不能写成「binlog-do-db=test_maxwell,my_test」,必须写成:
binlog-do-db=test_maxwell
binlog-do-db=my_test
如果想监控上百个库,上述方法过于繁琐,可以直接设置不需要监控的库
binlog-ignore-db=test_maxwell_10000
(2)进入/var/lib/mysql
目录,查看 MySQL 生成的 binlog 文件
[whybigdata@node01 ~]$ cd /var/lib/mysql
[whybigdata@node01 mysql]$ sudo ls -l
总用量 188500
-rw-r-----. 1 mysql mysql 154 11 月 17 16:30 mysql-bin.000001
-rw-r-----. 1 mysql mysql 154 11 月 17 16:30 mysql-bin.index
注:MySQL 生成的 binlog 文件初始大小一定是
154
字节,然后前缀是 log-bin 参数配置的,后缀是默认从.000001,然后依次递增。除了 binlog 文件文件以外,MySQL 还会额外生产一个.index 索引文件用来记录当前使用的 binlog 文件。
2.1.4 初始化 Maxwell 元数据库
(1) 在 MySQL 中建立一个 maxwell 库用于存储 Maxwell 的元数据
[whybigdata@node01 module]$ mysql -uroot -p123456
mysql> CREATE DATABASE maxwell;
(2) 设置 mysql 用户密码安全级别
mysql> set global validate_password_length=4;
mysql> set global validate_password_policy=0;
此处,如果出现错误,请尝试以下方式:
install plugin validate_password soname 'validate_password.so';
(3) 分配一个账号可以操作该数据库
123456是指你自己设置的maxwell用户的密码
mysql> GRANT ALL ON maxwell.* TO 'maxwell'@'%' IDENTIFIED BY '123456'
(4)分配这个账号可以监控其他数据库的权限
mysql> GRANT SELECT ,REPLICATION SLAVE , REPLICATION CLIENT ON *.* TO maxwell@'%';
(5)刷新权限
mysql> flush privileges;
mysql库下的user表;
2.1.5 Maxwell 进程启动
Maxwell 进程启动方式有如下两种:
(1) 使用命令行参数启动 Maxwell 进程
[whybigdata@node01 maxwell-1.29.2]$ bin/maxwell --user='maxwell' --password='123456' --host='node01'producer=stdout
-
user 连接 mysql 的用户
-
password 连接 mysql 的用户的密码
-
host mysql 安装的主机名
-
producer 生产者模式(stdout:控制台 kafka:kafka 集群)
启动结果
监控实例:新增数据
(2)修改配置文件,定制化启动 Maxwell 进程
[whybigdata@node01 maxwell-1.29.2]$ cp config.properties.example config.properties
[whybigdata@node01 maxwell-1.29.2]$ vim config.properties
[whybigdata@node01 maxwell-1.29.2]$ bin/maxwell -- config ./config.properties
启动结果
监控update的数据
结束!
相关文章:
大数据技术之Maxwell基础知识
大数据技术之Maxwell基础知识 文章目录大数据技术之Maxwell基础知识0、写在前面1、Maxwell 概述1.1 Maxwell 定义1.2 Maxwell 工作原理1.2.1 MySQL 主从复制过程1.2.2 Maxwell 的工作原理1.2.3 MySQL 的 binlog1.3 Maxwell与Cannal对比2. Maxwell 使用2.1 Maxwell 安装部署2.1.…...
元数据管理实践数据血缘
元数据管理实践&数据血缘 什么是元数据?元数据MetaData狭义的解释是用来描述数据的数据,广义的来看,除了业务逻辑直接读写处理的那些业务数据,所有其它用来维持整个系统运转所需的信息/数据都可以叫作元数据。比如…...
SQL的优化【面试工作】
SQL的优化 最近看到群友在讨论这块的优化,感觉不管工作和面试,都是用上的,记录下吧!(不然又记不住) 优化点: 处理和优化复杂的 SQL 查询可以有以下几个方向: 1.优化查询语句本身 首先,可以优化 SQL 查询语句本身,尽量让其更加简洁、高效。 …...
Kotlin 40. Dependency Injection 依赖注入以及Hilt在Kotlin中的使用,系列3:Hilt 注释介绍及使用案例
一起来学Kotlin:概念:27. Dependency Injection 依赖注入以及Hilt在Kotlin中的使用,系列3:Hilt 注释介绍及使用案例 此系列博客中,我们将主要介绍: Dependency Injection(依赖注入)…...
1000亿数据、30W级qps如何架构?来一个天花板案例
1000亿级存储、30W级qps系统如何架构?来一个天花板案例 说在前面 在尼恩的(50)读者社群中,经常遇到一个 非常、非常高频的一个架构面试题,类似如下: 千万级数据,如何做系统架构?亿…...
人工智能及其应用(蔡自兴)期末复习
人工智能及其应用(蔡自兴)期末复习 相关资料: 人工智能期末复习 人工智能复习题 人工智能模拟卷 人工智能期末练习题 1 ⭐️绪论 人工智能:人工智能就是用人工的方法在机器(计算机)上实现的智能࿰…...
openpnp - configure - 矫正里程碑
文章目录openpnp - configure - 矫正里程碑概述备注ENDopenpnp - configure - 矫正里程碑 概述 进入矫正里程碑了 查找问题 现在第一个问题是X轴的齿隙矫正 根据提示, 将顶部相机移动到主基准点上, 选择容差(就选用默认的0.025), 开始矫正. 正好开机后, 使能了视觉原点归零. …...
JavaScript高级程序设计读书分享之8章——8.2创建对象
JavaScript高级程序设计(第4版)读书分享笔记记录 适用于刚入门前端的同志 创建Object的实例 let person new Object(); person.name "Nicholas"; person.age 29; person.job "Software Engineer"; person.sayName function() { console.log(this…...
关于Could not build wheels for opencv-python-headless, which is...报错的解决方案
在通过最新版pip在线安装package:opencv-python-headless的时候,会产生报错信息,主要为 ERROR: Failed building wheel for opencv-python-headless ERROR: Could not build wheels for opencv-python-headless, which is required to insta…...
【K3s】第1篇 K3s入门级介绍及架构详解
1、什么是 K3s? K3s 是一个轻量级的 Kubernetes 发行版,它针对边缘计算、物联网等场景进行了高度优化。K3s 有以下增强功能: 打包为单个二进制文件。使用基于 sqlite3 的轻量级存储后端作为默认存储机制。同时支持使用 etcd3、MySQL 和 PostgreSQL 作…...
Java学习--反射
1. 反射 1.1 反射的概述: **专业的解释(了解一下):**是在运行状态中,对于任意一个类,都能够知道这个类的所有属性和方法;对于任意一个对象,都能够调用它的任意属性和方法ÿ…...
应用和迭代(名词解释)
应用和迭代是什么意思 应用: ● 一个完整的前端应用,一般用应用脚手架创建,包含路由,页面,状态等 ● 一个应用对应一个代码仓库 ● 应用的分组(业务中心,数据中台等)只用于逻辑分类&…...
HTMLCollection 和 NodeList 区别
Node 和 Element DOM 是一棵树,所有节点都是 NodeNode 是 Element 的基类Element 是其他 HTML 元素的基类,如 HTMLDivElement HTMLCollection 和 NodeList HTMLCollection 是 Element 的集合NodeList 是 Node 的集合 <body><p id"p1&qu…...
fork()出来一个进程,这个进程的父进程是从哪来的?
基本概念fork() creates a new process by duplicating the calling process. The new process is referred to as the child process. The calling process is referred to as the parent process.fork()是一个系统调用,不是一个函数。详细信息可以,man…...
结构体内存对齐
结构体相信大家已经了解过了,现在我们深入讨论一个问题,计算结构体的大小 也是很热门的一个考点:结构体内存对齐 先看看下面结构体的大小 typedef struct Test {char a;char b;char c; }Test; 很容易看出答案为3,结构体的大小位…...
【C语言进阶】指针进阶
今日所做之事勿候明天,自我所做之事勿候他人。 --歌德 目录 指针进阶(更深层次的理解): 一.字符指针 二.指针数组 三.数组指针 1.数组指针的定义: 2.&数组名和数组名: 3.数组指针的使用: 四.数组参数,指针参数 1.一维数组传参:…...
java:Class的isPrimitive方法使用
java:Class的isPrimitive方法使用 1 前言 java中Class类的isPrimitive方法,用于检查类型是否为基本类型。java虚拟机创建了int、byte、short、long、float、double、boolean、char这8种基础信息,以及void,一共9种。为这9种类型时…...
TCP 握手过程 三次 四次
蛋老师视频 SYN 同步 ACK 确认 FIN 结束 核心机制是确定哪些请求或响应需要丢弃 SYN、ACK、FIN 通过 1/0 设置开启/关闭 开启SYN后,报文中会随机生成 Sequence序号 用于校验 (应用可能发起多个会话,可以区分) 服务器的同步序…...
windows 下 安裝mysql 5.7.41 (64位) 超简单方式
文章目录1. 安装包下载2.安装步骤3. 服务卸载方式4. 配上 my.ini 常用配置1. 安装包下载 注意,截至2023年2月23日,MySQL所有版本不提供ARM芯片架构的Windows版本(8.0.12开始支持Red Hat系统的ARM版本),所以ARM架构的Windows无法安装MySQL&am…...
二叉树——二叉树的最近公共祖先
二叉树的最近公共祖先 给定一个二叉树, 找到该树中两个指定节点的最近公共祖先。 百度百科中最近公共祖先的定义为:“对于有根树 T 的两个节点 p、q,最近公共祖先表示为一个节点 x,满足 x 是 p、q 的祖先且 x 的深度尽可能大(一…...
数据结构与算法基础-学习-14-线性表之串
一、串的定义由0-n个字符组成的有限序列。(n>0)二、串的相关术语1、子串串中任意个连续字符组成的子序列成为该串的子串。2、主串包含子串的串成为主串。3、字符位置字符在序列中的序号为该字符在串中的位置。4、子串位置子串第一个字符在主串中的位置…...
Mac 快捷键
目录 命令行快捷键 命令行快捷键 control d 命令行中代表发送EOF终止输入 control u 删除光标之前到行首的字符 control k 删除光标之前到行尾的字符(比较常用) control a 移动光标到行首(常用) control e 移动光标到行尾 control l 清屏,相当于clear命令 con…...
【微服务】-微服务环境搭建
目录 2.1 技术选型 2.2 模块设计 2.3 微服务调用 2.4 创建⽗⼯程 2.5 创建商品微服务 2.6 创建订单微服务 2.1 技术选型 持久层: SpingData Jpa 数据库: MySQL5.7 其他: SpringCloud Alibaba 技术栈 2.2 模块设计 --- shop-parent ⽗⼯程 --- shop-product-api 商品微服…...
IGKBoard(imx6ull)-ADC编程MQ-2烟雾传感器采样
文章目录1- ADC介绍2- MQ-2烟雾传感器介绍(1)工作原理(2)MQ-2应用电路3- MQ-2烟雾传感器硬件连接4- ADC驱动配置5- 编程查看当前浓度1- ADC介绍 ADC是Analog-to-Digital Converter的缩写,指模数转换器。真实世界的模拟…...
前端二面vue面试题总结
什么是 mixin ? Mixin 使我们能够为 Vue 组件编写可插拔和可重用的功能。如果希望在多个组件之间重用一组组件选项,例如生命周期 hook、 方法等,则可以将其编写为 mixin,并在组件中简单的引用它。然后将 mixin 的内容合并到组件中…...
时间API在更新,传奇已经谢幕,但技术永远不死
(Bill Joy(左一),Vinod Khosla(左二),Andy Bechtolsheim(右二),Scott McNealy(右一) ) CSDN 博文征集活动(和日期相关的代码和bug):点击这里 各位 “big guys”,这篇博文…...
SQL调优指南笔记22:Gathering Diagnostic Data with SQL Test Case Builder
本文为SQL Tuning Guide 第21章“Gathering Diagnostic Data with SQL Test Case Builder”的笔记。 SQL Test Case Builder 是一种工具,可自动收集在不同数据库实例中重现问题所需的信息。 SQL 测试用例是一组信息,使开发人员能够为遇到性能问题的特定…...
从0开始学python -43
Python3 正则表达式 正则表达式是一个特殊的字符序列,它能帮助你方便的检查一个字符串是否与某种模式匹配。 Python 自1.5版本起增加了re 模块,它提供 Perl 风格的正则表达式模式。 re 模块使 Python 语言拥有全部的正则表达式功能。 compile 函数根…...
Kafka基本原理
总述 简介 Kafka是最初由Linkedin公司开发,是一个分布式、支持分区的(partition)、多副本的(replica),基于zookeeper协调的分布式消息系统,它的最大的特性就是可以实时的处理大量数据以满足各…...
css3的重点内容
css3的重点内容 浮动 父级边框塌陷问题 浮动的清除 clear:left; //清除左侧浮动 clear:right; //清除右侧浮动 clear:both; //清除两侧浮动解决方案 增加父级元素的高度增加一个空的div,之后清除浮动通过overflow来进行相关元素的修剪给父类添加相应的伪类元素…...
专业网站推广服务咨询/吉林百度查关键词排名
匿名函数与> > expr 等同于{ return expr; }匿名函数的参照如下:([[Type] param1[, …]]) { codeBlock; };例子: (context) > HomePage(widget.isDark, themeChanger)上面的语句翻译过来就是: function_name(context) {return Ho…...
用新浪云做网站/百度竞价排名什么意思
小编典典将该文件放入资产中 。对于在Android Studio项目中创建的项目,您需要在主文件夹下创建资产文件夹。将该文件读取为:public String loadJSONFromAsset(Context context) {String json null;try {InputStream is context.getAssets().open("…...
公众号内容制作步骤/seo招聘网
如题 https://blog.csdn.net/weixin_44839084/article/details/102927857...
做h5的网站哪个好/外贸接单网站
Xcode插件管理工具Alcatraz Alcatraz1.简介 Alcatraz是一个能帮你管理Xcode插件丶模版及颜色配置的工具.它可以直接集成在Xcode的图形界面中,让你感觉就像在使用Xcode自带的功能一样. 2.安装和删除 使用如下的终端来安装Alcatraz: curl -fsSL https://raw.github.com/supermari…...
如何做网站服务器映射/bt磁力搜索
什么是WinRT? 首先WinRT是微软为了方便开发者编写Metro风格的程序而提供的一个开发平台。对于广大普通开发者而言,WinRT就是一堆Storage, Pickers, Controls,network,Media等组件的可供调用的API函数。开发者可以调用微软通过W…...
dedecms网站地图制作/最近国际新闻大事20条
理智优秀作文这是一个饱满充实的世界,也是一个充满危机的世界。玫瑰满园必然荆棘丛生。我们需要有激情,去创造。然而又需要我们理智的对待一切事物。“乱花渐欲迷人眼”,娱乐节目花样层出不穷,使观众们眼花缭乱。然而,…...