Erratic Seconds_Behind_Master

1

Um dos meus escravos do MySQL irá em um momento, reportar 57 segundos atrás do mestre, e o próximo mostrará 0. Eu também estou monitorando com o mk-heartbeat que mostra uma média de menos de 1 segundo. As datas do MySQL e do sistema estão corretas. Como exatamente o MySQL calcula o atraso de escravo e o que poderia estar causando esse erro de relatório?

Para ficar claro, executar show slave status reportará 57 segundos e executar show slave status novamente (dentro de 1 segundo) mostrará 0. Isso continuará flocando indefinidamente até que o segmento escravo seja reiniciado. Normalmente, o servidor levaria pelo menos 10 segundos para se recuperar de um atraso de um minuto.

    
por sreimer 05.07.2011 / 17:35

1 resposta

1

Não é um erro de relatório, é assim que funciona a replicação do MySQL. Transfere pelo log de consulta e executa as consultas. Se uma das consultas levar muito tempo para ser executada, todas as outras consultas ficarão obstruídas até que essa conclusão seja concluída. É por isso que você vê os picos. O fato de o mk-heartbeat mostrar uma média baixa significa apenas que não é um problema geral de sobrecarga, apenas algumas grandes consultas (ou, menos provavelmente, um aumento ocasional de carga de um monstro no escravo).

Instantâneo "segundos atrás do mestre" é uma figura bastante inútil (exceto quando você quer saber agora quanto tempo está atrás de você). As estatísticas do mk-heartbeat são muito melhores para se ter uma ideia de quão sobrecarregada é a sua replicação - qualquer coisa acima de cerca de 2-3 segundos em média, mais de uma dúzia de pings e você é pooched.

    
por 06.07.2011 / 00:50