Debezium仅启动时上报变更事件,快照完成后无后续事件是什么原因?
问题排查与配置补全方案
1. SQL Server Agent 运行状态检查
SQL Server的CDC增量日志捕获强依赖SQL Server Agent服务运行,快照阶段不需要调用该服务,但增量变更必须依赖该服务读取CDC的变更记录表。
- 执行校验SQL确认Agent状态:
SELECT status FROM sys.dm_server_services WHERE servicename LIKE 'SQL Server Agent%'
- 若返回status不为
Running,启动服务即可恢复增量捕获。
2. Debezium 增量捕获配置校验
检查你的application.properties/yml中是否存在以下错误配置:
- 确认
debezium.source.connector.class指定为io.debezium.connector.sqlserver.SqlServerConnector - 确认
debezium.source.database.names配置为你开启了CDC的数据库名,大小写严格匹配 - 确认
debezium.source.table.include.list配置为[你的库名].dbo.ACTIONS,schema名和表名大小写严格匹配 - 确认没有配置
debezium.source.snapshot.only = true,该配置会使Debezium快照完成后直接停止捕获增量事件
3. 表CDC捕获实例校验
你为ACTIONS表开启CDC时如果只指定了部分字段作为捕获范围,后续变更的字段不在捕获范围内也会触发无事件的问题,执行以下SQL校验:
EXEC sys.sp_cdc_help_change_data_capture @source_schema = N'dbo', @source_name = N'ACTIONS';
确认返回结果中的captured_column_list包含你后续变更操作涉及的所有字段,若有缺失删除原有捕获实例重新创建即可。
4. 隐藏报错排查
如果以上配置都正常,调整Debezium日志级别到DEBUG,排查是否有权限不足、LSN偏移量跳变的相关报错:
logging.level.io.debezium.connector.sqlserver=DEBUG logging.level.io.debezium.processor=DEBUG
内容的提问来源于stack exchange,提问作者creponutella
相关产品推荐
相关产品推荐

