锐单电子商城 , 一站式电子元器件采购平台!
  • 电话:400-990-0325

第一章 Maxwell 概述

时间:2023-11-02 21:07:02 maxwell超级电容攻丝

1.1 Maxwell 定义

Maxwell 是由美国 Zendesk 开源,用 Java 编写的 MySQL 实时抓取软件。 实时读取MySQL 二进制日志 Binlog,并生成 JSON 作为生产者发送格式消息 Kafka,Kinesis、RabbitMQ、Redis、Google Cloud Pub/Sub、文件或其他平台的应用程序。

官网地址:http://maxwells-daemon.io/

注意:如果你用JDK8,Maxwell需要用v1.30.0之前的版本(v1.29.2)
在这里插入图片描述

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: \my.ini

  • 在 mysql 在配置文件下,修改配置文件

    [mysqld] 设置/添加块 log-bin=mysql-bin

    这个表示 binlog 日志的前缀是 mysql-bin,未来生成的日志文件是 mysql-bin.文件后面的数字按顺序生成,每次 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 与 Canal 的对比

锐单商城拥有海量元器件数据手册IC替代型号,打造电子元器件IC百科大全!

相关文章