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

Maxwell工作流程详解

要介绍maxwell的工作原理,首先需要讲一下mysql主从复制的原理

mysql主从复制原理:

在这里插入图片描述
如上图,左边是master主节点,右边是slave从节点

工作流程:
1.往主节点mysql的数据库中写入数据,产生数据变化,主节点的binlog二进制日志文件监控到数据变化,就会记录下数据的变更记录(注意这个过程是数据先写到数据库成功之后,然后才能被binlog日志记录)

2.slave从节点中含有一个线程(上图中未显示)在时刻监控主节点binlog日志的变化。当该线程监控到主节点的binlog日志发生了变化,从节点会开启两个线程,一个是I/O线程,一个是SQL线程

3.其中I/O线程会前往主节点的binlog日志寻找变更的日志记录,找到之后,会将变更的日志返回到I/O线程。之后I/O线程会将数据写入到从节点自己的一个临时的中继日志Relaylog(relaylog不是binlog)。

4.此时SQL线程发现relaylog发生了变化,SQL线程开始工作,relaylog将会对SQL线程replay一下(此处假设binlog中记录的就是sql语句,当然binlog有很多模式,不是只能放sql语句),把sql语句重播之后,就可以把数据写入从节点的mysql数据中。

5.假设这次读写完毕且后续没有数据变更,I/O线程和SQL线程将会进入睡眠状态,当从节点监控主节点binlog日志的线程监控到主节点的binlog发生了变化,I/O线程和SQL线程就会又开始重新开始工作

如此循环往复。。。

slave从节点之所以没有显示它自己的binlog日志,是因为还没有节点监控它,如果此时新增一个节点监控slave的变化,便可以给slave节点开一个binlog。


maxwell是怎么工作的呢,很简单,它会把自己伪装成一个mysql的slave,maxwell的工作原理其实就等于mysql主从复制的原理

当然maxwell内部工作和mysql的slave工作有一些细微的差异,感兴趣的可以接着往下看

maxwell也会有I/O线程读取主节点的binlog,然后写入一个类似于(但不是)relaylog的东西,然后将读取的数据也进行重播,但重播之后,转化的格式并非Mysql所需要的格式,而是json格式,并且转化成json后也不会往mysql里写,而是发送给kafka等。这就是Maxwell的工作原理。

http://www.lryc.cn/news/6128.html

相关文章:

  • 13- EM算法与GMM高斯混合 (聚类算法) (算法)
  • 【新】华为OD机试 - 二叉树层次遍历(Python)| 刷完获取OD招聘渠道
  • 工作记录------@Accessors(chain = true)引起的BUG,Excel导入时获取不到值
  • JavaEE-HTTP协议(二)
  • 代理的基本原理和多线程的基本原理
  • T38,数的递归
  • QT+ OpenGL 变换
  • 【算法】前缀和
  • 《Redis实战篇》七、Redis消息队列
  • android组件化
  • 华为OD机试真题Python实现【特异性双端队列】真题+解题思路+代码(20222023)
  • 24.架构能力
  • 前端原生 CSS 跑马灯效果,无限轮播(横竖版本,带渐变遮罩,简单实用)
  • 4.8 注解与自定义注解
  • webpack 的热更新是如何做到的?原理是什么?
  • 嵌入式ARM设计编程(一) 简单数据搬移
  • 【Selenium】十分钟手把手带你学会WebDriver API
  • 3DMAX高级弯曲插件使用教程
  • 前端面试题之性能优化大杂烩
  • SpringBoot+Vue实现养老智慧服务平台
  • tigervnc2023
  • 智能三子棋(人机大战)—— 你会是最终赢家吗?万字讲解让你实现与自己对弈
  • 【自制开发板】自制STM32F407开发板(含TFT 8080串口屏幕接口)
  • openvino yolov5/ssd 实时推流目标检测在html上显示
  • 基于FPGA的 SPI通信 设计(1)
  • 为什么西门子、美的等企业这样进行架构升级,看看改造效果就知道了
  • open3d点云配准函数registration_icp
  • HTML编码规范
  • PDF SDK for Linux 8.4.2 Crack
  • vb 模块和作用域的关系