Maxwell学习笔记

1 概述

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

    官网地址:http://maxwells-daemon.io/
    文档查看地址:http://maxwells-daemon.io/quickstart/

  • Maxwell的原理:了解Maxwell的原理,需要了解Mysql的主从复制过程。

    1. mysql的主从复制过程:Master 主库将改变记录,写到二进制日志(binary log)中,Slave 从库向 mysql master 发送 dump 协议,将 master 主库的 binary log events (binlog)拷贝到它的中继日志(relay log);Slave 从库读取并重做中继日志中的事件,将改变的数据同步到自己的数据库。

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

      一般来说开启二进制日志大概会有 1%的性能损耗。二进制有两个最重要的使用场景: 其一:MySQL Replication 在 Master 端开启 binlog,Master 把它的二进制日志传递给 slaves 来达到 master-slave 数据一致的目的。其二:自然就是数据恢复了,通过使用 mysqlbinlog 工具来使恢复数据。二进制日志包括两类文件:二进制日志索引文件(文件名后缀为.index)用于记录所有的二进制文件,二进制日志文件(文件名后缀为.00000*)记录数据库所有的 DDL 和 DML(除了数据查询语句)语句事件。

    3. mysql binlog 的格式有三种,分别是 statement,row,mixed。要使用maxwell做监控分析,使用row模式最合适,因为statement模式记录的是sql语句,可能导致数据的不一致;而mixed模式又记录sql语句又记录实际数据,在进行重播的时候需要进行判断,会导致性能下降。
      在这里插入图片描述

      在这里插入图片描述

      在这里插入图片描述

    4. maxwell的原理:把自己伪装成 MySQL 的一个 slave,然后以 slave的身份假装从 MySQL(master)复制数据。

  • maxwell的输出数据格式:其中xid是事务id,ts是时间戳。
    在这里插入图片描述

2 Maxwell使用

2.1 Maxwell安装

  1. 安装kafka、mysql

  2. 解压maxwell压缩包

  3. 修改 mysql 的配置文件,开启 MySQL Binlog 设置

    atguigu@hadoop102 software]$ sudo vim /etc/my.cnf1. 在[mysqld]模块下添加一下内容
    [mysqld]
    server_id=1
    log-bin=mysql-bin
    binlog_format=row
    #binlog-do-db=test_maxwell # 可以用于指定启用binlog的数据库2. 并重启 Mysql 服务
    [atguigu@hadoop102 software]$ sudo systemctl restart mysqld3. 登录 mysql 并查看是否修改完成
    [atguigu@hadoop102 ~]$ mysql -uroot -p123456
    mysql> show variables like '%binlog%';4. 查看下列属性
    binlog_format | ROW5. 进入/var/lib/mysql 目录,查看 MySQL 生成的 binlog 文件。注:MySQL 生成的 binlog 文件初始大小一定是 154 字节,然后前缀是 log-bin 参数配置的,后缀是默认从.000001,然后依次递增。除了 binlog 文件文件以外,MySQL 还会额外生产一个.index 索引文件用来记录当前使用的 binlog 文件。
    [atguigu@hadoop102 ~]$ cd /var/lib/mysql
    [atguigu@hadoop102 mysql]$ sudo ls -l
    总用量 188500
    -rw-r-----. 1 mysql mysql 154 1117 16:30 mysql-bin.000001
    -rw-r-----. 1 mysql mysql 19 1117 16:30 mysql-bin.index
    
  4. 在 MySQL 中建立一个 maxwell 库用于存储 Maxwell 的元数据

    # 创建数据库maxwell
    mysql> CREATE DATABASE maxwell;
    # 设置 mysql 用户密码安全级别,这一步可以省略,但是在设置账号密码的时候密码就不能太简单
    mysql> set global validate_password_length=4;
    mysql> set global validate_password_policy=0;
    # 分配一个账号maxwell可以操作该数据库,%表示maxwell用户可以在任何节点上访问maxwell数据库
    mysql> GRANT ALL ON maxwell.* TO 'maxwell'@'%' IDENTIFIED BY'123456';
    # 分配maxwell账号对所有数据库的数据表具有主从复制的权限
    mysql> GRANT SELECT ,REPLICATION SLAVE , REPLICATION CLIENT ON *.* TO maxwell@'%';
    # 刷新 mysql 表权限
    mysql> flush privileges;
    
  5. 修改maxwell配置文件名称

    cp config.properties.example config.properties
    
  6. 修改maxwell配置文件中的配置(这里以配置数据发送到kafka为例)

    # 配置maxwell数据发送的目的地,可选的配置有stdout|file|kafka|kinesis|pubsub|sqs|rabbitmq|redis
    producer=kafka
    # 配置目标kafka集群地址
    kafka.bootstrap.servers=hadoop102:9092,hadoop103:9092
    # 目标kafka topic,可静态配置,例如maxwell,也可以动态配置,例如%{database}_%{table},动态配置的话会为每一个数据库表创建一个kafka topic
    kafka_topic=maxwell# Mysql相关配置
    host=hadoop102
    user=maxwell
    password=maxwell
    jdbc_options=useSSL=false&serverTimezone=Asia/Shanghai
    

2.2 Maxwell使用

  • 由于前面配置maxwell的数据发送到kafka,因此要先确保kafka集群为启动状态

  • 启动maxwell的命令,当mysql数据发生变化之后,kafka中就会有相应的数据

    bin/maxwell --config config.properties --daemon
    
  • 停止maxwell的命令

    ps -ef | grep maxwell | grep -v grep maxwell | awk '{print $2}' | xargs kill -9
    
  • maxwell启停脚本

    #!/bin/bashMAXWELL_HOME=/opt/module/maxwellstatus_maxwell(){result=`ps -ef | grep com.zendesk.maxwell.Maxwell | grep -v grep | wc -l`
    }start_maxwell(){status_maxwellif [[ $? -lt 1]]; thenecho "启动Maxwell"$MAXWELL_HOME/bin/maxwell --config $MAXWELL_HOME/config.properties --daemonelseecho "Maxwell正在运行"fi
    }stop_maxwell(){status_maxwellif [[ $? -gt 0 ]]; thenecho "停上Maxwell"ps -ef | grep maxwell | grep -v grep maxwell | awk '{print $2}' | xargs kill -9elseecho "Maxwell未在运行"fi
    }case $1 instart )start_maxwell;;stop )stop_maxwell;;restart )	stop_maxwellstart_maxwell;;
    esac
    
  • maxwell的数据全量同步操作:可以把指定数据库的指定数据表的数据全部取出并输出到指定位置,注意输出的首条数据和最后一条数据是空数据,仅作为开始和结束的标志;每条数据的时间戳是启动maxwell-bootstrap的时间。

    bin/maxwell-bootstrap --database gmall --table user_info config.properties
    

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/199065.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

选择测试自动化工具的4个技巧

预计至2026年,全球软件测试自动化市场价值将超过499亿美元,这意味着市场上的自动化测试工具数量也将同步增长。在这样的情况下,企业该如何选择最适合自己的自动化测试工具呢? 什么是测试自动化工具 数字经济迫使几乎每个企业都创建…

InnoDB的锁

自增锁 自增锁是一种特殊的表级别锁(table-level lock),专门针对事务插入 AUTO_INCREMENT 类型的列。最简单的情况,如果一个事务正在往表中插入记录,所有其他事务的插入必须等待,以便第一个事务插入的行&a…

arcgis投影栅格不可用

1、使用【投影栅格】工具进行栅格数据投影转换时报错。 解决方法:如果使用的是arcgis10.5及以下的版本,则需要更换更高的版本,因为这个是软件问题,需要更换到arcgis10.6及以上版本,更高级别的版本已经修复了这个问题。…

优酷新国风动漫《师兄啊师兄 第二季》强势定档 看李长寿稳健归来!

看新国风,上优酷动漫!由优酷出品,玄机科技制作,改编自阅文集团旗下起点读书小说《我师兄实在太稳健了》(作者:言归正传)的修仙喜剧动画《师兄啊师兄》第二季《海神扬名篇》今日正式官宣定档&…

HCIP —— 重发布

目录 路由重发布背景: 路由重发布的作用: ​编辑 部署条件: 1.必须存在ASBR设备 2.需要关注种子度量值 重发布的规则 重发布的名词 重发布的方向性问题(单向/双向) 重发布的ASBR数量问题 单点---只存在一个AS…

在ubuntu安装lighttpd时的一些错误记录和开发中的一些思考

今天在ubuntu安装lighttpd时的一些错误记录和开发中的一些思考。 相关平台:ARMv7,需要交叉编译,适用于ARM平台,其它平台可参考 交叉编译lighttpd先安装pcre支持,安装pcre却不顺利。错误一:Makefile:1438: recipe for …

陀螺仪防抖术语

陀螺仪防抖术语 fov 视场角 drift 零偏   MotionFusion即运动传感器的融合补偿,对陀螺仪、加速度计等运动测量器件的数据 进行预处理,通过标定和补偿,为防抖提供校准后的陀螺仪数据 ratio 系数 gyro 陀螺仪 calibration 校准 标定 DIS&…

SpringBoot整合Logback

什么是Logback Logback是日志框架SLF4J的一个实现&#xff0c;它被设计用来替代log4j。 引入依赖 SpringBoot默认使用Logback&#xff0c;所以加入了spring-boot-starter-web依赖后&#xff0c;他会自动包含Logback相关依赖&#xff0c;无需额外添加<dependency><g…

实力出圈,开源网安连续4年入选中国网络安全企业100强

近日&#xff0c;安全牛第十一版《中国网络安全企业100强》正式发布。开源网安突出的综合实力、技术创新能力&#xff0c;以及前沿技术的落地应用成果&#xff0c;再次受到权威认可&#xff0c;从数百家安全厂商中脱颖而出&#xff0c;连续多年上榜百强榜单。 《中国网络安全企…

2023年个人工作总结怎么写?工作任务完成自动记录的待办软件

2023年已经接近尾声&#xff0c;不少人已经开始期待新的一年到来了。不过对于大多数职场人士来说&#xff0c;最近还有一项让人头疼的任务需要完成&#xff0c;这就是撰写2023年个人工作总结。 那么年度个人工作总结怎么写呢&#xff1f;其实很简单&#xff0c;年度工作总结一…

【软件安装】在vm上安装Centos操作系统

文章目录 下载iso镜像安装 下载iso镜像 centos下载地址&#xff1a;阿里巴巴centos下载地址 安装 基本按照下面的步骤走就可以了 新手一般建议典型就可以了&#xff0c;而且自定义也改不了什么东西&#xff0c;没太大必要 选择自己下载的iso镜像文件 用户名和密码 安装位置 指…

前端知识笔记(三十二)———TCP 连接建立

&#xff1a;TCP 三次握手过程是怎样的&#xff1f; 客户端和服务端都处于 CLOSE 状态&#xff0c;服务端主动监听某个端口&#xff0c;处于 LISTEN 状态 第一次握手&#xff1a;客户端带着序号和SYN为1&#xff0c;把第一个 SYN 报文发送给服务端&#xff0c;客户端处于 SYN-S…

webGL开发虚拟实验室技术方案

开发虚拟实验室涉及到模拟实际实验环境和过程&#xff0c;同时提供用户互动性和学习体验。以下是一个可能的技术方案&#xff0c;用于实现这样的虚拟实验室&#xff0c;希望对大家有所帮助。北京木奇移动技术有限公司&#xff0c;专业的软件外包开发公司&#xff0c;欢迎交流合…

pwgen 随机密码生成

yum install -y pwgen apt install -y pwgen pwgen -h 用法&#xff1a;pwgen [选项] [密码长度] [密码数量] pwgen 支持的选项&#xff1a; -c 或 --capitalize 在密码中至少包含一个大写字母。 -A 或 --no-capitalize 不在密码中包含大写字母。 -n 或 --numerals 在密码中至…

【EI会议征稿中】第五届人工智能与机电自动化国际学术会议(AIEA 2024)

第五届人工智能与机电自动化国际学术会议&#xff08;AIEA 2024&#xff09; 2024 5th International Conference on Artificial Intelligence and Electromechanical Automation 第五届人工智能与机电自动化国际学术会议&#xff08;AIEA 2024&#xff09;将于2024年3月8-10…

Python变成小细节之Pip包管理器的简单使用

引言 Python编程中&#xff0c;我们通常对于库是很重视的&#xff0c;因为我们每每要使用高级点的功能&#xff0c;都得引用一些库&#xff0c;那么管理这些库的包管理器&#xff0c;最常见的就是PIP&#xff0c;我们需要了解一下 基础知识 Python 是一种解释型、面向对象的…

极致体验云上无缝协作

探索SOLIDWORKS云上之旅 谁适合应用3DEXPERIENCE云平台? 迈向云策略的数字化转型企业、加速新品上市的企业创新部门、资源有限的小微及初创企业 什么是3DEXPERIENCE云平台? 3DEXPERIENCE(3DX)是一种业务与创新平台,可让所有组织整体实时了解业务活动和生态系统&#xff0c…

SOLIDWORKS 2024新功能之Simulation篇

SOLIDWORKS 2024 新功能 Simulation篇目录概述 • 自动保存模型文件 • 壳体的接合交互 • 收敛检查图解 • 去耦合混合自由体模式 • Direct Sparse 解算器已停用 • 增强型轴承接头 • 复制算例时排除网格和结果 • 导出模型形状数据 • 网格性能 • 性能增强功能 …

活动目录是什么?

企业在进行数字化转型时&#xff0c;也会面临日益增长的网络用户和复杂的身份管理需求。为了高效地管理用户身份、控制访问权限以及保护企业的数据安全&#xff0c;许多企业选择使用微软的Active Directory&#xff0c;即微软活动目录&#xff0c;来作为网络身份管理系统。 1、…

彼此的远方

那天两个人互相表白了心意&#xff0c;在那天那刻确定了彼此相爱&#xff0c;没有鲜花&#xff0c;没有礼物。 男孩的世界曾陷入黑暗&#xff0c;冷清而又孤寂&#xff0c;女孩带着光和热来了&#xff0c;后来&#xff0c;女孩成为了男孩的太阳。女孩以为男孩是远方的风…