资讯详情

第一章 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 工作原理很简单,就是

1.2.3 MySQL 的 binlog

MySQL 的二进制日志可以说 MySQL 最重要的日志记录了所有的日志 DDL 和 DML(数据查询语句除外)语句以事件形式记录,还包括语句执行所消耗的时间,MySQL 二进制日志是的。

一般来说,打开二进制日志可能会 。二进制有两个最重要的使用场景:

  • 其一:MySQL Replication 在 Master 端开启 binlog,Master 将其二进制日志传递给 slaves 来达到 的目的。
  • 二是自然通过使用 mysqlbinlog 恢复数据的工具。

二进制日志包括两种文件:二进制日志索引文件(文件名后缀为.index)用于记录所有二进制文件和二进制日志文件(文件名后缀为.00000*)记录所有数据库 DDL 和 DML(数据查询语句除外)语句事件。

  • 找到 MySQL 配置文件的位置

  • Linux: /etc/my.cnf

    如果/etc 没有目录,可以通过 locate my.cnf 查找位置

  • Windows: \my.ini

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

    [mysqld] 设置/添加块

    这个表示 binlog ,未来生成的日志文件是 mysql-bin.文件后面的数字按顺序生成,每次 mysql 重新启动或达到单个文件大小的阈值时,按顺序编号新文件。

mysql binlog 有三种格式,即

配置文件可以选择 binlog_format= statement|mixed|row

三种格式的区别:

  • 语句级,binlog 每次执行写作操作都会记录语句。

    相对 row 模式,但是,比如update test set create_date=now(); 如果用 binlog 由于执行时间不同,日志恢复可能产生的数据也不同。

    优点: 节省空间

    缺点: 数据导致数据不一致。

  • 行级, binlog 记录每次操作后每行记录的变化。

    优点:保持数据的绝对一致性。因为无论如何 sql 他只记录执行后的效果,引用了什么函数。

    缺点:占用大空间。

  • 混合级别,,在一定程度上解决了 statement 由于某些情况,模模型数据不一致。

    默认还是 statement,例如:

    包含在函数中 UUID() 时; 包含 AUTO_INCREMENT 更新字段表; 执行 INSERT DELAYED 语句时; 用 UDF 时;

    会按照 ROW 处理方法

    优点:节省空间,兼顾一定的一致性。

    缺点:还有一些,另外 statement 和 mixed 对于需要对binlog 监控不方便。

1.3 Maxwell 与 Canal 的对比

标签: maxwell超级电容攻丝

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

锐单商城 - 一站式电子元器件采购平台