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

大数据Flink(一百二十二):阿里云Flink MySQL连接器介绍

文章目录

阿里云Flink MySQL连接器介绍

一、特色功能

二、​​​​​​​语法结构

三、​​​​​​​​​​​​​​WITH参数


阿里云Flink MySQL连接器介绍

阿里云提供了MySQL连接器,其作为源表时,扮演的就是flink cdc的角色。

一、特色功能

MySQL的CDC源表,即MySQL的流式源表,会先读取数据库的历史全量数据,并平滑切换到Binlog读取上,保证不多读一条也不少读一条数据。即使发生故障,也能保证通过Exactly Once语义处理数据。MySQL CDC源表支持并发地读取全量数据,通过增量快照算法实现了全程无锁和断点续传。

作为源表,支持以下功能特性。

  • 流批一体,支持读取全量和增量数据,无需维护两套流程。
  • 支持并发读取全量数据,性能水平扩展。
  • 全量读取无缝切换增量读取,自动缩容,节省计算资源。
  • 全量阶段读取支持断点续传,更稳定。
  • 无锁读取全量数据,不影响在线业务。

二、​​​​​​​​​​​​​​语法结构

CREATE TABLE mysqlcdc_source (order_id INT,order_date TIMESTAMP(0),customer_name STRING,price DECIMAL(10, 5),product_id INT,order_status BOOLEAN,PRIMARY KEY(order_id) NOT ENFORCED
) WITH ('connector' = 'mysql','hostname' = '<yourHostname>','port' = '3306','username' = '<yourUsername>','password' = '<yourPassword>','database-name' = '<yourDatabaseName>','table-name' = '<yourTableName>'
);

 

三、​​​​​​​​​​​​​​WITH参数

  • 通用

参数

说明

是否必填

数据类型

默认值

备注

connector

表类型。

STRING

作为源表时,可以填写为mysql-cdc或者mysql,二者等价。作为维表或结果表时,固定值为mysql

hostname

MySQL数据库的IP地址或者Hostname。

STRING

建议填写专有网络VPC地址。

username

MySQL数据库服务的用户名。

STRING

无。

password

MySQL数据库服务的密码。

STRING

无。

database-name

MySQL数据库名称。

STRING

  1. 作为源表时,数据库名称支持正则表达式以读取多个数据库的数据。
  2. 使用正则表达式时,尽量不要使用^和$符号匹配开头和结尾。具体原因详见table-name备注的说明。

table-name

MySQL表名。

STRING

  1. 作为源表时,表名支持正则表达式以读取多个表的数据。
  2. 使用正则表达式时,尽量不要使用^和$符号匹配开头和结尾。具体原因详见以下说明。

说明:MySQL CDC源表在正则匹配表名时,会将您填写的 database-name,table-name 通过字符串 \\.(VVR 8.0.1前使用字符.)连接成为一个全路径的正则表达式,然后使用该正则表达式和MySQL数据库中表的全限定名进行正则匹配。例如:当配置'database-name'='db_.*'且'table-name'='tb_.+'时,连接器将会使用正则表达式db_.*\\.tb_.+(8.0.1版本前为db_.*.tb_.+)去匹配表的全限定名来确定需要读取的表。

port

MySQL数据库服务的端口号。

INTEGER

3306

无。

  • 源表独有

参数

说明

是否必填

数据类型

默认值

备注

server-id

数据库客户端的一个数字ID。

STRING

默认会随机生成一个5400~6400的值。

该ID必须是MySQL集群中全局唯一的。建议针对同一个数据库的每个作业都设置一个不同的ID。

该参数也支持ID范围的格式,例如5400-5408。在开启增量读取模式时支持多并发读取,此时推荐设定为ID范围,使得每个并发使用不同的ID。

scan.incremental.snapshot.enabled

是否开启增量快照。

BOOLEAN

true

默认开启增量快照。增量快照是一种读取全量数据快照的新机制。与旧的快照读取相比,增量快照有很多优点,包括:

  1. 读取全量数据时,Source可以是并行读取。
  2. 读取全量数据时,Source支持chunk粒度的检查点。
  3. 读取全量数据时,Source不需要获取全局读锁(FLUSH TABLES WITH read lock)。

如果您希望Source支持并发读取,每个并发的Reader需要有一个唯一的服务器ID,因此server-id必须是5400-6400这样的范围,并且范围必须大于等于并发数。

scan.incremental.snapshot.chunk.size

表的chunk的大小(行数)。

INTEGER

8096

当开启增量快照读取时,表会被切分成多个chunk读取。在读完chunk的数据之前,chunk的数据会先缓存在内存中,因此chunk 太大,可能导致内存OOM。chunk越小,故障恢复的粒度也越小,但也会降低吞吐。

scan.snapshot.fetch.size

当读取表的全量数据时,每次最多拉取的记录数。

INTEGER

1024

无。

scan.startup.mode

消费数据时的启动模式。

STRING

initial

参数取值如下:

  1. initial(默认):在第一次启动时,会先扫描历史全量数据,然后读取最新的Binlog数据。
  2. latest-offset:在第一次启动时,不会扫描历史全量数据,直接从Binlog的末尾(最新的Binlog处)开始读取,即只读取该连接器启动以后的最新变更。
  3. earliest-offset:不扫描历史全量数据,直接从可读取的最早Binlog开始读取。
  4. specific-offset:不扫描历史全量数据,从您指定的Binlog位点启动,位点可通过配置scan.startup.specific-offset.filescan.startup.specific-offset.pos的方式来指定从特定Binlog文件名和偏移量启动,也可以通过配置scan.startup.specific-offset.gtid-set指定从某个GTID集合启动。
  5. timestamp:不扫描历史全量数据,从指定的时间戳开始读取Binlog。时间戳通过scan.startup.timestamp-millis指定,单位为毫秒。

scan.startup.specific-offset.file

使用指定位点模式启动时,启动位点的Binlog文件名。

STRING

使用该配置时,scan.startup.mode必须配置为specific-offset。文件名格式例如mysql-bin.000003

scan.startup.specific-offset.pos

使用指定位点模式启动时,启动位点在指定Binlog文件中的偏移量。

INTEGER

使用该配置时,scan.startup.mode必须配置为specific-offset

scan.startup.specific-offset.gtid-set

使用指定位点模式启动时,启动位点的GTID集合。

STRING

使用该配置时,scan.startup.mode必须配置为specific-offset。GTID集合格式例如24DA167-0C0C-11E8-8442-00059A3C7B00:1-19

scan.startup.timestamp-millis

使用指定时间模式启动时,启动位点的毫秒时间戳。

LONG

使用该配置时,scan.startup.mode必须配置为timestamp。时间戳单位为毫秒。

重要:在使用指定时间时,MySQL CDC会从最早Binlog开始读取,直至Binlog事件的时间戳大于等于指定的时间戳后开始向下游发送数据。因此请保证指定的时间戳对应的Binlog文件在数据库上没有被清理且可以被读取到。

server-time-zone

数据库在使用的会话时区。

VVR-6.0.2以下版本必填,其他版本选填

STRING

如果您没有指定该参数,则系统默认使用Flink作业运行时的环境时区作为数据库服务器时区,即您选择的可用区所在的时区。

例如Asia/Shanghai,该参数控制了MySQL中的TIMESTAMP类型如何转成STRING类型。更多信息请参见Debezium时间类型

debezium.min.row.count.to.stream.results

当表的条数大于该值时,会使用分批读取模式。

INTEGER

1000

Flink采用以下方式读取MySQL源表数据:

  1. 全量读取:直接将整个表的数据读取到内存里。优点是速度快,缺点是会消耗对应大小的内存,如果源表数据量非常大,可能会有OOM风险。
  2. 分批读取:分多次读取,每次读取一定数量的行数,直到读取完所有数据。优点是读取数据量比较大的表没有OOM风险,缺点是读取速度相对较慢。

connect.timeout

连接MySQL数据库服务器超时时,重试连接之前等待超时的最长时间。

DURATION

30s

无。

connect.max-retries

连接MySQL数据库服务时,连接失败后重试的最大次数。

INTEGER

3

无。

connection.pool.size

数据库连接池大小。

INTEGER

20

数据库连接池用于复用连接,可以降低数据库连接数量。

jdbc.properties.*

JDBC URL中的自定义连接参数。

STRING

您可以传递自定义的连接参数,例如不使用SSL协议,则可配置为'jdbc.properties.useSSL' = 'false'

支持的连接参数请参见Mysql Configuration Properties

heartbeat.interval

Source通过心跳事件推动Binlog位点前进的时间间隔。

DURATION

30s

心跳事件用于推动Source中的Binlog位点前进,这对MySQL中更新缓慢的表非常有用。对于更新缓慢的表,Binlog位点无法自动前进,通过够心跳事件可以推到Binlog位点前进,可以避免Binlog位点不前进引起Binlog位点过期问题,Binlog位点过期会导致作业失败无法恢复,只能无状态重启。

scan.incremental.snapshot.chunk.key-column

可以指定某一列作为快照阶段切分分片的切分列。

见备注列。

STRING

  1. 无主键表必填,选择的列必须是非空类型(NOT NULL)。
  2. 有主键的表为选填,仅支持从主键中选择一列。

说明:仅Flink计算引擎VVR 6.0.7及以上版本支持。

rds.region-id

RDS实例所在的地域 ID。

使用读取OSS归档日志功能时必填。

STRING

仅Flink计算引擎VVR 6.0.7及以上版本支持。

地域ID请参见地域和可用区

rds.access-key-id

阿里云账号Access Key ID。

使用读取OSS归档日志功能时必填。

STRING

仅Flink计算引擎VVR 6.0.7及以上版本支持。

rds.access-key-secret

阿里云账号Access Key Secret。

使用读取OSS归档日志功能时必填。

STRING

仅Flink计算引擎VVR 6.0.7及以上版本支持。

rds.db-instance-id

RDS实例ID。

使用读取OSS归档日志功能时必填。

STRING

仅Flink计算引擎VVR 6.0.7及以上版本支持。

scan.incremental.close-idle-reader.enabled

是否在快照结束后关闭空闲的 Reader。

BOOLEAN

false

  1. 仅Flink计算引擎VVR 8.0.1及以上版本支持。
  2. 该配置生效需要设置execution.checkpointing.checkpoints-after-tasks-finish.enabled为true。

  • 📢博客主页:https://lansonli.blog.csdn.net
  • 📢欢迎点赞 👍 收藏 ⭐留言 📝 如有错误敬请指正!
  • 📢本文由 Lansonli 原创,首发于 CSDN博客🙉
  • 📢停下休息的时候不要忘了别人还在奔跑,希望大家抓紧时间学习,全力奔赴更美好的生活✨

相关文章:

大数据Flink(一百二十二):阿里云Flink MySQL连接器介绍

文章目录 阿里云Flink MySQL连接器介绍 一、特色功能 二、​​​​​​​语法结构 三、​​​​​​​​​​​​​​WITH参数 阿里云Flink MySQL连接器介绍 阿里云提供了MySQL连接器&#xff0c;其作为源表时&#xff0c;扮演的就是flink cdc的角色。 一、特色功能 MySQ…...

FutureTask源码分析

Thread类的run方法返回值类型是void&#xff0c;因此我们无法直接通过Thread类获取线程执行结果。如果要获取线程执行结果就需要使用FutureTask。用法如下&#xff1a; class CallableImpl implements Callable{Overridepublic Object call() throws Exception {//do somethin…...

Highcharts甘特图基本用法(highcharts-gantt.js)

参考官方文档&#xff1a; https://www.highcharts.com/docs/gantt/getting-started-gantt https://www.highcharts.com/demo/gantt/project-management https://www.hcharts.cn/demo/gantt 链接在下面按需引入 https://code.highcharts.com/gantt/highcharts-gantt.js htt…...

【Linux庖丁解牛】—Linux基本指令(上)!

&#x1f308;个人主页&#xff1a;秋风起&#xff0c;再归来~&#x1f525;系列专栏&#xff1a; Linux庖丁解牛 &#x1f516;克心守己&#xff0c;律己则安 目录 1、 pwd命令 2、ls 指令 3、cd 指令 4、Linux下的根目录 5、touch指令 6、 stat指令 7、mkdi…...

node.js 中的进程和线程工作原理

本文所有的代码均基于 node.js 14 LTS 版本分析 概念 进程是对正在运行中的程序的一个抽象&#xff0c;是系统进行资源分配和调度的基本单位&#xff0c;操作系统的其他所有内容都是围绕着进程展开的 线程是操作系统能够进行运算调度的最小单位&#xff0c;其是进程中的一个执…...

Qt/C++ TCP调试助手V1.1 新增图像传输与接收功能(附发布版下载链接)

发布版本链接 通过百度网盘分享的文件&#xff1a;TCP调试助手V1.zip&#xff08;含客户端与服务器&#xff09; 链接&#xff1a;https://pan.baidu.com/s/14LTRPChPhYdwp_s6KeyBiA?pwdcedu 提取码&#xff1a;cedu 基于Qt/C实现了一款功能丰富的TCP服务器与客户端调试助手…...

DNS解析流程

DNS解析流程&#xff1a; 浏览器DNS缓存&#xff1a; 当我们在浏览器中访问某个域名时&#xff0c;浏览器首先会检查自己内部的DNS缓存&#xff0c;看是否有该域名的对应IP地址。如果有&#xff0c;直接使用缓存中的IP地址&#xff0c;跳过后续步骤。 本地系统DNS缓存&#xf…...

[PTA]7-1 藏头诗

[PTA]7-1 藏头诗 本题要求编写一个解密藏头诗的程序。 注&#xff1a;在 2022 年 7 月 14 日 16 点 50 分以后&#xff0c;该题数据修改为 UTF-8 编码。 输入格式&#xff1a; 输入为一首中文藏头诗&#xff0c;一共四句&#xff0c;每句一行。注意&#xff1a;一个汉字占三…...

每日OJ题_牛客_WY22 Fibonacci数列(斐波那契)

目录 牛客_WY22 Fibonacci数列&#xff08;斐波那契&#xff09; 解析代码 牛客_WY22 Fibonacci数列&#xff08;斐波那契&#xff09; Fibonacci数列_牛客题霸_牛客网 解析代码 求斐波那契数列的过程中&#xff0c;判断⼀下&#xff1a;何时 n 会在两个 fib 数之间。 #in…...

SQL 查询语句汇总

在软件开发和数据分析中&#xff0c;SQL&#xff08;结构化查询语言&#xff09;是与数据库交互的重要工具。为了更好地理解 SQL 查询语句的使用&#xff0c;本文将设计一个简单的数据库&#xff0c;包括几张表&#xff0c;并通过这些表展示各种 SQL 查询的应用。 一、背景信息…...

封装一个语言识别文字的方法

语音识别 需求&#xff1a; 参考官方文档&#xff0c;整合语音识别apicallback 的写法改为 Promise 的版本 在startRecord中&#xff1a; 参考文档实例化-开启转换将录制的内容传递给录音识别回调函数中的 Log&#xff0c;改为 Logger 在closeRecord&#xff1a; 结束识别…...

解决 iOS App Tracking Transparency 权限问题

解决 iOS App Tracking Transparency 权限问题 在 iOS 14 及更高版本中&#xff0c;Apple 引入了 App Tracking Transparency (ATT) 框架&#xff0c;要求应用在跟踪用户之前必须获得用户的明确许可。这通常涉及到访问用户的广告标识符&#xff08;IDFA&#xff09;。如果没有…...

ClickHouse 的底层架构和原理

ClickHouse 是一个用于实时分析和处理大规模数据的列式数据库&#xff0c;其设计目标是高效地处理海量数据的查询需求。它特别适合 OLAP&#xff08;Online Analytical Processing&#xff09;场景&#xff0c;能够在不依赖复杂的索引结构的情况下&#xff0c;实现极快的查询速…...

rtmp推流

获取摄像头名称 打开命令行工具&#xff0c;运行以下命令以列出所有可用的视频设备&#xff1a; ffmpeg -f dshow -list_devices true -i dummy查找输出中的“Video devices”部分&#xff0c;记录下你的摄像头名称。 构建推流命令 ffmpeg -f dshow -i video"摄像头名称…...

【数据库】死锁排查方式

定位 查是否锁表 select username,lockwait,status,machine,program from v$session where sid in (select session_id from v$locked_object); 查锁表sql select sql_text from v$sql where hash_value in (select sql_hash_value from v$session where sid in (select s…...

去耦合的一些建议

尽量少用全局变量&#xff0c;以减少状态共享和潜在的副作用。 模块化设计&#xff1a;将代码分成小模块&#xff0c;每个模块独立实现特定功能&#xff0c;减少模块之间的相互依赖。 封装&#xff1a;将数据和操作封装在类中&#xff0c;控制对内部状态的访问&#xff0c;避…...

SpringBoot+Thymeleaf图书管理系统

一、项目介绍 > 这是一个基于SpringBootThymeleaf实现的图书管理系统。 > 包含图书管理、作者管理、分类管理、出版社管理等功能。 > 界面简洁美观&#xff0c;代码结构清晰&#xff0c;完成度比较高&#xff0c;适用于JAVA初学者作为参考项目。 二、项目演示 三…...

TDengine 签约前晨汽车,解锁智能出行的无限潜力

在全球汽车产业转型升级的背景下&#xff0c;智能网联和新能源技术正迅速成为商用车行业的重要发展方向。随着市场对环保和智能化需求的日益增强&#xff0c;企业必须在技术创新和数据管理上不断突破&#xff0c;以满足客户对高效、安全和智能出行的期待。在这一背景下&#xf…...

模板字符串中定义方法并传参

遇到一个使用js es6的模板字符串进行事件绑定和传参的问题&#xff0c;这个问题的引起是因为使用innerHTML插入了一大串html并进行事件的绑定和传参。 以react为例&#xff0c;写一个demo记录一下 模板字符串中写方法的话需要用onclick来定义&#xff0c;传参需要这么写${char…...

Numpy 数组元素添加与元素删除函数详解

元素添加 Numpy中有类似python列表操作函数append()及insert()&#xff0c;但是用法稍有不同&#xff0c;append()及insert()不作为数组的实例方法使用。 np.append() np.append()的参数如下 def append(arr, values, axisNone): 其中&#xff0c;arr为数组对象&#xff0…...

浏览器访问 AWS ECS 上部署的 Docker 容器(监听 80 端口)

✅ 一、ECS 服务配置 Dockerfile 确保监听 80 端口 EXPOSE 80 CMD ["nginx", "-g", "daemon off;"]或 EXPOSE 80 CMD ["python3", "-m", "http.server", "80"]任务定义&#xff08;Task Definition&…...

Python爬虫实战:研究MechanicalSoup库相关技术

一、MechanicalSoup 库概述 1.1 库简介 MechanicalSoup 是一个 Python 库,专为自动化交互网站而设计。它结合了 requests 的 HTTP 请求能力和 BeautifulSoup 的 HTML 解析能力,提供了直观的 API,让我们可以像人类用户一样浏览网页、填写表单和提交请求。 1.2 主要功能特点…...

django filter 统计数量 按属性去重

在Django中&#xff0c;如果你想要根据某个属性对查询集进行去重并统计数量&#xff0c;你可以使用values()方法配合annotate()方法来实现。这里有两种常见的方法来完成这个需求&#xff1a; 方法1&#xff1a;使用annotate()和Count 假设你有一个模型Item&#xff0c;并且你想…...

【CSS position 属性】static、relative、fixed、absolute 、sticky详细介绍,多层嵌套定位示例

文章目录 ★ position 的五种类型及基本用法 ★ 一、position 属性概述 二、position 的五种类型详解(初学者版) 1. static(默认值) 2. relative(相对定位) 3. absolute(绝对定位) 4. fixed(固定定位) 5. sticky(粘性定位) 三、定位元素的层级关系(z-i…...

《通信之道——从微积分到 5G》读书总结

第1章 绪 论 1.1 这是一本什么样的书 通信技术&#xff0c;说到底就是数学。 那些最基础、最本质的部分。 1.2 什么是通信 通信 发送方 接收方 承载信息的信号 解调出其中承载的信息 信息在发送方那里被加工成信号&#xff08;调制&#xff09; 把信息从信号中抽取出来&am…...

Keil 中设置 STM32 Flash 和 RAM 地址详解

文章目录 Keil 中设置 STM32 Flash 和 RAM 地址详解一、Flash 和 RAM 配置界面(Target 选项卡)1. IROM1(用于配置 Flash)2. IRAM1(用于配置 RAM)二、链接器设置界面(Linker 选项卡)1. 勾选“Use Memory Layout from Target Dialog”2. 查看链接器参数(如果没有勾选上面…...

Axios请求超时重发机制

Axios 超时重新请求实现方案 在 Axios 中实现超时重新请求可以通过以下几种方式&#xff1a; 1. 使用拦截器实现自动重试 import axios from axios;// 创建axios实例 const instance axios.create();// 设置超时时间 instance.defaults.timeout 5000;// 最大重试次数 cons…...

OD 算法题 B卷【正整数到Excel编号之间的转换】

文章目录 正整数到Excel编号之间的转换 正整数到Excel编号之间的转换 excel的列编号是这样的&#xff1a;a b c … z aa ab ac… az ba bb bc…yz za zb zc …zz aaa aab aac…; 分别代表以下的编号1 2 3 … 26 27 28 29… 52 53 54 55… 676 677 678 679 … 702 703 704 705;…...

嵌入式学习之系统编程(九)OSI模型、TCP/IP模型、UDP协议网络相关编程(6.3)

目录 一、网络编程--OSI模型 二、网络编程--TCP/IP模型 三、网络接口 四、UDP网络相关编程及主要函数 ​编辑​编辑 UDP的特征 socke函数 bind函数 recvfrom函数&#xff08;接收函数&#xff09; sendto函数&#xff08;发送函数&#xff09; 五、网络编程之 UDP 用…...

DAY 26 函数专题1

函数定义与参数知识点回顾&#xff1a;1. 函数的定义2. 变量作用域&#xff1a;局部变量和全局变量3. 函数的参数类型&#xff1a;位置参数、默认参数、不定参数4. 传递参数的手段&#xff1a;关键词参数5 题目1&#xff1a;计算圆的面积 任务&#xff1a; 编写一…...