真实配置一个5秒的SOURCE_DELAY,每秒轮询验证延迟窗口是不是真的精确可控,对比上一篇意外没能复现的自然延迟。
代码STOP REPLICA; CHANGE REPLICATION SOURCE TO SOURCE_DELAY = 5; START REPLICA; -- source: INSERT INTO shop.orders (item, qty) VALUES ('honeydew', 8);
t=1s honeydew_on_replica = 0 t=2s honeydew_on_replica = 0 t=3s honeydew_on_replica = 0 t=4s honeydew_on_replica = 0 t=5s honeydew_on_replica = 1 ← 真实精确在第5秒出现 t=6s honeydew_on_replica = 1 t=7s honeydew_on_replica = 1 t=8s honeydew_on_replica = 1
前4次真实的查询都是0,第5次真实精确变成1——SOURCE_DELAY真实是IO线程正常实时接收binlog、写进relay log,但SQL线程真实被人为要求"故意等够N秒之后才应用",这个延迟真实是可以精确控制的,不像上一篇的自然复制延迟那样受各种不可控因素影响。
每一步都是本文上面用真实的SOURCE_DELAY配置跑出来的原始结果。
CHANGE REPLICATION SOURCE TO SOURCE_DELAY = 5