drainer报meet causality.DetectConflict exec now

如果方便的话麻烦提供下 Drainer 日志。

上游tidb集群的确有写写冲突,但是为什么会影响draienr同步到下游集群?

背景:Drainer 为了提高同步效率,会使用多个“线程”(即 goroutine)并发写下游 MySQL。

由于会并发写,所以 Drainer 需要对上游的事务进行冲突检查,不然会导致下游出现冲突,导致同步性能降低。
当出现冲突时,Drainer 就会报 meet causality.DetectConflict exec now

而且下游集群监控上并没有写写冲突。其实这个问题主要对drainer同步速度造成了影响,同步速度很慢。谢谢

由于冲突在 Drainer 侧提前检查并规避了,所以下游不会出现写写冲突。
Drainer 冲突检测比下游的冲突检测代价要小很多,但如果上游的写入模式是对热点更新,那还是会导致同步变慢,整体同步的速度接近于下游热点更新的速度上限。