CDC系列(二)、Maxwell_v1.27.1 监控MySQL操作日志实时同步到Kafka

Maxwell 数据采集工具详解 Maxwell是一款用于MySQL数据库的开源实时变更数据捕获(CDC)工具。它能够读取MySQL的binlog,将数据变更捕获并以JSON格式推送到Kafka、Kinesis等目标系统,广泛应用于数据同步、实时处理、审计日志等场景。Maxwell具备实时性强、开源免费、多目标支持等优点,但也存在配置复杂、依赖binlog等限制。通过合理的部署和优化,Maxwell可以在复杂的数据处理系统中提供高效的实时数据捕获和推送服务。 阅读详情

目录

前言

安装

配置

使用Maxwell监控MySQL操作并写入Kafka

尾巴


CDC系列:

CDC系列(一)、Canal 集群部署及使用(带WebUI)


前言

在上一篇我们介绍了CDC工具,以及Canal的集群安装和使用,本篇我们来讲解另一个CDC工具:Maxwell。和Canal一样,Maxwell也是将自己伪装成MySQL的slave节点,通过监控MySQL的binlog来将数据操作日志同步到kafka等消息队列中供异构数据源使用。

本篇我们会介绍Maxwell的安装和使用。

安装

和Canal一样,一定要至少准备一个MySQL库用于Maxwell的管理库存放状态信息以及用来监控的MySQL库,监控到的binlog导出到kafka,因此也需要准备kafka 和zookeeper ,Maxwell也是java开发的因此需要JDK1.8,这些在之前的文章中都有介绍安装方式,因此本文不再赘述。

下载Maxwell_v1.27.1: https://github.com/zendesk/maxwell/releases/download/v1.27.1/maxwell-1.27.1.tar.gz

解压下载的tar包: 

tar -zxvf maxwell-1.27.1.tar.gz -C /opt/app/

配置

和Canal一样,被监控的MySQL一定要开启Binlog,具体步骤可参考上一篇内容:MySQL开启Binlog。

其次在Maxwell的管理数据库上创建用户maxwell并授权,由于这里演示的被监控的mysql和maxwell在同一个mysql实例上,因此这里直接使用maxwell用户来监控mysql binlog,在实际生产应用中一般是将这两个库分开的,在下面的config_csdn.properties 配置中也可以体现出来。

-- 创建maxwell管理库的连接账户
CREATE USER 'maxwell'@'%' IDENTIFIED BY 'maxwell_pwd';
GRANT ALL ON maxwell.* TO 'maxwell'@'%';
GRANT SELECT, REPLICATION CLIENT, REPLICATION SLAVE ON *.* TO 'maxwell'@'%';

修改配置文件,详细选项可参考:http://maxwells-daemon.io/config/

cd /opt/app/maxwell-1.27.1
cp config.properties.example config_csdn.properties
vim config_csdn.properties
# 修改下面这些配置,其他配置选项可以默认或按需配置,可参考:http://maxwells-daemon.io/config/
-------------------------------------------
log_level=info

# 该ID不能与mysql my.cnf中的一样,也不能与其他监控同一个库的CDC中配置id一样
replica_server_id=9

# 将监控的log导出到kafka
producer=kafka
kafka.bootstrap.servers=wyk01:9092,wyk02:9092,wyk03:9092
# 增删改操作和ddl操作分别写到下面两个topic内
kafka_topic=wyk_csdn_maxwell
ddl_kafka_topic=wyk_csdn_maxwell
#kinesis_stream=maxwell
#include_dbs=test_csdn
kafka_version=0.11.0
kafka.compression.type=snappy
kafka.retries=0
kafka.acks=-1

# 配置maxwell的管理库连接
# mysql login info
host=wyk01
port=3306
user=maxwell
password=maxwell_pwd
schema_database=maxwell
jdbc_options=autoReconnect=true

# 配置监控binlog的mysql库连接信息,如果没配置此内容的话,默认被监控的mysql和maxwell管理库是同一个mysql,即上面配置的内容。  这里被监控的mysql的连接用户需要有该mysql的binlog复制权限
# maxwell can optionally replicate from a different server than where it stores
# schema and binlog position info.  Specify that different server here:
replication_host=wyk01
replication_port=3306
replication_user=maxwell
replication_password=maxwell_pwd

# 对log的过滤条件, include/exclude,具体请参考:http://maxwells-daemon.io/filtering
# 下面表示只监控test_csdn库下的所有表,不监控maxwell库的变更操作
filter=include: test_csdn.*,exclude: maxwell.*

使用Maxwell监控MySQL操作并写入Kafka

上面的配置文件写完之后我们就可以直接启动maxwell监控mysql的操作,然后将监控的操作日志写入到kafka了,相关命令如下:

# 启动maxwell进程
bin/maxwell --config config_csdn.properties
# 后台启动maxwell进程
bin/maxwell --config config_csdn.properties --daemon

# 开启一个kafka的消费端验证效果
bin/kafka-console-consumer.sh --bootstrap-server wyk01:9092,wyk02:9092,wyk03:9092 --topic wyk_csdn_maxwell

# 全量推送指定表(test_csdn.wyk_csdn)的数据到kafka内
bin/maxwell-bootstrap --config config_csdn.properties --database test_csdn --table wyk_csdn --client_id=csdn_full --bootstrapper=sync

注意:

1. 当启动多个Maxwell,需要为每个实例配置不同的client_id 字符串型(例如上面的第4个命令),以存储不同的binlog位点,如:

bin/maxwell-bootstrap --config config_csdn.properties --database test_csdn --table wyk_csdn --client_id=csdn_full  --bootstrapper=sync

2. Maxwell支持对指定的表全量同步,当参数--bootstrapper=sync 时,在处理bootstrap时,会阻塞正常的binlog解析,当参数--bootstrapper=async时,不会阻塞。

触发全量同步也可以直接在maxwell库下插入一条记录:

insert into maxwell.bootstrap (database_name, table_name) values ('fooDB', 'barTable');

或指定client_id:

insert into maxwell.bootstrap (database_name, table_name, client_id) values ('fooDB', 'barTable', 'custom_maxwell_client_id');

当全量同步时,消息结构以bootstrap-start 声明开始,然后是bootstrap-insert 全量同步数据,最后以bootstrap-complete 结尾。

若在全量同步过程中出现故障,下次重新启动时会从头重新开始,若重启遇到问题,可以到maxwell管理库将 bootstrap表的is_completed字段更新为true即可。

更加详细的Maxwell Bootstrap请参考:http://maxwells-daemon.io/bootstrapping/

启动maxwell及kafka消费者之后,在mysql中执行下面的命令,验证是否会被maxwell发送到kafka内:

create database test_csdn;
use test_csdn;
-- 建表
create table wyk_csdn(id int,name varchar(20),ins_ts timestamp);

-- 插入2条数据
insert into wyk_csdn values(1,'wyk1',current_timestamp());
insert into wyk_csdn values(2,'wyk2',current_timestamp());

-- 更新id=2的数据
update wyk_csdn set name='wyk2_new' where id=2;

-- 删除id=1的数据
delete from wyk_csdn where id=1;

-- 清空表
truncate table wyk_csdn;

-- 删除表
drop table wyk_csdn;

-- 修改表结构
create table wyk_csdn2(id int,name varchar(20),ins_ts timestamp);
alter table wyk_csdn2 add column(add_c text);

-- 修改表名
rename table wyk_csdn2 to wyk_csdn2_new;

drop table wyk_csdn2_new;

Maxwell监控binlog发送的json消息格式:

{
	"type": "table-create",
	"database": "test_csdn",
	"table": "wyk_csdn",
	"def": {
		"database": "test_csdn",
		"charset": "latin1",
		"table": "wyk_csdn",
		"columns": [
			{
				"type": "int",
				"name": "id",
				"signed": true
			},
			{
				"type": "varchar",
				"name": "name",
				"charset": "latin1"
			},
			{
				"type": "timestamp",
				"name": "ins_ts",
				"column-length": 0
			}
		],
		"primary-key": []
	},
	"ts": 1600769161000,
	"sql": "create table wyk_csdn(id int,name varchar(20),ins_ts timestamp)"
}
{
	"database": "test_csdn",
	"table": "wyk_csdn",
	"type": "insert",
	"ts": 1600769172,
	"xid": 74698,
	"commit": true,
	"data": {
		"id": 1,
		"name": "wyk1",
		"ins_ts": "2020-09-22 10:06:12"
	}
}
{
	"database": "test_csdn",
	"table": "wyk_csdn",
	"type": "insert",
	"ts": 1600769175,
	"xid": 74713,
	"commit": true,
	"data": {
		"id": 2,
		"name": "wyk2",
		"ins_ts": "2020-09-22 10:06:15"
	}
}
{
	"database": "test_csdn",
	"table": "wyk_csdn",
	"type": "update",
	"ts": 1600769181,
	"xid": 74739,
	"commit": true,
	"data": {
		"id": 2,
		"name": "wyk2_new",
		"ins_ts": "2020-09-22 10:06:21"
	},
	"old": {
		"name": "wyk2",
		"ins_ts": "2020-09-22 10:06:15"
	}
}
{
	"database": "test_csdn",
	"table": "wyk_csdn",
	"type": "delete",
	"ts": 1600769184,
	"xid": 74756,
	"commit": true,
	"data": {
		"id": 1,
		"name": "wyk1",
		"ins_ts": "2020-09-22 10:06:12"
	}
}
{
	"type": "table-drop",
	"database": "test_csdn",
	"table": "wyk_csdn",
	"ts": 1600769190000,
	"sql": "DROP TABLE `wyk_csdn` /* generated by server */"
}
{
	"type": "table-create",
	"database": "test_csdn",
	"table": "wyk_csdn2",
	"def": {
		"database": "test_csdn",
		"charset": "latin1",
		"table": "wyk_csdn2",
		"columns": [
			{
				"type": "int",
				"name": "id",
				"signed": true
			},
			{
				"type": "varchar",
				"name": "name",
				"charset": "latin1"
			},
			{
				"type": "timestamp",
				"name": "ins_ts",
				"column-length": 0
			}
		],
		"primary-key": []
	},
	"ts": 1600769193000,
	"sql": "create table wyk_csdn2(id int,name varchar(20),ins_ts timestamp)"
}
{
	"type": "table-alter",
	"database": "test_csdn",
	"table": "wyk_csdn2",
	"old": {
		"database": "test_csdn",
		"charset": "latin1",
		"table": "wyk_csdn2",
		"columns": [
			{
				"type": "int",
				"name": "id",
				"signed": true
			},
			{
				"type": "varchar",
				"name": "name",
				"charset": "latin1"
			},
			{
				"type": "timestamp",
				"name": "ins_ts",
				"column-length": 0
			}
		],
		"primary-key": []
	},
	"def": {
		"database": "test_csdn",
		"charset": "latin1",
		"table": "wyk_csdn2",
		"columns": [
			{
				"type": "int",
				"name": "id",
				"signed": true
			},
			{
				"type": "varchar",
				"name": "name",
				"charset": "latin1"
			},
			{
				"type": "timestamp",
				"name": "ins_ts",
				"column-length": 0
			},
			{
				"type": "text",
				"name": "add_c",
				"charset": "latin1"
			}
		],
		"primary-key": []
	},
	"ts": 1600769196000,
	"sql": "alter table wyk_csdn2 add column(add_c text)"
}
{
	"type": "table-alter",
	"database": "test_csdn",
	"table": "wyk_csdn2",
	"old": {
		"database": "test_csdn",
		"charset": "latin1",
		"table": "wyk_csdn2",
		"columns": [
			{
				"type": "int",
				"name": "id",
				"signed": true
			},
			{
				"type": "varchar",
				"name": "name",
				"charset": "latin1"
			},
			{
				"type": "timestamp",
				"name": "ins_ts",
				"column-length": 0
			},
			{
				"type": "text",
				"name": "add_c",
				"charset": "latin1"
			}
		],
		"primary-key": []
	},
	"def": {
		"database": "test_csdn",
		"charset": "latin1",
		"table": "wyk_csdn2_new",
		"columns": [
			{
				"type": "int",
				"name": "id",
				"signed": true
			},
			{
				"type": "varchar",
				"name": "name",
				"charset": "latin1"
			},
			{
				"type": "timestamp",
				"name": "ins_ts",
				"column-length": 0
			},
			{
				"type": "text",
				"name": "add_c",
				"charset": "latin1"
			}
		],
		"primary-key": []
	},
	"ts": 1600769199000,
	"sql": "rename table wyk_csdn2 to wyk_csdn2_new"
}
{
	"type": "table-drop",
	"database": "test_csdn",
	"table": "wyk_csdn2_new",
	"ts": 1600769202000,
	"sql": "DROP TABLE `wyk_csdn2_new` /* generated by server */"
}

Maxwell bootstrap全量同步表数据的json消息:

{
	"database": "test_csdn",
	"table": "wyk_csdn",
	"type": "bootstrap-start",
	"ts": 1600769648,
	"data": {}
}
{
	"database": "test_csdn",
	"table": "wyk_csdn",
	"type": "bootstrap-insert",
	"ts": 1600769648,
	"data": {
		"id": 1,
		"name": "wyk1",
		"ins_ts": "2020-09-23 07:13:02"
	}
}
{
	"database": "test_csdn",
	"table": "wyk_csdn",
	"type": "bootstrap-insert",
	"ts": 1600769648,
	"data": {
		"id": 2,
		"name": "wyk2",
		"ins_ts": "2020-09-23 07:13:02"
	}
}
{
	"database": "test_csdn",
	"table": "wyk_csdn",
	"type": "bootstrap-complete",
	"ts": 1600769648,
	"data": {}
}

尾巴

通过上面的使用,我们可以看出,maxwell能够监控到数据库的alter table&view /create table&view/insert/update/delete/truncate/drop/rename等动作,但并不能监控到truncate动作,相比于Canal是个劣势,但相比于canal,maxwell bootstrap支持指定表进行全量同步,在做初始化切换以及重刷全量数据的时候可以保证不会有数据丢失的风险,而canal对于此场景的处理会麻烦许多(通过canal adapter的etl功能实现)。

 

希望本文对你有帮助,请点个赞鼓励一下作者吧~ 谢谢!

MySQL Binlog 核心原理与实战应用:从数据恢复到实时架构 在数据库系统中,数据的安全与可靠流动是核心诉求。Binlog(二进制日志)作为MySQL等数据库记录数据变更的核心机制,其原理在于以二进制格式顺序记录所有对数据库的修改操作。这项技术的核心价值在于,它不仅构成了数据库主从复制、实现高可用与读写分离的基石,更是现代数据架构中实现缓存更新、实时数仓和事件驱动架构的关键引擎。通过解析Binlog,可以精准实现基于时间点的数据恢复(PITR),有效应对误删等数据灾难。在工程实践中,结合Canal、Debezium等工具,Binlog能够将数据变更实时推送至Kafka 阅读详情

相关推荐

【Clickhouse从入门到精通】第60篇:ClickHouse生态总结与未来展望

ClickHouse系列收官总结 本文作为《ClickHouse从入门到精通》系列的第60篇收官之作,系统回顾了整个系列的知识体系。文章从基础概念到高级应用,全面梳理了ClickHouse的核心技术: 知识体系:完整回顾了60篇文章的知识图谱,包括列式存储原理、MergeTree引擎家族、分布式架构等核心内容 生态工具:详细盘点了ClickHouse的企业版工具、运维监控、数据集成和可视化方案 版本演进:分析了从21.x到24.x的主要版本特性升级 未来趋势:展望了向量化引擎、湖仓一体、AI集成等发展方向

xyghehehehe的专栏 441

MySQL创建用户,设置密码时提示密码安全问题.

问题: create user maxwell@'%' IDENTIFIED by 'maxwell'; ERROR 1819 (HY000): Your password does not satisfy the current policy requirements 解决: SHOW VARIABLES LIKE 'validate_password%'; set global validate_password_policy=LOW; set global validate_passwor

东城庞太师 872

【信息科学与工程学】【数据科学】第五十一篇 数据仓库00 基础设计01

数据仓库设计的系统性解决方案,涵盖架构模式、分层设计、百万级访问支撑、海量数据配置及与数据库/数据湖的对接策略: ​​ODS(操作数据层)​​:原始数据镜像,保留历史快照 ​​DWD(明细数据层)​​:清洗、标准化、维度退化 ​​DWS(汇总数据层)​​:主题宽表、轻度聚合 ​​ADS(应用数据层)​​:高度聚合,面向报表/API ​​二、百万用户访问架构设计​​ ​​1. 核心架构组件​​ ​​2. 关键配置参数(以Snowflake为例)​​ ​​3. 性能优化措

weixin_49199313的博客 1202

MySQL Binlog 解析工具 -Maxwell 详解

maxwell 简介 Maxwell是一个能实时读取MySQL二进制日志binlog,并生成 JSON 格式的消息,作为生产者发送给 Kafka,Kinesis、RabbitMQ、Redis、Google Cloud Pub/Sub、文件或其它平台的应用程序。它的常见应用场景有ETL、维护缓存、收集表级别的dml指标、增量到搜索引擎、数据分区迁移、切库binlog回滚方案等。官网(http://m...

贾红平 1767

【信息科学与工程学】【数据中心】 第十五篇 智算中心DaaS数据消费场景02

智算中心DaaS数据共享场景的分级分类是一个复杂的系统工程,需要从技术、安全、合规、治理、运营等多个维度进行综合考虑。本分级分类体系为不同场景下的数据共享提供了详细的指导,包括安全分级、共享模式、技术架构、合规治理等方面。在实施数据共享平台时,应结合自身业务需求、技术能力和资源情况,选择适合的共享模式和实施路径。同时,要高度重视数据安全和隐私保护,采用先进的技术和管理手段,确保数据共享的安全可控。

weixin_49199313的博客 1万+

SAP S4 HANA 新资产会计中的平行分类账估值

在资产会计中,我们可以设置使用折旧区域的平行分类账会计 我们需要根据涉及的会计原则定义折旧区域,在我们的方案中,公司 FR01 是一家国际集团的当地分支机构,公司 FR01 需要按照集团会计准则 IFRS 和当地 GAAP 会计准则报告财务报表。过账到 LG 会计原则(分类帐 2L)-->分类账 2L的 150 欧元损失 -->在 IFRS 折旧区域,我们有 100 欧元的收益,在 LG 折旧区域,我们有 150 欧元的损失,使用平行分类账 0L 和 2L,我们能够根据不同的会计原则进行平行估值。

yanzibing99的博客 1328

Maxwell 的使用

Maxwell 的使用 1.Maxwell介绍 Maxwell介绍Maxwell是由美国zendesk开源,用java编写的Mysql实时抓取软件,其抓取的原理也是基于binlog。 2.Maxwell 和canal工具对比 ➢Maxwell没有canal那种server+client模式,只有一个server把数据发送到消息队列或redis。如果需要多个实例,通过指定不同配置文件启动多个进程。 ➢Maxwell有一个亮点功能,就是canal只能抓取最新数据,对已存在的历史数据没有办法处理。而Maxwell

weixin_43847900的博客 1130

保姆级教程:用海思PQTool搞定ISP图像调试,从参数读取到固件烧录全流程

本文提供海思PQTool的ISP图像调试全流程指南,从参数读取、实时调试到固件烧录,涵盖环境配置、核心功能解析、参数固化及生产部署。通过实战案例和避坑指南,帮助开发者高效提升图像质量,适用于海思开发板的ISP调试与优化。

weixin_30872337的博客 280

flinkcdc binlog到kafka

flinkcdc binlog到kafka

Steven 1530

Lmcache+vllm——KVcache卸载CPU/SSD探索

目前查看了vllm、Nvidia dynamo、mooncake都没有找到将kvcache卸载到SSD的方法,幸好lmcache支持。以下进行lmcache+vllm实践,对比将kvcache分别卸载到CPU-ram和SSD上的TTFT性能差异。目前的query只是单并发,对比的效果已经比较明显了,可能多并发下对存储的要求就会更高了。

weixin_43579058的博客 2655

计算机视觉与深度学习 | 基于Matlab的多特征融合可视化指纹识别系统(附完整代码)

此系统展示了一个完整的指纹识别流程,实际应用中可以根据需求进一步优化算法,如改进方向场计算、增加脊线频率特征、使用更精确的匹配算法等。

尘世冰封的专栏 360

MaxWell安装部署

在开始之前,我们还是需要先看一下Maxwell官网,对Maxwell有一个简单的了解。 Maxwell通过canal解析binlog,并将其发送到Kafka,后续我们通过自己的业务逻辑,处理得到的binlog日志,就OK了。我之前在用的时候,是公司要实时同步业务库的数据到HBase中,然后实现一些实时的查询业务。如果有兴趣的朋友,可以看看canal的底层实现,在这里我就不多赘述了。 首先我们需...

为一个人走几座城 6875

Python 爬虫实战:爬取万方数据文献信息

本文介绍了基于Python爬虫技术合规获取万方数据文献信息的方法。通过分析万方数据的请求机制与反爬策略,采用requests库结合Session维持合法会话,实现了文献标题、摘要、作者等核心元数据的提取。文章详细讲解了Token验证、动态请求构造、JSON数据解析等关键技术,并提供了完整可运行代码。同时强调严格遵守《万方数据知识服务平台用户协议》,控制请求频率,仅限学术研究使用。该方案为万方数据文献信息获取提供了标准化解决方案,支持数据清洗、结构化存储及后续分析应用。

2503_91057718的博客 2135

CDC系列(三)、Debezium 监控MySQL操作日志实时同步到Kafka(对比canal,maxwell)

目录 前言 准备工作 配置Connector 注册启动Connector 验证CDC 尾巴 CDC系列: CDC系列(一)、Canal 集群部署及使用(带WebUI) CDC系列(二)、Maxwell_v1.27.1 监控MySQL操作日志实时同步到Kafka 前言 前两篇我们介绍了CDC工具,以及利用Canal和Maxwell监控mysql操作日志并写入kafka,本篇我们来讲解另一个CDC工具:debezium。debezium不仅仅支持mysql的监控,目前最新版已支持mysql

王义凯 的博客 1万+

Newton & Nvidia 开源 GPU 加速机器人仿真器入门教程(一)

Newton 是一个 GPU 加速、可扩展和可微分的物理仿真引擎,专为机器人、研究和高级仿真工作流而设计。Newton 基于 NVIDIA Warp 并集成了 MuJoCo Warp,为用户和开发人员提供了高性能仿真、现代 Python API 和灵活的架构。

机器人控制与仿真应用 1482

YOLO11涨点优化:创新多尺度卷积注意力(MSCA)模块,小目标检测神器!

MSCA模块通过创新的多尺度设计,在保持计算效率的同时显著提升小目标检测能力。实验证明,在YOLOv5/v8等模型上嵌入MSCA后,mAP提升超过2%,小目标检测精度提升近4%,且计算代价增加极小。注意力机制的未来发展方向动态核尺寸:根据输入特征自适应调整卷积核大小跨模态融合:结合RGB与深度/热力图等多模态信息自监督优化:利用对比学习预训练注意力模块尝试在你的YOLO模型中插入MSCA模块,欢迎在评论区分享你的涨点结果!参考文献。

QQ_778132974的博客 470

十一、Maxwell 原理与应用

本文介绍了Maxwell,一个由Zendesk开发的MySQL变更数据抓取(CDC)工具。Maxwell通过伪装为MySQL从库,实时监控数据库变更(INSERT/UPDATE/DELETE),并将数据以JSON格式发送到Kafka等流处理平台。文章详细解析了其核心原理,包括MySQL二进制日志(Binlog)和主从复制机制,以及Maxwell的断点续传、Bootstrap全量同步、数据过滤和分区策略等关键特性。此外,还提供了从安装配置到启停操作的完整部署指南,包括MySQL的Binlog设置、Maxwel

qq_22812761的博客 233

基于XDMA 的PCIE读写DDR

基于XDMA 的PCIE读写DDR 概述:   想实现基于FPGA的PCIe通信,查阅互联网各种转载…基本都是对PCIe的描述,所以想写一下基于XDMA的PCIe通信的实现(PCIe结构仅做简单的描述(笔记),了解详细结构移至互联网)。 实现功能:PC通过PCIE读写DDR,同时用户通过逻辑代码可以读取被写入DDR内的数据(我是通过VIO实现DDR任意地址,任意数据大小的读取。)。 实践实践!!! 说明: 参考文档: PCI Express Base Specification Revision 3.0 P

Crazzy_M的博客 1万+

数据同步组件:Canal、Maxwell、Databus、DBSyncer、MongoShake、DTS

数据同步组件:Canal、Maxwell、Databus、DBSyncer、MongoShake、DTS

lonelymanontheway的博客 430

C# WinForm 基于DirectShow.dll编写的程序,可边预览边保存视频,音频和图片

基于微软的DirectShow.dll的二次开发1.自动识别连接的摄像头跟麦克风且可以对其进行选择(默认选中第一个)2.可录制wmv和avi两种格式的视频并且都带有音频,avi可以录制的分辨率和帧数进行选择,wmv默认进行了淸晰度优化如不喜欢可去除代码中有相关提示3.可在预览点开之后进行拍照,也可边录制视频边拍照4.添加了视频和音频的压缩功能(酌情使用)这次二次开发发现C#对DirectShow的相关信息太少,这次做完也不敢藏私共享出来,还望大家指正

汉书HE8,好用的汇编代码编写工具

汉书HE8,好用的汇编代码编写工具早期编写汇编代码所用功能强大

MySQL二进制日志(binlog)核心机制、应用场景与生产环境最佳实践

数据库事务日志是保障数据一致性与可靠性的关键技术基础,其核心原理在于记录所有数据变更操作,确保在系统故障后能够精确恢复或重建数据状态。在MySQL生态中,二进制日志(Binary Log,简称binlog)正是实现这一技术价值的关键组件,它通过记录数据变更事件,为数据库系统提供了主从复制、数据恢复和增量数据订阅三大核心能力。从技术实现看,binlog的写入机制与InnoDB存储引擎的事务提交过程紧密耦合,通过两阶段提交(2PC)和组提交(Group Commit)等机制,在保证数据一致性的同时优化了高并发下

weixin_34314962的博客 370

大中型超市收银系统(可直接运行)

光步前台收银系统系统功能:商品销售、商品退货、挂单、收银员权限、会员销售、单品取消、整单取消、商品查询、脱机销售、脱机数据上传,基本资料下载,开钱箱、小票打印、收款结算,支持多币种付款方式(现金、储值卡、礼券、微信等),支持多种促销。运行环境:.net 4.0登陆信息用户名:1001 密码:123456内置商品信息,商品编码可输入00001000 - 00010000,测试效果相关功能键F5 结算 F9挂单 F11商品查询 F8退货 Insert单品取消 Del整单取消 F12开钱箱F2 会员 Ctrl+Z退出系统 Home 锁屏 相关源码待公开

基于Binlog与MQ实现MySQL到Elasticsearch秒级数据同步架构详解

在分布式系统架构中,数据同步是确保多数据源一致性的核心挑战。其基本原理是通过捕获源数据库的变更事件,经过可靠管道传递,最终在目标存储中实现状态同步。这项技术的核心价值在于解耦业务逻辑与数据分发,保障系统在高并发下的最终一致性。典型的应用场景包括电商商品搜索、实时数据分析看板和日志聚合分析等。本文聚焦于如何构建一个稳定、可观测的实时同步管道,通过整合MySQL Binlog变更数据捕获(CDC)、消息队列(MQ)解耦与削峰,以及消费者幂等写入等关键技术,解决生产环境中常见的数据延迟与一致性问题,实现秒级数据同

weixin_30402343的博客 333

efm32 入门.pdf

本PDF共计22页,介绍的是操作驱动API,下载与否自己斟酌。

基于 Dinky + FlinkSQL + Flink CDC 同步 MySQL 数据到 Elasticsearch、Kafka

是一个开箱即用的一站式实时计算平台以 Apache Flink 为基础,连接 OLAP 和数据湖等众多框架致力于流批一体和湖仓一体的建设与实践。本文以此为FlinkSQL可视化工具。使得使用标准 SQL 开发流式应用变得简单,免去代码开发。本文使用允许从 MySQL 数据库读取快照数据和增量数据。

MHXSH_1_0的博客 3852

mysql kafka binlog_基于binlog的MySQL数据同步到MRS集群中

本章节为您介绍使用Maxwell同步工具将线下基于binlog的数据迁移到MRS Kafka集群中的指导。Maxwell是一个开源程序(https://maxwells-daemon.io),通过读取MySQL的binlog日志,将增删改等操作转为JSON格式发送到输出端(如控制台/文件/Kafka等)。Maxwell可部署在MySQL机器上,也可独立部署在其他与MySQL网络可通的机器上。Max...

weixin_39705065的博客 271

maxwell mysql-kafka 全量,实时数据同步实战

bootstrap引导全量/增量历史数据. 准备工作:mysql插入历史数据。 CREATE TABLE `emp` ( `id` int(11) DEFAULT NULL, `name` varchar(100) DEFAULT NULL, `deg` varchar(100) DEFAULT NULL, `salary` int(11) DEFAULT NULL, `dept` varchar(10) DEFAULT NULL, `create_time` timestam

weixin_40954192的博客 2940

Maxwell的简介与使用

一、简介 Maxwell 是由美国Zendesk公司开源,用Java编写的MySQL变更数据抓取软件。它会实时监控Mysql数据库的数据变更操作(包括insert、update、delete),并将变更数据以 JSON 格式发送给 Kafka、Kinesi等流数据处理平台。 Maxwell的工作原理是实时读取MySQL数据库的二进制日志(Binlog),从中获取变更数据,再将变更数据以JSON格式发送至Kafka等流处理平台。 二进制日志(Binlog)...

lslslslslss的博客 1万+

maxwell配置项说明

config.properties 配置文件里面的所有选项,都可以在启动 maxweill./bin/maxwell是指定,覆盖配置文件的内容。这里只讲一些常用的。 mysql options host 指定从哪个地址的mysql获取binlog replication_host 如果指定了replication_host,那么它是真正的binlog来源的mysql server地...

xiaolegeaizy的博客 9653
上一篇: CDC系列(一)、Canal 集群部署及使用(带WebUI)
下一篇: Kafka系列(六)、Kafka开发套件kafka lenses 安装及使用(带WebUI)
王义凯_Rick
王义凯_Rick 领域专家: 大数据技术领域 领域专家: 大数据技术领域
博客等级 码龄14年 858粉丝 162原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

王义凯_Rick

遇见即是缘,路过就给个评论吧~

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值