转自:https://blog.csdn.net/qq_30921461/article/details/78320750

http://kafka.apache.org/quickstart

http://maxwells-daemon.io/quickstart/

文档主题:

如何使用Maxwell实时监听Mysql的binlog日志,并且把解析的json格式数据发送到kafka窗口

具体步骤

一:在linux环境下安装部署好mysql

1 开启binlog

sudo vi /etc/my.cnf

2 mysql的binlog格式有3种,为了把binlog解析成json数据格式,要设置binlog的格式为row(binlog有三种格式:Statement、Row以及Mixed)

server-id=1

log-bin=master(这一步开启binlog)

binlog_format=row

3重启msyql服务

sudo service mysqld restart

4查看是否已经开启binlog

Mysql>show variables like '%log_bin%';

此时,可以在目录/var/lib/mysql下看到生成了相应的binlog监听日志文件,如图,master.000001文件,每次重启msyql服务,就会生成一个新的监听文件

第二大步骤:配置Maxwell相关的部署工作

1下载Maxwell

官网

http://maxwells-daemon.io/

组件下载链接

https://github.com/zendesk/maxwell/releases/download/v1.10.7/maxwell-1.10.7.tar.gz

2 安装Maxwell

tar-zxf maxwell-1.10.6.tar.gz  -C    ../modules/

3给mysql授权

mysql> GRANT ALL on maxwell.* to'maxwell'@'%' identified by 'XXXXXX';

mysql> GRANT SELECT, REPLICATION CLIENT,REPLICATION SLAVE on *.* to 'maxwell'@'%';

以上图片为官网参考

以我自己的为例:

GRANTALL on *.* to 'user01'@'%' identified by '123456';

把所有数据库的所有表授权给user01用户以密码123456登录

GRANTSELECT, REPLICATION CLIENT, REPLICATION SLAVE on *.* to 'user01'@'%';

flushprivileges;

4开启maxwell命令行(注意,如果没有设置,maxwell默认是把监听的mysql的binlog日志发送到kafka的主题叫maxwell的topic上的)

bin/maxwell --user='maxwell' --password='XXXXXX' --host='127.0.0.1' \
   --producer=kafka --kafka.bootstrap.servers=localhost:9092

以上为官网参考,我自己的具体的demo

bin/maxwell --user='user01' --password='123456'--host='192.168.136.129' --producer=kafka --kafka.bootstrap.servers=mw:9092解释:host参数是安装mysql的那台主机,最后的kafka.bootstrap.servers是安装kafka集群的节点主机名和端口号

第三大步骤,kafka相关配置

说明(以下我的kafka是安装在主机名叫mw,注意kafka里的配置文件端口号要和命令行里给的端口号一致)

1首先启动zookeeper

$sbin/zkServer.sh start

2开启kafka命令行

bin/kafka-server-start.shconfig/server.properties

3创建一个主题叫maxwell以便于接受数据

bin/kafka-topics.sh--create --zookeeper mw:2181 --replication-factor 1 --partitions 1 --topic maxwell

4启动生产者窗口

bin/kafka-console-producer.sh--broker-list mw:9092 --topic maxwell

5启动消费者窗口

bin/kafka-console-consumer.sh--zookeeper mw:2181 --topic maxwell --from-beginning

第四大步:最终测试

此时,mysql的binlog已经开启,maxwell命令行也开启,kafka的生产者消费者窗口也开启在监听

开始往mysql里插入修改数据

通过写的jdbc写的多线程程序批量插入修改数据的程序造数据

此时,查看kafka的消费者窗口。可以看到,mysql插入修改的数据,以json形式被maxwell发送到了kafka以maxwell主题命名的窗口里

第五  额外补充

1在第三大步骤里的第四小步开启maxwell命令行时,可以多跟几个参数对mysql的binlog进行过滤,只筛选某些数据库里的某些表

include_dbs,exclude_dbs,include_tables,exclude_tables

2注意点:kafka的安装版本要和maxwell兼容适应,不然会报错

  • Kafka clients 0.8 and 0.9 are compatible with brokers running kafka 0.8.
  • 0.10.0.x clients only support 0.10.0.x or later brokers.
  • Mixing Kafka 0.10 with other versions can lead to serious performance impacts.

还可以使用https://blog.csdn.net/xf_87/article/details/70146810

第二种途径进行解析binlog

20180530利用Maxwell组件实时监听Mysql的binlog日志的更多相关文章

  1. 监听MySQL的binlog日志工具分析:Canal

    Canal是阿里巴巴旗下的一款开源项目,利用Java开发.主要用途是基于MySQL数据库增量日志解析,提供增量数据订阅和消费,目前主要支持MySQL. GitHub地址:https://github. ...

  2. 实时监听 mysql 操作,Linux 版

    效果 场景:某数据库新增了某条记录,服务器可以监听到变化的数据与操作,如 增加一条记录: id = 1009,name=''test,number = 11 服务器监听结果: 实现过程 测试过程:数据 ...

  3. 利用input event 实时监听input输入的内容

    <div id="addNumber"> <p>How many people would you like to invite?</p> &l ...

  4. 利用原生JS实时监听input框输入值

    传送门https://www.cnblogs.com/lantinggumo/p/7636715.html 传送门https://www.cnblogs.com/nailc/p/8572226.htm ...

  5. vue中父组件如何监听子组件值的变化

    vue中我们会遇到很多父子组件通信的需求, 下面简单列一下,父子组件通信的几种情况 1:父组件向子组件传值:使用prop向子组件传值: 2:子组件实时监听父组件传来的值的变化:使用watch去监听父组 ...

  6. MySQL实时监听——EPX 原创: 奕X 贝壳产品技术 今天

    MySQL实时监听——EPX 原创: 奕X 贝壳产品技术 今天

  7. Android几行代码实现实时监听微信聊天

    实现效果: 实时监听当前聊天页面的最新一条消息,如图:            实现原理: 同样是利用AccessibilityService辅助服务,关于这个服务类还不了解的同学可以先看下我上一篇关于 ...

  8. 通过jQuery实时监听表格行数变化

    [本文出自天外归云的博客园] 使用bootstrap table组件,当使用过滤器的时候,页面的表格行数发生变化,此时需要统计表格行数.想要监听表格变化,如何做呢? 使用场景:有一个表格里放着许多测试 ...

  9. Echarts图标宽度变成100px,让图表宽度随着父元素自动适应,Vue实时监听宽度的变化,这可能是史上最好的解决方案!

    最近工作中element后台管理使用Echarts图表,本后台项目分图表模式和列表模式,使用display控制显示隐藏,这样就引出了本文的问题. 问题1:Echarts图标宽度变成100px? 问题2 ...

随机推荐

  1. /lib/dracut/hooks/shutdown/30-dm-shutdown.sh

    aaarticlea/png;base64,iVBORw0KGgoAAAANSUhEUgAABVQAAAMACAIAAABEqXuoAAAgAElEQVR4nOydPWjryOK3VaZM8RYpU2 ...

  2. Kubernetes 集群中使用 Helm 搭建 Spinnaker

    在我们部署Spinnaker之前,我们需要一个YAML格式的配置文件,它会包含了一些配置信息.可以从Spinnaker Helm Chart repository[2]获得这个文件. $curl -L ...

  3. Java中从控制台输入的三种方式

    我们最熟悉的从控制台读取一个字符或者一个字符串都知道用Scanner,那么除了Scanner还有没有其他的呢,答案是有的,我们来看看. System.in.read() System.in.read( ...

  4. HyperLedger Fabric部署与链码解读

    1.Fabric简介 Fabric是超级账本中的一个项目,用以推进区块链技术.和其他区块链类似,它也有一个账本,使用智能合约,且是一个参与者可以分别管理自身交易的系统.它是一个联盟链.Fabric与其 ...

  5. Lambda表达式怎么写SQL中的in?

    ambda表达式查询没有IN这个方法,可以变通一下,in查询的数组是否包含在映射对象里面的集合里 直接贴代码吧,一看就懂了 class Program { static void Main(strin ...

  6. 参加2016华为codecraft编程精英挑战赛后感

    2016年4月参加了华为的软件比赛. 关于比赛:给了一道图论的np-hard问题.刚开始完全不知道怎么入手,请教过师兄,自己也琢磨过,没有什么万全的解决方法.注意,这里说的是万全的办法.本科搞算法时候 ...

  7. Java系列学习(八)-继承

    1.代码块 (1)在java中,使用 { } 括起来的代码 被称为代码块 (2)分类: A:局部代码块 [局部位置] [作用:用于限定 变量的生命周期] B:构造代码块 [在类中的成员位置,用{}括起 ...

  8. PAT甲级1016Phone Bills

    #include<iostream> #include<cstdio> #include<cstdlib> #include<vector> #incl ...

  9. 02--Tomcat总体结构分析一

    注:此文章大部分参考大神文档,并且结合自身理解,补充了其他相关知识,谢绝转载.      大神原文地址链接:http://www.ibm.com/developerworks/cn/java/j-lo ...

  10. js 性能调试

    今天有幸偶遇我早就神往已久的性能调试问题. 原来js调试工具里面有可以记录每个方法的执行时间的功能,站在此功能的肩膀上就可以对自己的程序性能.瓶颈了如指掌,就可以针对性的,瞄准目标,斩草除根,以绝后患 ...