Há uma falha no valor seconds_behind_master do mysql: ele leva em conta apenas a posição relativa a um salto de upstream. Mais fácil de demonstrar com uma topologia de replicação um pouco mais simples:
server1 - > server2 - > server3
Se o server2 ficar para trás e estiver processando algumas consultas demoradas, ocorrerá o seguinte, assumindo 00:00 como ponto de início:
00:00: Todos ok
00:01: server1 grava duas consultas de 10 minutos no log binário, sem atraso de replicação em qualquer lugar
00:02: o server2 inicia o processamento da consulta um. Atraso de replicação para o servidor2 começa a crescer, o atraso de replicação para o servidor3 permanece zero
10:02: server2 é feito com a consulta um, inicia o processamento da consulta dois. O atraso de replicação do server2 está a aumentar. delay de replicação de server3 de repente pula para 10 minutos.
20:02: server2 é feito com consulta 2, atraso de replicação zero novamente. O Server3 será feito com a consulta 3, o atraso de replicação volta para zero e, em seguida, volta para 10 à medida que processa a próxima consulta.
Assim, o comportamento de saltos é causado por não usar um registro de data e hora global para o atraso de replicação, mas simplesmente o atraso por trás do último "salto" na cadeia de replicação. Achamos isso extremamente irritante e agora usamos o agendador de eventos do MySQL para atualizar uma tabela temporizada em cada mestre a cada segundo, para que possamos ver o atraso real do mestre global (em uma topologia sem anel) ou o atraso de qualquer ponto em um anel.