Maxwell的使用

1、Maxwell的概述

1.1 官网简介

​ This is Maxwell’s daemon, an application that reads MySQL binlogs and writes row updates as JSON to Kafka, Kinesis, or other streaming platforms. Maxwell has low operational overhead, requiring nothing but mysql and a place to write to. Its common use cases include ETL, cache building/expiring, metrics collection, search indexing and inter-service communication. Maxwell gives you some of the benefits of event sourcing without having to re-architect your entire platform. (官网简介)

官网地址:Maxwell’s Daemon (maxwells-daemon.io)

Maxwell 主要用于实时数据同步

1.2 运行原理

1.2.1 MySQL的主从复制

​ 当数据量和并发量特别高时,单个节点的MySQL就难以承受并发量。因此我们就需要对单个节点MySQL进行扩展,形成MySQL集群。MySQL集群中主节点为Master,从节点为slave。

​ 这里进行主从复制后,我们就可以将读和写进行分离,master主库用于写,slave从库用于读,有效解决高并发。并且进行数据的多个备份,保障了数据的安全。

相应细节:

① 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.3 Maxwell和Canal的对比

对比 Canal Maxwell
语言 java java
数据格式 格式自由 json
采集数据模式 增量 全量/增量
数据落地 定制 支持kafka等多种平台

2、Maxwell的使用

2.1 Maxwell下载安装

2.1.1 Maxwell下载

注意:1.30版本以后支持JDK11,不支持JDK1.8

这里我们下载1.29.2

2.1.2 安装部署

1)上传到Linux系统

2)解压到指定目录

[hadoop@hadoop101 software]$ tar -zxvf maxwell-1.29.2.tar.gz -C ../module/[hadoop@hadoop101 module]$ ll | grep max
drwxrwxr-x.  4 hadoop hadoop  200 Jan 28 11:42 maxwell-1.29.2

2.1.3 MySql环境准备

MySql需要开启binlog设置

(1)修改mysql的配置文件,开启MySQL Binlog设置

[hadoop@hadoop101 module]$ sudo vim /etc/my.cnf
[sudo] password for hadoop: # For advice on how to change settings please see
# http://dev.mysql.com/doc/refman/5.7/en/server-configuration-defaults.html[mysqld]
# 添加下面内容
server_id=1
log-bin=mysql-bin
binlog_format=row
#binlog-do-db=test_maxwell

重启MySQL

[hadoop@hadoop101 module]$ systemctl restart mysqld

登录MySQL,查看:

(2)进入/var/lib/mysql目录,查看MySQL生成的binlog文件

注:MySQL生成的binlog文件初始大小一定是154字节,然后前缀是log-bin参数配置的,后缀是默认从.000001,然后依次递增。除了binlog文件文件以外,MySQL还会额外生产一个.index索引文件用来记录当前使用的binlog文件。

2.1.4 初始化元数据库

(1)在MySQL中建立一个maxwell库用于存储Maxwell的元数据

mysql> CREATE DATABASE maxwell;

(2)设置mysql用户密码安全级别

mysql> set global validate_password_length=4;
mysql> set global validate_password_policy=0;

(3)分配账号操作该数据库

mysql> GRANT ALL ON maxwell.* TO 'maxwell'@'%' IDENTIFIED BY '123456';

(4)分配这个账号可以监控其他数据库的权限

mysql> GRANT SELECT ,REPLICATION SLAVE , REPLICATION CLIENT ON *.* TO maxwell@'%';

(5)刷新mysql权限

mysql> flush privileges;

2.1.5 启动Maxwell

方式一:使用命令行参数

[hadoop@hadoop101 maxwell-1.29.2]$ bin/maxwell \
> --user='maxwell' \
> --password='123456' \
> --host='localhost' \
> --producer=stdout
# --user 数据库的用户名
# --password 登录密码
# --host 数据库主机
# --producer 生产者模式:stdout:控制台   kafka:kafka集群
# 完整指令如下:
bin/maxwell --user='maxwell' --password='123456' --host='localhost' --producer=stdout

方式二:通过配置文件启动

[hadoop@hadoop101 maxwell-1.29.2]$ cp config.properties.example config.properties
[hadoop@hadoop101 maxwell-1.29.2]$ vim config.properties

启动maxwell

[hadoop@hadoop101 maxwell-1.29.2]$ bin/maxwell --config ./config.propertie
## --config 指定启动的配置文件

这里启动hive并做了插入操作,可以看出,数据已经监控到了。

2.2 常用案例

2.2.1 监控MySQL数据,并输出控制台

编写启动命令:

[hadoop@hadoop101 maxwell-1.29.2]$ bin/maxwell \
> --user='maxwell' \
> --password='123456' \
> --host='localhost' \
> --producer=stdout

向MySQL中插入数据:

mysql> create database testmaxwell;
Query OK, 1 row affected (0.00 sec)
mysql> use testmaxwell;
Database changed
mysql> create table emplyee(id int,name varchar(255));
Query OK, 0 rows affected (0.10 sec)
mysql> insert into emplyee values(1,'tom');
Query OK, 1 row affected (0.00 sec)mysql> insert into emplyee values(2,'jerry');
Query OK, 1 row affected (0.00 sec)mysql> insert into emplyee values(3,'tony');
Query OK, 1 row affected (0.00 sec)

可以看到Maxwell控制台:

相应数据以json格式发送到控制台来了。

2.2.2 监控MySQL数据到Kafka中

1)、启动kafka集群

kafka集群启动完成。

2)、创建kafka主题

[hadoop@hadoop102 kafka]$ bin/kafka-topics.sh --create --zookeeper hadoop101:2181 --replication-factor 2 --partitions 2 --topic maxwell
Created topic "maxwell".

3)、为方便展示,开始kafka消费者

[hadoop@hadoop102 kafka]$ bin/kafka-console-consumer.sh --bootstrap-server hadoop101:9092 --topic maxwell

4)、编写maxwell启动命令

[hadoop@hadoop101 maxwell-1.29.2]$ bin/maxwell \
> --user='maxwell' \
> --password='123456' \
> --host='hadoop101' \
> --producer=kafka \
> --kafka.bootstrap.servers=hadoop101:9092 \
> --kafka_topic=maxwell

我们向mysql的表中添加数据

kafka消费者控制台输出数据:

注:
​ ① 若需要指定监控某些表,可使用–filter参数,过滤表。Filtering - Maxwell’s Daemon (maxwells-daemon.io)

​ ② 对数据库进行初始全量导入数据:

​ 需要修改Maxwell的元数据,触发数据初始化机制,在mysql的maxwell库中bootstrap表中插入一条数据,写明需要全量数据的库名和表名,可在官网参考配置。

MaxWell的使用相关推荐

  1. [物理学与PDEs]第1章第7节 媒质中的 Maxwell 方程组 7.2 媒质交界面上的条件

    通过 Maxwell 方程组的积分形式易在交界面上各量应满足交界面条件: $$\beex \bea \sez{{\bf D}}\cdot{\bf n}=\omega_f,&\sex{\omeg ...

  2. MySQL 的 Binlog 日志处理工具(Canal/Maxwell/Databus/DTS)对比

    点击上方蓝色"方志朋",选择"设为星标" 回复"666"获取独家整理的学习资料! Canal 定位:基于数据库增量日志解析,提供增量数据订阅 ...

  3. android 6.0虚拟内存,Maxwell的统一虚拟内存只用在专业卡上,GTX 750 Ti或无缘

    拼 命 加 载 中 ... 在GeForce GTX 750 Ti/750显卡上,我们已经见识到了Maxwell架构在高效能上的威力,但Maxwell架构到现在还是个迷,NVIDIA还没有公布详细的架 ...

  4. UA OPTI501 电磁波 求解Maxwell方程组的波动方程方法

    UA OPTI501 电磁波 求解Maxwell方程组的波动方程方法 标量势满足的2阶PDE 矢量势满足的2阶PDE Laplace算子的含义 标量势与矢量势的平面波解 Maxwell方程组: ∇⋅D ...

  5. UA OPTI501 电磁波 求解麦克斯韦方程组的Fourier方法3 Coulomb Gauge下讨论Maxwell方程

    UA OPTI501 电磁波 求解麦克斯韦方程组的Fourier方法3 Coulomb Gauge下讨论Maxwell方程 Use the macroscopic equation with D-fi ...

  6. UA PHYS515A 电磁理论III 静磁学问题1 Maxwell方程与静磁学问题

    UA PHYS515A 电磁理论III 静磁学问题1 Maxwell方程与静磁学问题 静磁学的Maxwell方程 毕奥-萨伐尔定律 安培定律 静磁学的Maxwell方程 假设电场与电位移为0,B⃗\v ...

  7. [物理学与PDEs]第1章第3节 真空中的 Maxwell 方程组, Lorentz 力 3.1 真空中的 Maxwell 方程组...

    1.稍微修正以前局部使用的方程组可以得到真空中的 Maxwell 方程组: $$\beex \bea \Div {\bf E}&=\cfrac{\rho}{\ve_0},\\ \rot{\bf ...

  8. 二阶偏微分方程组 龙格库塔法_深度科普---电磁波(三):无激励下的真空中的Maxwell方程组的解...

    很久没有写过与自己专业相关的文章了,于是计划穿插进几篇有关电磁波的深度科普的文章.计划分为几个部分: 1. 真空中的 方程组 2. 材料中的 方程组和电磁场的边值条件 3. 无激励下的真空中的 方程组 ...

  9. 如何使用 Kafka、MongoDB 和 Maxwell’s Daemon 构建 SQL 数据库的审计系统

    点击上方"朱小厮的博客",选择"设为星标" 后台回复"书",获取后台回复"k8s",可领取k8s资料 本文要点 审计日志 ...

  10. 如何从几何角度上理解方程组只有一个解_深度科普---电磁波(三):无激励下的真空中的Maxwell方程组的解...

    很久没有写过与自己专业相关的文章了,于是计划穿插进几篇有关电磁波的深度科普的文章.计划分为几个部分: 1. 真空中的 方程组 2. 材料中的 方程组和电磁场的边值条件 3. 无激励下的真空中的 方程组 ...

最新文章

  1. Java 基础【12】 日期类型
  2. linux sys伪用户作用,【原创】Linux版 对sys用户进行审计的示例
  3. zookeeper+kafka集群安装之中的一个
  4. 【边缘检测】BDCN:Bi-Directional Cascade Network for Perceptual Edge Detection
  5. Unity 4 3 制作一个2D横版射击游戏 2
  6. 三星电子第二季芯片需求大增 但手机销售疲软
  7. matlab使用parpool加速蒙特卡洛仿真
  8. [面试问答] 面试常问的40个问题 附带经典答案!
  9. 常用RTCM3 5条常用报文介绍
  10. android 5 root super su,针对Supersu也root不了手机的root详细使用教程
  11. 【兴趣书签】科幻小说——《走出一日囚》
  12. houdni 联机渲染解算 hqueue 和deadline问题笔记
  13. python使用企业微信机器人发送测试报告
  14. 教大家一个锻炼声带闭合的方法
  15. vue实现购物车全选,总计等功能
  16. 国产骨传导耳机哪个牌子好、国产骨传导耳机排名
  17. 关于微服务和 Java 需要知道的 5 件事
  18. 哪里查看计算机最近打开的文档,W7电脑系统中如何查看最近打开过的文档项目...
  19. 认识Linux操作系统
  20. Fastboot 命令报错分析篇

热门文章

  1. iptv linux 安卓 盒子,基于嵌入式Linux的IPTV机顶盒设计
  2. 【Axure】做手机原型时,如何让界面在浏览器中居中?(已解决,有图例)
  3. CDH安装Spark2
  4. rdma-轮询常用cq函数。
  5. LINUX64位版本ECLIPSE下载
  6. 黑客零基础入门教程:「黑客攻防实战从入门到精通(第二版)」堪称黑客入门天花板
  7. unity中美术字体的制作
  8. NuScale Power以其小型模块化反应堆设计首次获得美国核监管委员会批准,从而创造历史
  9. DM7-3.sql文件导入达梦数据库
  10. ciscn_2019_c_1 1