maxwell数据抓取工具
前言
maxwell是一款开源MySQL数据抓取工具,可以读取MySQL的binlog,然后转换成json并输出到kafka、redis等消息队列中。
bin/maxwell,用于增量抓取bin/maxwell-boostrap,用于全量抓取
搭建环境
| 应用 | 版本 | Addr |
|---|---|---|
| MySQL | 8.0.33 | 192.168.3.23:3306 |
| Kafka | 2.13_3.4.0 | 192.168.3.23:9092 |
| Maxwell | 1.40.0 | 无 |
安装MySQL
MySQL版本:8.0.33
- 修改配置文件,启用binlog和gtid
log_bin = mysql-bin
binlog_format = row
binlog_cache_size = 2M
server_id = 1
gtid_mode = on
enforce_gtid_consistency = on
log-slave-updates = 1
binlog-ignore-db = mysql,information_schema,sys,performance_schema
sync_binlog = 1
auto_increment_offset = 1
auto_increment_increment = 2
- 开启binlog直接输出SQL语句
SET GLOBAL binlog_rows_query_log_events=ON;
- 配置同步用户
CREATE USER 'maxwell'@'%' IDENTIFIED BY '123456';
-- GRANT ALL ON maxwell.* TO 'maxwell'@'%';
GRANT SELECT, REPLICATION CLIENT, REPLICATION SLAVE ON *.* TO 'maxwell'@'%';
安装JDK
后面的kafka和maxwell都需要java运行环境,本文使用的jdk版本为 openjdk 17.0.2
安装kafka(单节点)
Kafka版本2.13-3.4.0,使用kraft。
- 生成uuid
KAFKA_CLUSTER_ID="$(bin/kafka-storage.sh random-uuid)"
- 初始化log目录。可修改配置文件
config/kraft/server.properties中日志目录路径。
bin/kafka-storage.sh format -t $KAFKA_CLUSTER_ID -c config/kraft/server.properties
- 启动。注意修改配置文件
config/kraft/server.properties中的监听host地址
bin/kafka-server-start.sh -daemon config/kraft/server.properties
- 创建topic
bin/kafka-topics.sh --create --topic maxwell --bootstrap-server 127.0.0.1:9092
安装maxwell
- 从maxwell的github仓库 https://github.com/zendesk/maxwell 下载release压缩包并解压即可。
增量抓取
- 编辑配置文件
log_level=info
producer=kafka
kafka.bootstrap.servers=192.168.3.23:9092
# mysql连接信息
host=192.168.3.23
port=3306
user=maxwell
password=123456
# 过滤库表
# filter= include: test.*
gtid_mode=true
output_ddl=true
kafka_topic=maxwell
kafka.compression.type=snappy
kafka.retries=0
kafka.acks=1
# 全量抓取的时候会用到
client_id=2301
- 启动
nohup ./bin/maxwell --config ./config.properties > ./nohup.log 2>&1 &
- 测试。在数据库进行一些增删改操作,观测kafka的topic有没有数据,有数据则正常。
全量抓取
maxwell-bootstrap依赖maxwell实例,运行时需要指定maxwell的实例id。
./bin/maxwell-bootstrap --host='192.168.3.23' --port=3306 --user='root' --password='123456' --database="test" --table="tb1"
参考
maxwell数据抓取工具的更多相关文章
- 网页数据抓取工具,webscraper 最简单的数据抓取教程,人人都用得上
Web Scraper 是一款免费的,适用于普通用户(不需要专业 IT 技术的)的爬虫工具,可以方便的通过鼠标和简单配置获取你所想要数据.例如知乎回答列表.微博热门.微博评论.淘宝.天猫.亚马逊等电商 ...
- Hawk 数据抓取工具 使用说明(二)
1. 调试模式和执行模式 1.1.调试模式 系统能够通过拖拽构造工作流.在编辑流的过程中,处于调试模式,为了保证快速地计算和显示当前结果(只显示前20个数据,可在调试的采样量中修改),此时,所有执行器 ...
- Phantomjs+Nodejs+Mysql数据抓取(1.数据抓取)
概要: 这篇博文主要讲一下如何使用Phantomjs进行数据抓取,这里面抓的网站是太平洋电脑网估价的内容.主要是对电脑笔记本以及他们的属性进行抓取,然后在使用nodejs进行下载图片和插入数据库操作. ...
- Java实现多种方式的http数据抓取
前言: 时下互联网第一波的浪潮已消逝,随着而来的基于万千数据的物联网时代,因而数据成为企业的重要战略资源之一.基于数据抓取技术,本文介绍了java相关抓取工具,并附上demo源码供感兴趣的朋友测试! ...
- 使用NodeJs,实现数据抓取
学习笔记 前言 近期做一个数据抓爬工具,最开始使用的是C#控制台应用,同时正则表达式去过滤数据,看着还行,可每次运行都依附于.net framework很是不爽,于是想整点其他的方法.本人还是比较喜欢 ...
- 数据抓取的艺术(一):Selenium+Phantomjs数据抓取环境配置
数据抓取的艺术(一):Selenium+Phantomjs数据抓取环境配置 2013-05-15 15:08:14 分类: Python/Ruby 数据抓取是一门艺术,和其他软件不同,世界上 ...
- python爬虫数据抓取方法汇总
概要:利用python进行web数据抓取方法和实现. 1.python进行网页数据抓取有两种方式:一种是直接依据url链接来拼接使用get方法得到内容,一种是构建post请求改变对应参数来获得web返 ...
- Hawk-数据抓取工具
Hawk-数据抓取工具:简明教程 Hawk: Advanced Crawler& ETL tool written in C#/WPF 1.软件介绍 HAWK是一种数据采集和清洗工具,依据 ...
- [nodejs,expressjs,angularjs2] LOL英雄列表数据抓取及查询显示应用
新手练习,尝试使用angularjs2 [angularjs2 数据绑定,监听数据变化自动修改相应dom值,非常方便好用,但与传统js(jquery)的使用方法会很不同,Dom操作也不太习惯] 应用效 ...
- 【Python入门只需20分钟】从安装到数据抓取、存储原来这么简单
基于大众对Python的大肆吹捧和赞赏,作为一名Java从业人员,我本着批判与好奇的心态买了本python方面的书<毫无障碍学Python>.仅仅看了书前面一小部分的我......决定做一 ...
随机推荐
- nuxt.js项目中全局捕获异常并生成错误日志全过程
需求:客户在使用过程中页面报错时,可以生成错误记录传回服务器,以便改进. 步骤: 一.全局捕获异常, 二.发送到服务端, 三.生成错误日志. 一.全局捕获异常 如图,vue提供了errorHandle ...
- XUnit数据共享与并行测试
引言 在单元或者集成测试的过程中,需要测试的用例非常多,如果测试是一条一条过,那么需要花费不少的时间.从 V2 开始,默认情况下 XUnit 自动配置并行(参考资料),大大提升了测试速度.本文将对 A ...
- 2022-09-22:以下go语言代码输出什么?A:5、B:不能编译;C:运行时死锁。 package main import ( “fmt“ “time“ ) func main
2022-09-22:以下go语言代码输出什么?A:5.B:不能编译:C:运行时死锁. package main import ( "fmt" "time" ) ...
- 2020-11-20:java中,听说过CMS的并发预处理和并发可中断预处理吗?
福哥答案2020-11-20:[答案来自此链接:](http://bbs.xiangxueketang.cn/question/391)1.首先,CMS是一个关注停顿时间,以回收停顿时间最短为目标的垃 ...
- 2022-03-25:给定一个长度为 N 的字符串 S,由字符‘a‘和‘b‘组成,空隙由 ‘?‘ 表示。 你的任务是用a字符或b字符替换每个间隙, 替换完成后想让连续出现同一种字符的最长子串尽可能短。
2022-03-25:给定一个长度为 N 的字符串 S,由字符'a'和'b'组成,空隙由 '?' 表示. 你的任务是用a字符或b字符替换每个间隙, 替换完成后想让连续出现同一种字符的最长子串尽可能短. ...
- Django笔记四十之运行Django环境的python脚本
本文首发于公众号:Hunter后端 原文链接:Django笔记四十之运行Django环境的python脚本 这一篇笔记介绍如何在 Django 中运行脚本. 假设说我们要实现一个功能,需要获取 blo ...
- Python爬虫(二):写一个爬取壁纸网站图片的爬虫(图片下载,词频统计,思路)
好家伙,写爬虫 代码: import requests import re import os from collections import Counter import xlwt # 创建Ex ...
- 洛谷 P5065 不归之人与望眼欲穿的人们
题意 一个长 \(n\) 的正整数序列 \(a\),支持单点修改数值,询问所有按位或值大于等于 \(k\) 的区间长度最短为多少. 数据范围:\(1\le n\le 50000, 0\le a_i, ...
- 大数据实战手册-开发篇之IO
2.4 sparkContext IO:读 2.4.1 textFile # Load a text file and convert each line to a Row. lines = sc.t ...
- 谷歌语法的基础知识&FOFA
谷歌语法 谷歌语法基础符号: "xxx":表示完全匹配,即关键字不能分开,顺序也不能变 +:"xxx"+www.baidu.com 搜索xxx与baidu.c ...