利用Maxwell组件实时监听Mysql的binlog日志,并且把解析的json格式数据发送到kafka窗口供实时消费
来源:互联网 发布:another mysql daemon 编辑:程序博客网 时间:2024/06/06 17:01
文档主题:
如何使用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.
最好安装kafka0.10版本的吧
- 利用Maxwell组件实时监听Mysql的binlog日志,并且把解析的json格式数据发送到kafka窗口供实时消费
- 监听器监听日志,实时读取日志文件,把读取到的数据入库
- [MySQL binlog]彻底解析Mixed日志格式的binlog
- [MySQL binlog]彻底解析Mixed日志格式的binlog
- storm实时消费kafka数据
- Flume读取日志数据并写入到Kafka,ConsoleConsumer进行实时消费
- mongo-kafka: mongodb 数据到kafka的实时传输
- Mysql 实时数据同步到 kafka、hdfs
- 【MySQL】利用binlog完成实时计算
- 使用Java代码实现实时消费kafka的消息
- logstash+kafka进行日志的实时采集
- java实时监听日志写入kafka
- Yelp的实时流技术:利用MySQLStreamer将数据库变更发送给Kafka
- Vertica实时消费kafka实现
- Spark kafka实时消费实现
- flume实时收集日志到kafka
- Introducing Maxwell, a mysql-to-kafka binlog processor
- C# 实现 客户端 对实时数据的采集 上传至服务端;在服务端把保存到内存中;供WEB页面调用
- Android studio操作
- 对VUE项目实现的理解
- day23
- <Python> 递归展开嵌套列表等可迭代对象(list,dict,set...)
- sql命令笔记
- 利用Maxwell组件实时监听Mysql的binlog日志,并且把解析的json格式数据发送到kafka窗口供实时消费
- Spring 源码导入Eclipse
- day24
- 【poj 3061】尺取法
- AngularJS(一)环境搭建
- [2017.10.23]作业04
- day25
- day26
- Hadoop 调试第一个mapreduce程序过程详细记录总结以及权限问题 Permission denied: user=dr.who