DMS复制任务报Error executing source loop错误如何排查解决
排查处理步骤
1. 源端SQL Server侧优先排查
- 首先确认事务日志备份策略是否正常:DMS增量同步依赖SQL Server事务日志的读取,若未开启定期事务日志备份,日志会因为DMS读取卡住/延迟而无法截断,持续膨胀打满磁盘。先手动执行一次事务日志备份释放磁盘空间,避免源端业务故障。
- 校验DMS账号权限:DMS使用的源端账号必须具备
VIEW SERVER STATE、VIEW ANY DEFINITION以及待同步库的db_owner权限,权限不足会导致日志读取反复失败重试,既打满源端日志也会触发任务崩溃。 - 排查长事务:源端存在超过1小时的未提交长事务会导致DMS日志读取组件卡住,可执行以下SQL排查:
SELECT session_id, start_time, transaction_id, open_transaction_count FROM sys.dm_exec_requests WHERE open_transaction_count > 0 AND start_time < DATEADD(HOUR, -1, GETDATE())
找到长事务后确认是否可以手动提交/回滚,无法操作的话可以调整DMS任务的logReaderMaxOpenTxnThreshold参数,适配长事务场景。
2. DMS侧配置排查
- 你使用的3.4.4版本引擎存在SQL Server源端日志读取的已知bug,处理大事务、大表同步时会触发stream组件崩溃,优先升级引擎到3.4.7或3.5.x以上的稳定版本,可解决80%以上的同类报错。
- 调整源端连接参数:在DMS任务的源端点额外连接属性中添加
logReaderMaxTransactions=10000;logReaderPollInterval=5000,增大单次读取事务数上限、拉长轮询间隔,避免高并发场景下组件溢出崩溃。 - 拆分同步任务:如果同步的表数量超过500张或存在单表10T以上的大表,将全量同步和增量同步拆分为两个独立任务,全量同步完成且数据校验通过后再启动增量任务,避免全量读压力和增量日志读压力叠加导致实例负载过高。
- 检查DMS实例监控:确认任务运行期间CPU、内存使用率是否持续超过80%,如果是可以将超大表拆分为多个子任务分开同步,降低单任务负载。
内容的提问来源于stack exchange,提问作者Barry
相关产品推荐
相关产品推荐

