同步积压按链路分段排查
同步延迟排查要按链路分段:源端位点是否还在推进(源库是否还在写)、工具消费位点是否推进(连接器与任务是否正常)、中间队列是否积压(消费组 LAG)、目标端写入是否变慢(锁等待、批量大小、主键冲突、大事务阻塞)。逐段对比「生产速率与消费速率」,比凭感觉到处调参数有效得多。
基本信息
| 源端 | 看当前位点与写入速率 |
|---|---|
| 采集侧 | 看连接器与任务状态、消费位点是否推进 |
| 中间队列 | 看消费组 LAG 与分区分布 |
| 目标端 | 看锁等待、批量大小、主键冲突与大事务 |
典型使用场景
- 积压初判:先确认是全链路慢还是单段慢
- 热点分区:某分区 LAG 远高于其他分区时,主键设计或大 key 是嫌疑
- 大事务:源端一次批量更新产生大量 binlog,消费侧短时打满
- 目标端瓶颈:写入并发过高导致锁等待,反而更慢
- 重平衡抖动:区分正常波动与真实故障,避免告警噪音
分段取证
分段取证
# 中间队列:看消费组积压(LAG 列)
kafka-consumer-groups.sh --bootstrap-server kafka1:9092 --describe --group cdc-app
# 源端:看当前位点(MySQL 8.4+ 为 SHOW BINARY LOG STATUS)
mysql -uroot -p -e "SHOW MASTER STATUS;"分段与观察指标
| 环节 | 观察指标 | 异常表现 |
|---|---|---|
| 源端 | 位点推进速度 | 位点不动说明源端没写入或链路已断 |
| 采集侧 | 连接器与任务状态、消费位点 | 任务失败或位点长期不推进 |
| 中间队列 | 消费组 LAG 与分区分布 | LAG 持续增长或单个分区独高 |
| 目标端 | 锁等待、写入耗时、冲突数 | 写入变慢反压采集侧 |
先确认是「全链路慢」还是「单段慢」:分别在源、管道、目标取速率,避免凭感觉在单点加资源,把瓶颈从一个环节挪到另一个环节。
重平衡瞬间出现短暂 LAG 波动属于正常现象,把它当故障会制造大量噪音告警;判断标准是 LAG 能否在短时间内回落。