作者回复: 这和延迟的计算方式有关系。计算公式简化一下, time_diff = time() - last_master_timestamp last_master_timestamp = tv_sec + exec_time 这里tv_sec是DDL在主库上的开始执行时间,假设是t。 exec_time是DDL的执行耗时,假设是N秒。 备库上开始执行DDL的时间是 t + N,结束时间是 t + N + N, 对应的,延迟时间是从 t + N - (t + N) = 0,到 t + 2N - (t + N) = N。 如果使用了多线程复制,计算方式就更复杂一些了,不是按当前应用的那个Binlog事件的开始时间来计算tv_sec,而是和Gaq有关。