FlinkCDC第四部分-同步mysql到mysql,ctrl就完事~(flink版本1.17.1)

news2025/1/4 19:42:56

 本文介绍了不同源单表-单表同步,不同源多表-单表同步。

注:此版本支持火焰图

Flink版本:1.17.1

环境:Linux CentOS 7.0、jdk1.8

基础文件:

flink-1.17.1-bin-scala_2.12.tgz、

flink-connector-jdbc-3.0.0-1.16.jar、(maven仓库目录:corg.apache.flink/flink-connector-jdbc/3.0.0-1.16)

flink-sql-connector-mysql-cdc-2.3.0.jar、(maven仓库目录:com.ververica/flink-sql-connector-mysql-cdc/2.3.0)
安装Flink步骤详见文章第二篇

支持的mysql版本: 

一、 数据源ip为***.51的源表,同步数据到数据源ip为***.50的目标表中,需要以下几个步骤:

1. 启动flink服务:

[root@localhost bin]#  ./start-cluster.sh

2. 停止flink服务:

[root@localhost bin]#  ./stop-cluster.sh

3. 启动FinkSQL:

[root@localhost bin]# ./sql-client.sh

4. 编写FlinkSql,创建临时表和job:

FlinkSql与mysql字段的类型映射

 把写好的Sql粘贴到FlinkSql客户端命令行中,分号'  ;  '是语句结束标识符,按回车创建:

 创建来源表结构:

来源表链接类型为'connector' = 'mysql-cdc'

Flink SQL> CREATE TABLE source_alarminfo51 (
>   id STRING NOT NULL,
>   AlarmTypeID STRING,
>   `Time` timestamp,
>   PRIMARY KEY (`id`) NOT ENFORCED
>  ) WITH (
>     'connector' = 'mysql-cdc',
>     'hostname' = '***',
>     'port' = '3306',
>     'username' = '***',
>     'password' = '***',
>     'database-name' = 'alarm',
>     'server-time-zone' = 'Asia/Shanghai',
>     'table-name' = 'alarminfo'
>  );

[INFO] Execute statement succeed.

 创建目标表结构(目标表结构可比来源表字段多,可使用视图指定字段默认值):

目标表链接类型为'connector' = 'jdbc',注意url需要跟后面以下属性值

Flink SQL> CREATE TABLE target_alarminfo50 (
>   id STRING NOT NULL,
>   AlarmTypeID STRING,
>   `Time` timestamp
>   PRIMARY KEY (`id`) NOT ENFORCED
>  ) WITH (
>     'connector' = 'jdbc',
>     'url' = 'jdbc:mysql://***:3306/alarm?useUnicode=true&characterEncoding=UTF-8&zeroDateTimeBehavior=convertToNull&tinyInt1isBit=false&serverTimezone=Asia/Shanghai&useSSL=true&dontTrackOpenResources=true&defaultFetchSize=10000&useCursorFetch=true',
>     'username' = '***',
>     'password' = '****',
>     'table-name' = 'alarminfo',
>     'driver' = 'com.mysql.cj.jdbc.Driver'
>  );

[INFO] Execute statement succeed.

 最后创建同步关系:

INSERT INTO target_alarminfo50 SELECT * FROM source_alarminfo51;

如下:

创建完表结构可使用下列语句查看和删除:

查看表:show tables;

删除表:drop table if exists  target_alarminfo; 

flink-UI页面效果:

打开火焰图:

编辑flink-conf.yaml:最后面添加 

rest.flamegraph.enabled: true

配置后重启flink服务,重新创建任务。

火焰图效果:

数据同步效果:

源表:

目标表数据:首次数据全量,后面数据变更增量 

 注:

在分析火焰图时,可以关注以下几点:
函数的执行时间:纵向的轴显示了函数的嵌套层级,越往下表示越深层的函数调用。横向轴表示时间,通过不同颜色的方块来表示函数的执行时间。
热点函数:寻找占据执行时间大部分的函数,这些函数可能是需要优化的关键点。
函数之间的关系:观察函数之间的调用关系,查看是否有不必要的函数调用或循环。
I/O 操作:关注是否有大量的数据读取、写入或网络通信,这可能是性能瓶颈的来源。
根据火焰图的分析结果,您可以进一步定位和排查潜在的性能问题,并在代码、配置或资源分配方面进行优化。
请注意,为了准确分析火焰图,建议在负载较高的情况下生成火焰图,并保持足够的监视时间。此外,Flink 的火焰图功能在生产环境中可能会造成一定的开销,因此建议在测试或开发环境中使用。

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

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

LeetCode·每日一题·2544. 交替数字和·模拟

作者:小迅 链接:https://leetcode.cn/problems/alternating-digit-sum/solutions/2341276/mo-ni-zhu-shi-chao-ji-xiang-xi-by-xun-ge-7fjq/ 来源:力扣(LeetCode) 著作权归作者所有。商业转载请联系作者获得授权&#…

产品经理学习画原型(三)

1.布尔运算的使用 合并必须选择两个及以上元件 合并后: 组合: 去除顶层:

【基于FPGA的芯片设计】32位RISC-V存储器

实验板卡:xc7a100tlc sg324-2L,共20个开关 实验要求

述往思来,砥砺前行—易我文化系列课《企业发展历程》讲座圆满举行

2023年6月9日,易我文化系列课《企业发展历程》讲座如期举行并取得圆满成功。 此次讲座邀请了易我客服总监——喻涛为大家授课,旨在让员工对易我的历史、发展以及未来有更全面的认识,引导员工从易我发展史中汲取奋进力量,增强集体…

【kubernetes系列】Kubernetes之ServiceAccount

概述 Service Account是什么呢,顾名思义,服务账号,一种给服务使用的账号,它不是给Kubernetes的集群的用户(系统管理员、运维人员、租户用户等)使用,而是给运行在Pod里的进程用的,它…

【雕爷学编程】Arduino动手做(113)---5110液晶屏模块2

37款传感器与执行器的提法,在网络上广泛流传,其实Arduino能够兼容的传感器模块肯定是不止这37种的。鉴于本人手头积累了一些传感器和执行器模块,依照实践出真知(一定要动手做)的理念,以学习和交流为目的&am…

基于springboot+Redis的前后端分离项目(八)-【黑马点评】

🎁🎁资源文件分享 链接:https://pan.baidu.com/s/1189u6u4icQYHg_9_7ovWmA?pwdeh11 提取码:eh11 好友关注&Feed流 (一)好友关注-关注和取消关注(二)好友关注-共同关注(三) 好友…

飞行动力学 - 第7节-part1-起飞性能 之 基础点摘要

飞行动力学 - 第7节-part1-起飞性能 之 基础点摘要 1. 气动特性2. 起飞性能3. 性能指标3.1 地面滑跑阶段3.2 起飞滑跑距离估算 4. 跑道4.1 编号4.2 等级 5. 参考资料 1. 气动特性 起飞不仅需要考虑升力,还需要在有限跑道长度上加速,因此襟翼放出的角度不…

3Ds max入门教程:创建尼亚加拉大瀑布模型

推荐: NSDT场景编辑器助你快速搭建可二次开发的3D应用场景 初学者在3ds Max中为尼亚加拉大瀑布建模 这次您将学习通过几个简单的步骤在3ds max中对尼亚加拉大瀑布(从远处看起来很逼真)进行建模。所以,让我们开始吧! …

JavaScript定时器(setTimeout和setInterval)的用法技巧

1.满足特定条件时才执行后续步骤。 核心代码: //初始化let isPass false;//只有满足特定条件(在这里为:isPass为true时)时,才执行下一步操作let timeout setInterval(() > {if (isPass) {//这里写要执行的后续方…

Kubernetes 入门篇上

❖ Kubernetes核心概念 ❖ 快速部署一个Kubernetes集群 ❖ Kubernetes将弃用Docker! ❖ kubectl管理工具 ❖ Kubernetes基本资源概念 ❖ 资源编排(YAML) ❖ 深入理解Pod对象:基本管理 ❖ 深入理解Pod对象:调度 …

Chapter 6: Loops and Iterations | Python for Everybody 讲义笔记_En

文章目录 Python for Everybody课程简介Loops and IterationsUpdating variablesThe while statementInfinite loopsFinishing iterations with continueDefinite loops using forLoop patternsCounting and summing loopsMaximum and minimum loopsDebuggingGlossary Python f…

Chapter 7: Strings | Python for Everybody 讲义笔记_En

文章目录 Python for Everybody课程简介StringsA string is a sequenceGetting the length of a string using lenTraversal through a string with a loopString slicesStrings are immutableLooping and countingThe in operatorString comparisonString methodsParsing stri…

x86平台实时Windows机器视觉EtherCAT运动控制器VPLC711

一、市场背景 简单易用,功能强大,正运动技术持续专注智能制造核心控制器的产品与平台的突破! 随着智能制造的兴起,制造型企业正面临着日益激烈的市场竞争和对生产效率与产品品质提升的迫切需求,以满足市场的要求。同…

详解自定义类型:结构体,枚举,联合

目录 结构体 结构体基础知识 结构的自引用 结构体内存对齐 结构体大小计算 存在内存对齐的原因 设计结构体时的技巧 修改默认对齐数 结构体实现位段(位段的填充&可移植性) 什么是位段 位段的内存分配 位段的跨平台问题 位段的应用 枚…

做数据库内核开发的人员很少吗?

是的,相对于其他领域的软件开发,数据库内核开发人员的数量确实相对较少。这是因为数据库内核开发是一项高度专业化和复杂的任务,需要深入理解数据库系统的原理、算法和底层技术。 我这里刚好有嵌入式、单片机、plc的资料需要可以私我或在评论…

和鲸数据科学专家平台正式成立,凝聚专家资源推进产业数字化升级

2015年,大数据与人工智能从技术到公众认知均迎来重大突破,全国首批“数据科学与大数据技术”专业获批 同年,和鲸科技的前身科赛网 Kesci 正式成立,从数据竞赛社区出发为“数据人”提供实践与成长的平台。 2023年,数据…

sql语句汇总

最近项目中接触到了mySql,把经常用到的MySql语句记录下来,方便以后随时查阅。 1.密码加密 表结构如下 INSERT INTO tbl_userinfo ( vc_accname,vc_username,vc_pwd,vc_phone,i_role_id,dt_creatTime) VALUES (%s,%s,AES_ENCRYPT((%s), Wang),%s,%d,NOW())该表主…

Shiro教程(二):Springboot整合Shiro全网最全教程

Shiro教程(二):Springboot整合Shiro全网最全教程 1、SpringBoot整合Shiro环境搭建 新建Module 新建springboot项目 选择一个依赖就行,因为这里idea版本的问题,SpringBoot的版本最低就是2.7.13。可以等项目创建成功之后…

无需下载任何软件!BurpSuite如何抓取iphone数据包

一、手机电脑处于同一个网段下 此处我的手机和电脑都处在X.X.1.X网段下 二、BurpSuite设置 添加代理 手机端配置代理 配置完点击存储 三、手机导入证书文件 手机端在Safari浏览器输入【电脑端ip:8080】 允许 在设置里打开 “已下载描述文件” 选择安装(因为我已…