0
0
0
1
博客/.../

Drainer 重启后启动时间过久的处理方法

 Jayjlchen  发表于  2026-06-15

场景概述

Drainer 重启后,启动耗时变长,启动过程中内存上涨,期间无法对外同步、延迟持续累积。

维度

说明

现象

Drainer 重启后启动耗时变长,启动阶段内存占用上涨。

触发条件

集群历史 DDL 数量较多,Drainer 需要恢复 schema。

根因

Drainer 默认通过 loadHistoryDDLJobs 加载并回放历史 DDL;DDL 数量越多,回放耗时和内存压力越明显。

解决方案

分析方法

确认慢启动发生在重启后的 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 参数。

0
0
0
1

版权声明:本文为 TiDB 社区用户原创文章,遵循 CC BY-NC-SA 4.0 版权协议,转载请附上原文出处链接和本声明。

评论
暂无评论