东莞技术支持骏域网站建设专家,烟台网站建设哪家好,建站公司网站模板,移动营销做手机网站要介绍maxwell的工作原理#xff0c;首先需要讲一下mysql主从复制的原理
mysql主从复制原理#xff1a; 如上图#xff0c;左边是master主节点#xff0c;右边是slave从节点
工作流程#xff1a; 1.往主节点mysql的数据库中写入数据#xff0c;产生数据变化#xff0c…要介绍maxwell的工作原理首先需要讲一下mysql主从复制的原理
mysql主从复制原理 如上图左边是master主节点右边是slave从节点
工作流程 1.往主节点mysql的数据库中写入数据产生数据变化主节点的binlog二进制日志文件监控到数据变化就会记录下数据的变更记录注意这个过程是数据先写到数据库成功之后然后才能被binlog日志记录
2.slave从节点中含有一个线程上图中未显示在时刻监控主节点binlog日志的变化。当该线程监控到主节点的binlog日志发生了变化从节点会开启两个线程一个是I/O线程一个是SQL线程
3.其中I/O线程会前往主节点的binlog日志寻找变更的日志记录找到之后会将变更的日志返回到I/O线程。之后I/O线程会将数据写入到从节点自己的一个临时的中继日志Relaylogrelaylog不是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的slavemaxwell的工作原理其实就等于mysql主从复制的原理
当然maxwell内部工作和mysql的slave工作有一些细微的差异感兴趣的可以接着往下看
maxwell也会有I/O线程读取主节点的binlog然后写入一个类似于但不是relaylog的东西然后将读取的数据也进行重播但重播之后转化的格式并非Mysql所需要的格式而是json格式并且转化成json后也不会往mysql里写而是发送给kafka等。这就是Maxwell的工作原理。