跳到主要内容
极客日志极客日志面向AI+效率的开发者社区
首页博客GitHub 精选镜像AI 生图工具UI配色美学隐私政策关于联系
搜索内容 / 工具 / 仓库 / 镜像...⌘K搜索
注册
博客列表
Javajava

SpringBoot 整合 Flink CDC 实时追踪 MySQL 数据变动

SpringBoot 整合 Flink CDC 实现 MySQL 数据实时变更追踪。步骤包括开启 MySQL Binlog、创建 Spring Boot 项目、添加 Flink 依赖、配置连接信息、编写 CDC 服务类启动流处理任务。最终通过控制台打印验证数据变动捕获效果,适用于实时数仓更新及数据同步场景。

锁机制发布于 2026/1/21更新于 2026/7/428 浏览
SpringBoot 整合 Flink CDC 实时追踪 MySQL 数据变动

SpringBoot 整合 Flink CDC,实时追踪 MySQL 数据变动

我们将整合 Spring Boot 和 Apache Flink CDC(Change Data Capture)来实现实时数据追踪。下面是一个基本的实践流程代码,包括搭建 Spring Boot 项目、整合 Flink CDC 以及实现数据变动的实时追踪。

前言

Flink CDC(Flink Change Data Capture)是一种基于数据库日志的 CDC 技术,它实现了一个全增量一体化的数据集成框架。与 Flink 计算框架相结合,Flink CDC 能够高效地实现海量数据的实时集成。其核心功能在于实时监视数据库或数据流中的数据变动,并将这些变动抽取出来,以便进行进一步的处理和分析。借助 Flink CDC,用户可以轻松地构建实时数据管道,实时响应和处理数据变动,为实时分析、实时报表和实时决策等场景提供有力支持。

Flink CDC 的应用场景广泛,包括但不限于实时数据仓库更新、实时数据同步和迁移以及实时数据处理等。它还能确保数据一致性,并在数据发生变更时准确地进行捕获和处理。此外,Flink CDC 支持与多种数据源进行集成,如 MySQL、PostgreSQL、Oracle 等,并提供了相应的连接器,便于数据的捕获和处理。

接下来,将详细介绍 MySQL CDC 的使用。MySQL CDC 连接器允许从 MySQL 数据库中读取快照数据和增量数据。

1. MySQL 开启 Binlog

MySQL 中开启 binlog 功能,需要修改配置文件中(如 Linux 的 /etc/my.cnf 或 Windows 的 \my.ini)的 [mysqld] 部分设置相关参数:

[mysqld]
server-id=1
binlog-format=Row
log-bin=mysql-bin
binlog_do_db=testjpa

除了开启 binlog 功能外,还需要为 Flink CDC 配置相应的权限,以确保其能够正常连接到 MySQL 并读取数据。这包括授予 Flink CDC 连接 MySQL 的用户必要的权限,如 SELECT、REPLICATION SLAVE、REPLICATION CLIENT、SHOW VIEW 等。这些权限是 Flink CDC 读取数据和元数据所必需的。

检查是否已开启 binlog 功能:

mysql> SHOW VARIABLES LIKE 'log_bin';
+---------------+-------+
| Variable_name | Value |
+---------------+-------+
| log_bin       | ON    |
+---------------+-------+

至此,MySQL 的相关配置已完成。

2. 创建 Spring Boot 项目

首先,你需要创建一个 Spring Boot 项目。可以使用 Spring Initializr 来快速生成项目。

3. 添加依赖

在 pom.xml 中添加 Apache Flink 和 Flink CDC 的依赖。以下是必要的依赖:

<dependencies>
    <!-- Flink dependency -->
    <dependency>
        <groupId>org.apache.flink</groupId>
        <artifactId>flink-java</artifactId>
        <version>1.14.0</version>
    </dependency>
    <dependency>
        <groupId>org.apache.flink</groupId>
        <artifactId>flink-streaming-java_2.12</artifactId>
        <version>1.14.0</version>
    </dependency>
    <dependency>
        <groupId>org.apache.flink</groupId>
        <artifactId>flink-connector-mysql-cdc</artifactId>
        <version>2.0.0</version>
    </dependency>
    <!-- Spring Boot dependencies -->
    <dependency>
        <groupId>org.springframework.boot</groupId>
        <artifactId>spring-boot-starter</artifactId>
    </dependency>
</dependencies>

4. 配置 Flink 和 MySQL CDC

在 Spring Boot 的 application.yml 或 application.properties 文件中配置 Flink 和 MySQL 数据库连接:

flink:
  checkpoint:
    interval: 10000
  parallelism: 1
spring:
  datasource:
    url: jdbc:mysql://localhost:3306/your_database
    username: your_username
    password: your_password

5. 实现数据实时追踪

创建一个服务类来实现数据的实时追踪:

import org.apache.flink.streaming.api.datastream.DataStream;
import org.apache.flink.streaming.api.environment.StreamExecutionEnvironment;
import org.apache.flink.table.api.bridge.java.StreamTableEnvironment;
import org.springframework.stereotype.Service;

@Service
public class FlinkCdcService {
    public void startDataStreaming() {
        final StreamExecutionEnvironment env = StreamExecutionEnvironment.getExecutionEnvironment();
        final StreamTableEnvironment tableEnv = StreamTableEnvironment.create(env);
        // 使用 Flink CDC 连接 MySQL
        String name = "inventory";
        tableEnv.executeSql("CREATE TABLE " + name + " ("
                + " id INT,"
                + " name STRING,"
                + " description STRING,"
                + " weight DECIMAL(10, 3)"
                + ") WITH ("
                + " 'connector' = 'mysql-cdc',"
                + " 'hostname' = 'localhost',"
                + " 'port' = '3306',"
                + " 'username' = 'your_username',"
                + " 'password' = 'your_password',"
                + " 'database-name' = 'your_database',"
                + " 'table-name' = 'your_table'"
                + ")");
        // 查询并打印结果
        DataStream<String> dataStream = tableEnv.sqlQuery("SELECT * FROM " + name).execute().print();
        try {
            env.execute("Flink CDC Demo");
        } catch (Exception e) {
            e.printStackTrace();
        }
    }
}

6. 启动 Spring Boot 应用

在你的 Spring Boot 应用的启动类中调用 FlinkCdcService 的 startDataStreaming 方法来启动数据追踪:

import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.boot.CommandLineRunner;
import org.springframework.boot.SpringApplication;
import org.springframework.boot.autoconfigure.SpringBootApplication;

@SpringBootApplication
public class FlinkCdcApplication implements CommandLineRunner {
    @Autowired
    private FlinkCdcService flinkCdcService;

    public static void main(String[] args) {
        SpringApplication.run(FlinkCdcApplication.class, args);
    }

    @Override
    public void run(String... args) throws Exception {
        flinkCdcService.startDataStreaming();
    }
}

7. 运行并测试

运行 Spring Boot 应用,并在 MySQL 数据库中做出一些数据变动。你应该能在控制台看到实时打印的数据变动。

目录

  1. SpringBoot 整合 Flink CDC,实时追踪 MySQL 数据变动
  2. 前言
  3. 1. MySQL 开启 Binlog
  4. 2. 创建 Spring Boot 项目
  5. 3. 添加依赖
  6. 4. 配置 Flink 和 MySQL CDC
  7. 5. 实现数据实时追踪
  8. 6. 启动 Spring Boot 应用
  9. 7. 运行并测试
  • 免费图片AI生成工具免费生成了解详情
  • Magick API 一键接入全球大模型注册送1000万token查看
  • 免费图片视频在线生成30秒,将你的创意变成现实开始设计
  • X/Twitter免费视频下载器免登陆无限额度免费视频解析下载了解详情
  • 100+免费在线小游戏爽一把
极客日志微信公众号二维码

微信扫一扫,关注极客日志

微信公众号「极客日志V2」,在微信中扫描左侧二维码关注。展示文案:极客日志V2 zeeklog

更多推荐文章

查看全部
  • C++ 入门实战指南:从环境搭建到核心概念解析
  • faster-whisper 语音转文字工具入门与性能优化
  • 荣耀发布 Robot Phone 与人形机器人,构建 AI 硬件生态
  • SystemVerilog 教程:从基础概念到高级验证
  • Spring Boot 拦截器详解与实战
  • Spring 常用配置与高级话题
  • 自然语言处理在金融领域的应用与实战
  • 开源模型落地实战:Qwen1.5-7B-Chat LoRA 微调进阶
  • 从零开始学习大模型:如何构建与部署开源大语言模型
  • 冒泡排序与选择排序的 C 语言实现及思想解析
  • JavaScript DOM 元素操作:添加、删除、替换与插入详解
  • C++ 数据类型详解:字符、整型与浮点型
  • Java 基础教程:构造方法、对象创建及 this 关键字详解
  • Java 异常基础概念与处理机制
  • Qwen-VL 多模态大模型在自定义数据上的微调与部署指南
  • stable-diffusion-webui 照片艺术化风格迁移教程
  • SQL Server 2016 及 Management Studio 安装指南
  • 数据结构:双向链表概念与实现
  • MiroFish:基于群体智能的万物预测引擎
  • 网络安全行业前景深度解析与入行路径建议

相关免费在线工具

  • Keycode 信息

    查找任何按下的键的javascript键代码、代码、位置和修饰符。 在线工具,Keycode 信息在线工具,online

  • Escape 与 Native 编解码

    JavaScript 字符串转义/反转义;Java 风格 \uXXXX(Native2Ascii)编码与解码。 在线工具,Escape 与 Native 编解码在线工具,online

  • JavaScript / HTML 格式化

    使用 Prettier 在浏览器内格式化 JavaScript 或 HTML 片段。 在线工具,JavaScript / HTML 格式化在线工具,online

  • JavaScript 压缩与混淆

    Terser 压缩、变量名混淆,或 javascript-obfuscator 高强度混淆(体积会增大)。 在线工具,JavaScript 压缩与混淆在线工具,online

  • Base64 字符串编码/解码

    将字符串编码和解码为其 Base64 格式表示形式即可。 在线工具,Base64 字符串编码/解码在线工具,online

  • Base64 文件转换器

    将字符串、文件或图像转换为其 Base64 表示形式。 在线工具,Base64 文件转换器在线工具,online