利用Maxwell实现监听MySql数据库binlog日志,实现增量读取MySql数据

13 篇文章 0 订阅
Maxwell简介

什么是Maxwell?
Maxwell是一个能够读取MySQL binlog并将行更新作为JSON写入Kafka、Kinesis或其他流媒体平台的应用程序。Maxwell的操作开销很低,只需要mysql和一个写操作的地方。它的常用用例包括ETL、缓存构建/过期、指标收集、搜索索引和服务间通信。Maxwell为您提供了事件源的一些好处,而无需重新构建整个平台。

下载地址:https://github.com/zendesk/maxwell/releases/download/v1.21.1/maxwell-1.21.1.tar.gz 
资源地址:https://github.com/zendesk/maxwell 
下载且编译Maxwell
curl -sLo - https://github.com/zendesk/maxwell/releases/download/v1.21.1/maxwell-1.21.1.tar.gz \
       | tar zxvf -
cd maxwell-1.21.1

如果使用的是docker镜像

docker pull zendesk/maxwell

如果使用的是Mac OS X

brew install maxwell
配置mysql的my.cnf
vi /etc/my.cnf  #仅列相关配置项
	[mysqld]
	server_id=1234
	log-bin=bin-log
	binlog_format=row
	#binlog_row_image=FULL
添加Maxwell权限
CREATE USER 'maxwell'@'%' identified by 'XXXXXX';
	GRANT ALL on maxwell.* to 'maxwell'@'%' ;
	GRANT SELECT, REPLICATION CLIENT, REPLICATION SLAVE on *.* to 'maxwell'@'%';
查看是否配置成功
show variables like '%log_bin%';
maxwell启动命令
5.1 #producer=stdout 直接输入到终端窗口
		bin/maxwell --user='maxwell' --password='XXXXXX' --host=192.168.31.77 --producer=stdout
5.2 #kafka
		bin/maxwell --user='maxwell' --password='XXXXXX' --host=node1 --producer=kafka --kafka.bootstrap.servers=node1:9092 --kafka_topic=test_maxwell --client_id=maxwell_id
5.3 # 启动maxwell-bootstrap
maxwell-bootstrap向导命令行引导表
OptionDescription
configlocation of config file(本地的config文件)
databasedatabase that contains the table to bootstrap(要引导的数据库)
tabletable to bootstrap(引导表)
configlocation of config file(本地的config文件)
configlocation of config file(本地的config文件)
configlocation of config file(本地的config文件)
configlocation of config file(本地的config文件)
configlocation of config file(本地的config文件)
Maxwell参数
Maxwell过滤:
	#仅匹配foodb数据库的tbl表和所有table_数字的表
	--filter = 'exclude: foodb.*, include: foodb.tbl, include: foodb./table_\d+/'
	#排除所有库所有表,仅匹配db1数据库
	--filter = 'exclude: *.*, include: db1.*'
	#排除含db.tbl.col列值为reject的所有更新
	--filter = 'exclude: db.tbl.col = reject'
	#排除任何包含col_a列的更新
	--filter = 'exclude: *.*.col_a = *'
	#完全排除bad_db数据库,若要恢复,必须删除maxwell库
	--filter = 'blacklist: bad_db.*'

Maxwell-bootstrap功能:
	使用maxwell-bootstrap时,可用的参数有
	--log_level,日志级别
	--user,用户名
	--password,密码
	--host,主机
	--port,端口
	--database,包含需要bootstrap的表的数据库名
	--table,需要bootstrap的表名
	--where,限制条件
	--client_id,maxwell实例名称
	
常用配置:
	config config.properties, 配置文件
	log_level info,日志级别
	daemon, 守护进程
	schema_database maxwell, 数据库
	client_id maxwell, maxwell实例名称
	replica_server_id 6379, 类似于server_id,多实例
	filter, 过滤器
	output_binlog_position true, 记录binlog位点
	output_ddl true, 记录ddl变更
	
实例

stdout启动

主执行程序:
	bin/maxwell --user='maxwell' --password='XXXXXX' --host=192.168.31.77 --producer=stdout
启动一个maxwell-bootstrap
	bin/maxwell-bootstrap --user='maxwell' --password='123456' --host=node1 --database=test --table=tb_author --log_level=info  --client_id=maxwell

docker启动

docker run -it --rm zendesk/maxwell bin/maxwell --user=$MYSQL_USERNAME \
    --password=$MYSQL_PASSWORD --host=$MYSQL_HOST --producer=stdout

kafka启动

bin/maxwell --user='maxwell' --password='XXXXXX' --host='127.0.0.1' \
   --producer=kafka --kafka.bootstrap.servers=localhost:9092 --kafka_topic=maxwell
1、输出到stdout,json包含binlog位点,包含ddl语句
		./maxwell --user='maxwell' --password='XXXXXX' --host=192.168.31.77 --output_binlog_position=true --output_ddl=true --producer=stdout

2、输出到redis,使用队列的方式
		./maxwell --user='maxwell' --password='XXXXXX' --host=192.168.31.77 --output_binlog_position=true --output_ddl=true --producer=redis --redis_host=192.168.31.77 
		--redis_auth=xxxxxx --redis_type=lpush --redis_database=5 --redis_list_key=maxwell

		./maxwell --user='maxwell' --password='XXXXXX' --host=192.168.31.77 --output_binlog_position=true --output_ddl=true --producer=redis --redis_host=192.168.31.77 
		--redis_auth=xxxxxx --redis_type=lpush --redis_database=5 --redis_list_key=maxwell --daemon

3、输出到rabbitmq
		./maxwell --user='maxwell' --password='XXXXXX' --host=192.168.31.77 --output_binlog_position=true --output_ddl=true --producer=rabbitmq --rabbitmq_host=192.168.31.78 
		--rabbitmq_user=maxwell --rabbitmq_pass=maxwell --rabbitmq_virtual_host=maxwell_vhost --rabbitmq_exchange=maxwell --rabbitmq_exchange_type=topic 
		--rabbitmq_routing_key_template=%db%.%table% --rabbitmq_declare_exchange=true
  • 0
    点赞
  • 6
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值