1.问题
- 因部署在WindowsServer服务器SQLServer发生过期后重启,Flink-CDC同步进行作业重启,启动后无报错信息,数据正常抽取。但是观察几天后发现当天数据计算指标无法展示
2.定位
因为没用进行任何修改,故初步判断不是因Flink-CDC的问题导致,进而参照Flink-CDC文档检查以下配置
- 管理员用户登陆SQLServer进行检查,flink-cdc抽取数据用户涉及角色、权限配置是否发生变化
切换到对应数据 : use dbName
查看当前数据库用户、角色:
EXEC sp_helprole
查看角色权限:
DECLARE @rolename sysname
SET @rolename = '角色名称'
EXEC sp_helprotect @rolename = @rolename
查看角色是否有CDC功能:
exec sp_helpsrvrolemember 'sysadmin'
- 事务日志配置信息
SELECT
name AS 'Logical Name',
physical_name AS 'Physical Name',
type_desc AS 'Type',
state_desc AS 'State',
size AS 'Size (MB)'
FROM sys.master_files
WHERE database_id = DB_ID('数据库名称')
AND type_desc = 'LOG';
- 数据库、表级别CDC配置信息
数据库:
select is_cdc_enabled, name from sys.databases where name = '数据库名称'
数据表:
select name,is_tracked_by_cdc from sys.tables where name = '数据表名称'';
简洁方式:
USE 数据库名称;
EXEC sys.sp_cdc_help_change_data_capture
- 查看SQLServer 代理是否开启,需要管理员权限
SELECT * FROM sys.dm_server_services WHERE SERVICE_NAME = 'SQL Server Agent (MSSQLSERVER)';
或 SELECT servicename ,status FROM sys.dm_server_services WHERE servicename LIKE 'SQL Server Agent (MSSQLSERVER)'
3.原因
- 经定位,发现是SQLServer过期激活后,未开启SQLServer Agent服务
- 对于其他未正常配置问题,请参看官方文档进行配置
https://nightlies.apache.org/flink/flink-cdc-docs-release-3.0/docs/connectors/legacy-flink-cdc-sources/sqlserver-cdc/
4.解决
- 进入WindowServer后,打开SQL Server Configuration Manager ,找到SQLServer配置管理器下的SQL Server服务,打开SQLServer Server 代理