Flink-CDC 抽取SQLServer问题总结

2023-09-18 13:54:18

Flink-CDC 抽取SQLServer问题总结

背景


flink-cdc 抽取数据到kafka 中,使用flink-sql进行开发,相关问题总结

flink-cdc 配置SQLServer cdc参数

  • 1.创建CDC 使用的角色, 并授权给其查询待采集数据数据库
 -- a.创建角色
create  role flink_role;
 -- b.授权给角色
grant select on SCHEMA::dbo to flink_role;
 -- c. 角色添加给数据库登陆用户
alter role flink_role add member 登陆用户;
  • 创建文件组,用于存储CDC捕获SQLServer需要的数据文件
 

-- a. 查询文件组是否存在

select name AS filegroup_name ,type as filegroup_type from sys.filegroups;

-- b.添加文件组
use 数据库
go 
alter database 数据库 add filegroup flinkFG
go

alter database 数据库 add file 
(
	NAME = rytbdat1,
	FILENAME = 'D:\MSSQL\Data\rtybdat1.ndf',
	SIZE = 50MB,
	MAXSIZE = 500MB,
	FILEGROWTH = 50MB
),
(
	NAME = rytbdat2,
	FILENAME = 'D:\MSSQL\Data\rtybdat2.ndf',
	SIZE = 50MB,
	MAXSIZE = 500MB,
	FILEGROWTH = 50MB
) TO FILEGROUP flinkFG;



--- 查看文件组
SELECT 
    name AS '文件逻辑名称',
    physical_name AS '物理文件路径',
    (size * 8 / 1024) AS '文件大小(MB)',
    max_size AS '最大文件大小(MB)',
    growth AS '文件增长量(MB)',
    type_desc AS '文件类型'
FROM sys.database_files;





  • 执行CDC配置,并检查是否成功
---  enable cdc  operation  for datbase 数据库 -------

--  ******  m_rec_save ******  --
USE 数据库
GO
EXEC sys.sp_cdc_enable_table
@source_schema = N'数据表名所在schema',     -- Specifies the schema of the source table.
@source_name   = N'数据表名', -- Specifies the name of the table that you want to capture.
@role_name     = N'flink_role',  -- Specifies a role MyRole to which you can add users to whom you want to grant SELECT permission on the captured columns of the source table. Users in the sysadmin or db_owner role also have access to the specified change tables. Set the value of @role_name to NULL, to allow only members in the sysadmin or db_owner to have full access to captured information.
@filegroup_name = N'flinkFG',-- Specifies the filegroup where SQL Server places the change table for the captured table. The named filegroup must already exist. It is best not to locate change tables in the same filegroup that you use for source tables.
@supports_net_changes = 0
GO


-- 检查数据库是否开启CDC配置

USE 数据库;
GO
EXEC sys.sp_cdc_help_change_data_capture
GO


-- 检查数据库下开启CDC配置的数据表
select is_cdc_enabled from sys.databases where name = '数据库';
  • 工具版本
Flink 1.15
Flink-CDC 2.3.0
SQLServer 2012

问题一: flink-cdc 参数不支持增量快照

在这里插入图片描述

  • 解决:选择合适的Flink-CDC文档,部分版本不支持增量快照

flink-cdc 2.3.0 : schema-name未指定

  • 解决,cdc参数添加 schema-name参数,指定SQLServer中数据库下面的schema名称
'connector' = 'sqlserver-cdc' ,
>         'hostname' = 'localhost' ,
>         'port' = '1433' ,
>         'username' = 'user',
>         'password' = 'password',
>         'database-name' = 'schema-name',
>         'schema-name' = 'dbo',
>        'table-name' = 'table_name'

锁超时

  • Caused by: com.microsoft.sqlserver.jdbc.SQLServerException: 已超过了锁请求超时时段。
    在这里插入图片描述

  • 定位思路

    • SQLServer查询阻塞进程
    
    

SELECT blocking_session_id ‘阻塞进程的ID’, wait_duration_ms ‘等待时间(毫秒)’, session_id ‘(会话ID)’ FROM sys.dm_os_waiting_tasks

![在这里插入图片描述](https://img-blog.csdnimg.cn/a561fceca1914b2b98fb51018664e50f.png)


- 确定所在服务器,假设上述阻塞进程ID为56
```
sp_who2 56

在这里插入图片描述

  • 登陆所在服务,杀死所在服务器进程
因为是sql-client提交的flink-cdc作业,所以从yarn-ui作业找到application_id,然后kill 

yarn app -kill applicationid
更多推荐

人工智能术语翻译(四)

文章目录摘要MNOP摘要人工智能术语翻译第四部分,包括M、N、O、P开头的词汇!M英文术语中文翻译常用缩写备注MachineLearningModel机器学习模型MachineLearning机器学习ML机器学习MachineTranslation机器翻译MTMacroAverage宏平均Macro-F1宏F1Macr

FFmpeg入门及编译

文章目录前言一、FFmpeg简介二、基本组成1、封装模块-AVFormat2、编解码模块-AVCodec3、滤镜模块-AVFilter4、视频图像转换计算模块-swscale5、音频转换计算模块-swresample6、AVUtil-核心工具库7、AVDevice-硬件采集,加速,显示三、命令行工具四、FFmpeg环境

jvm深入研究文档--java中的堆--详解!--jvm底层探索(1)

阿丹:JVM的内存分区包括以下几个部分:堆区(Heap)-这是JVM的主要部分,用于存储实例对象和大多数Java对象,如数组和用户定义的类。方法区(MethodArea)-这是线程私有的,用于存放类对象(加载好的类)。栈区(Stack)-这是线程私有的,包括虚拟机栈和本地方法栈。虚拟机栈用于保存调用关系的内存空间,而本

Linux学习之Redis使用

搭建Redis服务器在主机redis64运行redis服务#安装redis服务[root@redis64~]#yuminstall-yredis#启动redis服务并开机启动[root@redis64~]#systemctlenableredis--now#查看redis端口[root@redis64~]#ss-tnl

redis 常用数据结构2

目录listLPUSHLRANGELPUSHXRPUSHRPUSHXLPOPRPOPLINDEXLINSERTLLENLREMLTRIMLSETBLPOP/BRPOP编码方式setSADDSMEMBERSSISMEMBERSPOPSCARDSRANDMEMBERSMOVESREMSINTERSINTERSTORESUN

基于javaweb的顶岗实习管理系统(jsp+servlet)

系统简介本项目采用eclipse工具开发,jsp+servlet+jquery技术编写,数据库采用的是mysql,navicat开发工具。三个角色:管理员,教师,学生模块简介管理员:1、登录2、学生管理3、公告管理4、教师管理5、任务分类管理6、实习任务管理7、实习任务申请管理8、实习报告分数管理学生:1、登录2、个人

MYSQL存储引擎基础知识介绍

下面重点介绍几种常用的存储引擎,并对比各个存储引擎之间的区别,以帮助读者理解不同存储引擎的使用方式。MyISAMMyISAM是MySQL的默认存储引擎。MyISAM不支持事务、也不支持外键,其优势是访问的速度快,对事务完整性没有要求或者以SELECT、INSERT为主的应用基本上都可以使用这个引擎来创建表。每个MyIS

JMeter-BeanShell预处理程序和BeanShell后置处理程序的应用

一、什么是BeanShell?BeanShell是用Java写成的,一个小型的、免费的、可以下载的、嵌入式的Java源代码解释器,JMeter性能测试工具也充分接纳了BeanShell解释器,封装成了可配置的BeanShell前置和后置处理器,分别是BeanShellPreprocessor(BeanShell预处理程

MySQL表的增删改查(基础)

一、新增(Create)--创建一张学生表DROPTABLEIFEXISTSstudent;CREATETABLEstudent(idINT,snINTcomment'学号',nameVARCHAR(20)comment'姓名',qq_mailVARCHAR(20)comment'QQ邮箱');1.单行数据+全列插入-

Windows网络服务综测刷题

作者简介:一名云计算网络运维人员、每天分享网络与运维的技术与干货。座右铭:低头赶路,敬事如仪个人主页:网络豆的主页​​​​​前言本章将会讲解Windows网络服务的刷题一.刷题在WindowsServer2016系统中,通过添加Web服务器(IIS)角色并进行正确配置,可以提供()应用服务。(选择两项)AB使用wind

Java版企业电子招标采购系统源码Spring Cloud + Spring Boot +二次开发+ MybatisPlus + Redis

项目说明随着公司的快速发展,企业人员和经营规模不断壮大,公司对内部招采管理的提升提出了更高的要求。在企业里建立一个公平、公开、公正的采购环境,最大限度控制采购成本至关重要。符合国家电子招投标法律法规及相关规范,以及审计监督要求;通过电子化平台提高招投标工作的公开性和透明性;通过电子化招投标,使得招标采购的质量更高、速度

热文推荐