You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Debezium对接SQL Server Always ON闲置数日后CDC复制失效求助

排查与解决步骤

针对SQL Server Always ON环境下Debezium 1.9.5闲置后CDC停止同步的问题,可按以下步骤排查:

  • 检查SQL Server CDC作业状态
    首先确认CDC捕获和清理作业是否正常运行,闲置期间作业可能意外停止。执行SQL命令查看作业状态:

    EXEC sys.sp_cdc_help_jobs;
    

    若捕获作业(capture job)未启用或最近运行失败,手动启动作业并配置自动重启策略。同时确保Always ON所有副本节点上的SQL Server代理服务均处于运行状态,CDC功能在主副本和可读副本上正确启用。

  • 验证Debezium偏移量(Offset)
    Debezium可能卡在某个旧的LSN(日志序列号)位置,未推进到最新CDC日志。查看连接器的offset记录:
    使用Kafka控制台消费者读取offset主题(默认是__consumer_offsets):

    kafka-console-consumer.sh --bootstrap-server <kafka-host>:9092 --topic __consumer_offsets --from-beginning --formatter "kafka.coordinator.group.GroupMetadataManager\$OffsetsMessageFormatter"
    

    找到对应连接器的offset条目,对比SQL Server当前CDC日志的LSN:

    SELECT MAX(start_lsn) FROM cdc.lsn_time_mapping;
    

    如果offset中的LSN远小于上述查询结果,说明连接器未正确推进偏移量,需后续调整。

  • 排查Debezium连接器日志
    即使连接器状态显示RUNNING,也可能存在未触发错误的警告信息。检查连接器的日志文件,重点关注:

    • 数据库连接超时或断开的警告
    • LSN不存在或CDC日志缺失的提示
    • Always ON副本切换后的连接异常
      针对闲置连接被断开的问题,可在连接器配置中添加连接池参数,确保自动重连:
    connection.max.idle.ms=300000
    connection.validation.timeout.ms=3000
    
  • 检查CDC日志清理策略
    若CDC清理作业提前删除了Debezium未读取的日志,会导致同步中断。查看清理作业的保留时长:

    EXEC sys.sp_cdc_help_jobs;
    

    若保留时长过短,调整为合适的值(比如保留72小时):

    EXEC sys.sp_cdc_change_job @job_type='cleanup', @retention=4320;
    

    同时检查是否存在LSN断层:

    SELECT * FROM cdc.lsn_time_mapping ORDER BY start_lsn DESC;
    

    如果连接器offset中的LSN不在此结果中,说明日志已被清理,需重新执行快照同步。

  • 验证Always ON监听器可用性
    闲置期间监听器可能出现路由异常,尝试用sqlcmd连接监听器验证:

    sqlcmd -S <listener-name> -U <db-user> -P <db-password> -Q "SELECT @@SERVERNAME;"
    

    若连接不稳定或无法访问,检查Always ON集群状态,确保监听器正常指向主副本,网络无防火墙拦截。

  • 重置连接器偏移量(谨慎操作)
    若确认偏移量卡住且无未处理的业务数据,可重置连接器偏移量:

    1. 暂停连接器:
      curl -X PUT http://<connect-host>:8083/connectors/<connector-name>/pause
      
    2. 删除对应连接器的offset记录(通过Kafka工具定位并删除)
    3. 重启连接器:
      curl -X PUT http://<connect-host>:8083/connectors/<connector-name>/resume
      

    或修改连接器配置为snapshot.mode=schema_only_recovery,重新启动后连接器将从当前CDC日志开始同步。

内容的提问来源于stack exchange,提问作者Akshay

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.31 21:05:20