当前位置: 首页 > news >正文

SpringBoot 通过集成 Flink CDC 来实时追踪 MySql 数据变动

一、概述

Flink CDC 是一个基于 Apache Flink 的数据捕获工具,能够实时捕获和处理数据库的变动事件。通过集成 Flink CDC,可以实时追踪 MySQL 数据库中的数据变动,构建高效的数据处理和分析应用。本文将介绍如何在 SpringBoot 项目中集成 Flink CDC,并实现对 MySQL 数据变动的实时追踪。

二、准备工作

1. 环境准备
  • JDK 1.8+
  • Maven 3.6+
  • MySQL 数据库
  • Apache Flink 1.12+
  • SpringBoot 2.5+
2. 创建 MySQL 数据库和表
CREATE DATABASE test_db;USE test_db;CREATE TABLE users (id INT AUTO_INCREMENT PRIMARY KEY,name VARCHAR(255) NOT NULL,email VARCHAR(255) NOT NULL,created_at TIMESTAMP DEFAULT CURRENT_TIMESTAMP
);
​

三、集成步骤

1. 引入依赖

在 SpringBoot 项目的 pom.xml 中添加必要的依赖:

<dependencies><!-- Spring Boot Dependencies --><dependency><groupId>org.springframework.boot</groupId><artifactId>spring-boot-starter</artifactId></dependency><dependency><groupId>org.springframework.boot</groupId><artifactId>spring-boot-starter-data-jpa</artifactId></dependency><!-- Flink Dependencies --><dependency><groupId>org.apache.flink</groupId><artifactId>flink-java</artifactId><version>1.12.0</version></dependency><dependency><groupId>org.apache.flink</groupId><artifactId>flink-streaming-java_2.12</artifactId><version>1.12.0</version></dependency><!-- Flink CDC Dependencies --><dependency><groupId>com.ververica</groupId><artifactId>flink-connector-mysql-cdc</artifactId><version>2.0.0</version></dependency>
</dependencies>
​
2. 配置 Flink CDC

在 SpringBoot 项目中创建 Flink CDC 配置类:

import com.ververica.cdc.connectors.mysql.MySQLSource;
import com.ververica.cdc.connectors.mysql.table.StartupOptions;
import org.apache.flink.api.common.eventtime.WatermarkStrategy;
import org.apache.flink.streaming.api.datastream.DataStreamSource;
import org.apache.flink.streaming.api.environment.StreamExecutionEnvironment;
import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.Configuration;@Configuration
public class FlinkCdcConfig {@Beanpublic DataStreamSource<String> mysqlSource(StreamExecutionEnvironment env) {MySQLSource<String> source = MySQLSource.<String>builder().hostname("localhost").port(3306).databaseList("test_db").tableList("test_db.users").username("root").password("password").deserializer(new JsonDebeziumDeserializationSchema()).startupOptions(StartupOptions.initial()).build();return env.fromSource(source, WatermarkStrategy.noWatermarks(), "MySQL Source");}
}
​
3. 创建 Flink 作业

在 SpringBoot 项目中创建 Flink 作业:

import org.apache.flink.streaming.api.environment.StreamExecutionEnvironment;
import org.springframework.boot.CommandLineRunner;
import org.springframework.stereotype.Component;@Component
public class FlinkJobRunner implements CommandLineRunner {private final StreamExecutionEnvironment env;private final DataStreamSource<String> mysqlSource;public FlinkJobRunner(StreamExecutionEnvironment env, DataStreamSource<String> mysqlSource) {this.env = env;this.mysqlSource = mysqlSource;}@Overridepublic void run(String... args) throws Exception {mysqlSource.print();env.execute("Flink CDC Job");}
}
​
4. 启动 SpringBoot 应用

运行 SpringBoot 应用,启动后会自动执行 Flink 作业,并打印 MySQL 数据库中 users 表的变动。

四、验证和测试

1. 插入测试数据

向 MySQL 数据库中插入数据:

INSERT INTO users (name, email) VALUES ('Alice', 'alice@example.com');
INSERT INTO users (name, email) VALUES ('Bob', 'bob@example.com');
​
2. 验证输出

查看 SpringBoot 应用的控制台输出,确认是否正确捕获并打印了 MySQL 数据库中的变动。

相关文章:

  • Kafka分区机制深度解析:架构原理、负载均衡与性能优化
  • 开源三代示波器720p虚拟界面设计,手机,电脑和Pad均可访问,专用于8通道同步数据采集处理,可玩性高,基于STM32H7(2025-06-17)
  • 02 ( chrome 浏览器插件, 立马翻译), 搭建本地 api
  • 6-16阿里前端面试记录
  • Uniapp设备API全面指南:从位置获取到扫码功能的实现
  • 【Linux】UDP与TCP协议
  • pyqt QMenuBar
  • 【前端基础】摩天之建的艺术:html(上)
  • 【Pandas】pandas DataFrame swaplevel
  • uniapp 小程序 学习(二)
  • YOLOE详解【浅显易懂!】
  • 【前端基础】摩天之建的艺术:html(下)
  • 二十四、【用户管理与权限 - 篇六】前端动态展现:基于权限的菜单与按钮控制
  • 上传本地项目至github
  • KingPortal2.0安装步骤
  • 机器学习监督学习实战七:文本卷积神经网络TextCNN对中文短文本分类(15类)
  • CppCon 2016 学习:I Just Wanted a Random Integer
  • 流体力学×深度学习:当Fluent遇到神经网络,计算效率提升300%的奥秘!
  • Leetcode 刷题记录 19 —— 动态规划
  • 3分钟搭建LarkXR实时云渲染PaaS平台,实现各类3D/XR应用的一键推流
  • html做的网页怎么变成网站/杭州seo哪家好
  • 义乌营销型网站建设/武汉整站优化
  • 个人又什么办法做企业网站/优化设计五年级上册语文答案
  • 用微信小程序怎么做网站/网络推广的平台
  • 无锡网站排名系统/哪里有网站推广优化
  • 网站旁边的小图标怎么做的/实事新闻热点