Flink CDC(SQL Client)连接 MySQL 数据库教程

Flink CDC(SQL Client)连接 MySQL 数据库教程

这篇文章将指导如何使用 Flink CDC 连接到 MySQL 数据库,并捕获数据变更。我们将逐步完成以下操作:

1. 检查 Binlog 是否启用

首先,您需要确保 MySQL 的 Binlog 功能已经启用,因为 Flink CDC 依赖于 Binlog 来捕获数据变更。

-- 检查 Binlog 是否启用
SHOW VARIABLES LIKE 'log_bin';

如果 log_bin 返回的不是 ON 或者一个文件名,那么 Binlog 没有启用。

2. 检查 Binlog 格式

-- 检查 Binlog 格式
SHOW VARIABLES LIKE 'binlog_format';

确保 binlog_formatROW。如果不是,您需要修改配置以启用 Binlog 并设置正确的格式。

3. 开启 Binlog 并配置相关参数

如果 log_bin 的值为 OFF,这意味着 MySQL 的二进制日志(Binlog)功能没有开启。以下是开启 Binlog 并配置相关参数的步骤:

3.1 编辑 MySQL 配置文件

找到 MySQL 的配置文件 /etc/my.cn/

[mysqld] 部分添加或修改以下配置:

[mysqld]
log_bin = mysql-bin
binlog_format = ROW
server_id = 1
  • log_bin 设置 Binlog 的日志文件名前缀。
  • binlog_format 设置为 ROW,这是 Flink CDC 所需的格式。
  • server_id 设置为一个唯一的整数,用于标识 MySQL 服务器。

3.2 重启 MySQL 服务

保存配置文件后,重启 MySQL 服务以使更改生效。重启命令取决于您的操作系统:

  • 对于 Linux/Unix:

    sudo systemctl restart mysql
    

    或者

    sudo service mysql restart
    

4. 创建 CDC 用户

创建一个具有适当权限的 MySQL 用户,以便 Flink CDC 可以连接到 MySQL 数据库并监控数据变化:

CREATE USER 'flinkcdc'@'%' IDENTIFIED BY 'FlinkCDC_123456';
GRANT SELECT, SHOW DATABASES, REPLICATION SLAVE, REPLICATION CLIENT ON *.* TO 'flinkcdc' IDENTIFIED BY 'FlinkCDC_123456';
FLUSH PRIVILEGES;

5. 创建 MySQL 表和插入示例数据

以下是一个名为 users 的表,包含 id(主键)、name(姓名)和 age(年龄)三个字段的创建语句:

-- 创建数据库(如果不存在)
CREATE DATABASE IF NOT EXISTS cdc;
USE cdc;-- 创建表
CREATE TABLE users (id INT AUTO_INCREMENT PRIMARY KEY,name VARCHAR(50) NOT NULL,age INT NOT NULL
) ENGINE=InnoDB;-- 插入示例数据
INSERT INTO users (name, age) VALUES ('Alice', 30);
INSERT INTO users (name, age) VALUES ('Bob', 25);
INSERT INTO users (name, age) VALUES ('Charlie', 35);
INSERT INTO users (name, age) VALUES ('David', 40);
INSERT INTO users (name, age) VALUES ('Eve', 22);

6. 下载 Flink CDC JAR 包

下载 Flink CDC JAR 包并放到 Flink 安装目录下的 lib 目录中。您可以从 Maven 中央仓库下载 flink-sql-connector-mysql-cdc 2.3.0 版本:

Flink SQL Connector for MySQL CDC

请注意,官网提示下载的那个包缺少一些依赖在执行时会报错,需要下载 20M 以上的 JAR 包。

[ERROR] Could not execute SQL statement. Reason:
java.lang.ClassNotFoundException: com.ververica.cdc.debezium.utils.ResolvedSchemaUtils

7. 启动 Flink 集群

需要先启动 Flink 集群,否则后面会提示无法连接:[ERROR] Could not execute SQL statement. Reason:java.net.ConnectException: 拒绝连接

start-cluster.sh

8. 在 Flink SQL Client 中执行

打开 sql-client.sh 执行以下命令:

CREATE TABLE mysql_source (id INT NOT NULL,name STRING,age INT,PRIMARY KEY (id) NOT ENFORCED
) WITH ('connector' = 'mysql-cdc','hostname' = '192.168.56.152','port' = '3306','username' = 'flinkcdc','password' = 'FlinkCDC_123456','database-name' = 'cdc','table-name' = 'users'
);SELECT * FROM mysql_source;

通过以上步骤,您应该能够成功使用 Flink CDC 连接到 MySQL 数据库并捕获数据变更。如果在执行过程中遇到任何问题,请检查配置和网络设置,确保所有服务正常运行。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.rhkb.cn/news/470075.html

如若内容造成侵权/违法违规/事实不符,请联系长河编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

蓝凌OA-EKP hrStaffWebService 任意文件读取漏洞

0x01 产品描述: ‌ 蓝凌OA-EKP‌是由深圳市蓝凌软件股份有限公司自主研发的一款数字化办公系统,主要适用于大中型企业在线化办公。它集成了流程管理、知识管理、会议管理、公文管理、合同管理、费用管控等多个模块,旨在帮助企业解决基础…

管家婆财贸ERP BB059.银行流水导入对账

最低适用版本: C系列 22.8 插件简要功能说明: 系统支持按固定模板导入银行流水明细银行流水支持销售单、销售退货单快捷对账,按单生成收款单银行流水支持生成其他付款业务单据更多细节描述见下方详细文档插件操作视频: 进销存类定制插件--银行流水导入对账 插件详细功能文…

第8章利用CSS制作导航菜单

8.1 水平顶部导航栏 8.1.1 简单水平导航栏的设计与实现 <nav>标签是HTML5新增的文档结构标签&#xff0c;用于标即导航栏&#xff0c;以便后续与网站的其他其内容整合&#xff0c;使用常用<nav>标签在页面上创建导航栏菜单区域。 8.1.1.1导航栏的创建 <!DOC…

给查询业务添加redis缓存和缓存更新策略

目录 一、添加redis缓存的主要逻辑 二、代码 三、结果 四、缓存更新策略 五、代码 一、添加redis缓存的主要逻辑 在未添加缓存时&#xff0c;前端向后端发起查询请求时&#xff0c;后端收到请求就直接查数据库&#xff0c;它的速度如下&#xff1a; 其实速度也不慢&#…

【贪心算法】No.1---贪心算法(1)

文章目录 前言一、贪心算法&#xff1a;二、贪心算法示例&#xff1a;1.1 柠檬⽔找零1.2 将数组和减半的最少操作次数1.3 最⼤数1.4 摆动序列1.5 最⻓递增⼦序列1.6 递增的三元⼦序列 前言 &#x1f467;个人主页&#xff1a;小沈YO. &#x1f61a;小编介绍&#xff1a;欢迎来到…

无人机动力测试台如何快速外接第三方传感器

前言 动力测试台对于测试动力系统的拉力、扭矩、RPM 和效率至关重要。将传感器集成到您的测试中增加了另一层优化&#xff0c;可以将您的性能提升到一个新的水平。 在无人驾驶行业中&#xff0c;有充分的证据表明&#xff0c;从外部传感器收集数据可能具有挑战性。为了解决这…

【项目开发 | 跨域认证】JSON Web Token(JWT)

未经许可,不得转载。 文章目录 JWT设计背景:跨域认证JWT 原理JWT 结构JWT 使用方式注意JSON Web Token(缩写 JWT)是目前最流行的跨域认证解决方案,本文介绍它的原理、结构及用法。 JWT设计背景:跨域认证 互联网服务的用户认证流程是现代应用中的核心组成部分,通常的流程…

985研一学习日记 - 2024.11.12

一个人内耗&#xff0c;说明他活在过去&#xff1b;一个人焦虑&#xff0c;说明他活在未来。只有当一个人平静时&#xff0c;他才活在现在。 日常 1、起床6:00√ 2、健身2h 3、LeetCode刷了4题 无重叠区间 对于贪心算法&#xff0c;可以先对数组进行排序&#xff0c;然后再…

数学建模模型算法-Python实现

一、评价决策类 1、层次分析法&#xff08;AHP&#xff09; 层次分析法用来评价或选择一个更好更优的决策或方案 通过找到可以衡量其好坏的指标&#xff0c;进而衡量指标&#xff0c;再形成评价体系 归一化处理 让指标在同一数量级&#xff0c;且保证在同一指标下其差距保持…

洞察鸿蒙生态,把握开发新机遇

随着科技的不断进步&#xff0c;鸿蒙系统以其独特的分布式架构和跨设备协同能力&#xff0c;逐渐在智能手机、智能穿戴、车载、家居等多个领域崭露头角&#xff0c;与安卓、iOS形成三足鼎立之势。作为一名开发者&#xff0c;我对鸿蒙生态的认知和了解如下&#xff1a; 一、鸿蒙…

uniapp打包华为,提示请提供64位版本软件包后再提交审核

HBuilder项目打包需要配置勾选arm64-v8a,默认只会集成armeabi-v7a

信捷 PLC C语言 POU 指示灯交替灭0.5秒亮0.5秒(保持型定时器)

1.在全局变量表中定义2个定时器变量timer_1,timer_2 名称 类型 timer_1 TMR_A_FB False -- False False timer_2 TMR_A_FB False -- False False ot2 BOOL False -- False False ot2表示指示灯 …

Apache ECharts

目录 1. 基本概念 1.1 ECharts的主要特点有&#xff1a; 1.2 ECharts的图形绘制方式&#xff1a; 2. 基本使用 3. 图表容器的大小 4. Option常用配置项 1. 基础配置项 title 标题组件 tooltip提示框组件 legend 图例组件 2.坐标配置项 grid网格组件 xAxis 直角坐标…

NVIDIA NIM 简介

NVIDIA NIM 简介 NVIDIA NIM 是一组易于使用的微服务&#xff0c;旨在加速在云、数据中心和工作站中部署生成式 AI 模型。NIM 按模型系列和每个模型分类。例如&#xff0c;用于大型语言模型 (LLM) 的 NVIDIA NIM 将最先进的 LLM 的强大功能带入企业应用程序&#xff0c;提供无…

常用中间件介绍

1. RabbitMQ RabbitMQ是一个基于AMQP&#xff08;Advanced Message Queuing Protocol&#xff0c;高级消息队列协议&#xff09;的开源消息代理软件&#xff0c;实现了面向消息的中间件。它支持消息持久化、队列、交换机&#xff08;Exchange&#xff09;和绑定&#xff08;Bin…

AI写作(四)预训练语言模型:开启 AI 写作新时代(4/10)

一、预训练语言模型概述 ​ 预训练语言模型在自然语言处理领域占据着至关重要的地位。它以其卓越的语言理解和生成能力&#xff0c;成为众多自然语言处理任务的关键工具。 预训练语言模型的发展历程丰富而曲折。从早期的神经网络语言模型开始&#xff0c;逐渐发展到如今的大规…

《云原生安全攻防》-- K8s安全防护思路

从本节课程开始&#xff0c;我们将正式进入防护篇。通过深入理解K8s提供的多种安全机制&#xff0c;从防守者的角度&#xff0c;运用K8s的安全最佳实践来保障K8s集群的安全。 在这个课程中&#xff0c;我们将学习以下内容&#xff1a; K8s安全防护思路&#xff1a;掌握K8s自身提…

LLM之模型评估:情感评估/EQ评估/幻觉评估等

如果您想知道如何确保 LLM 在您的特定任务上表现出色&#xff0c;本指南适合您&#xff01;它涵盖了评估模型的不同方法、设计您自己的评估的指南以及来自实践经验的技巧和窍门。 Human-like Affective Cognition in Foundation Models&#xff1a;情感认知评估 研究者们提出了…

【JavaEE进阶】导读

本节⽬标 了解什么是JavaEE 在JavaEE中, 我们学习什么, 如何学, 难点是什么 一、Java EE 发展历程 Java EE(Java Platform Enterprise Edition), Java 平台企业版. 是JavaSE的扩展, ⽤于解决企业级的开发需求, 所以也可以称之为是⼀组⽤于企业开发的Java技术标准. 所以, 学习…

【韩老师零基础30天学会Java 】07章 面向对象编程(基础)

第七章 面向对象编程&#xff08;基础&#xff09; 1. 类与成员方法 类与对象关系示意图 示例&#xff1a;代码 import java.util.Scanner;public class IntDetail{public static void main(String[] args){Cat cat1new Cat();cat1.name"小花";cat1.age12;cat1.co…