场景概述
Drainer 重启后,启动耗时变长,启动过程中内存上涨,期间无法对外同步、延迟持续累积。
维度 |
说明 |
|---|---|
现象 |
Drainer 重启后启动耗时变长,启动阶段内存占用上涨。 |
触发条件 |
集群历史 DDL 数量较多,Drainer 需要恢复 schema。 |
根因 |
Drainer 默认通过 |
解决方案
分析方法
确认慢启动发生在重启后的 schema 恢复阶段,且启动期间伴随内存上涨。若集群历史 DDL 较多,按本方法处理。
处理方法
在 Drainer 的配置文件 [syncer] 段中开启 schema snapshot 加载:
[syncer]
load-schema-snapshot = true
开启后,Drainer 启动时直接基于checkpoint TS加载 schema,不再回放历史 DDL,启动时间和内存占用都会下降。
验证方法
- 对比开启前后的启动耗时(看 Drainer 日志中启动完成的时间戳),耗时下降。
- 启动阶段内存平稳,无随 DDL 回放持续爬升的曲线。
- Drainer 能从原 checkpoint 正常恢复同步,未出现 schema 恢复相关报错。
风险提示
该参数依赖 checkpoint TS 对应的 schema 版本仍在上游 GC safe point 之后。若 Drainer 延迟较大,checkpoint TS 可能已早于 GC safe point,此时不能开启;需先确认上游 tidb_gc_life_time,避免 checkpoint 对应的历史版本已被 GC 清理。
适用版本
v6.5.x LTS 版本,开始支持 load-schema-snapshot 参数。