Replicação Mysql, ressincronização lenta do escravo após um erro

3

Eu tenho um escravo que obteve um erro há cerca de um mês e ficou atrás do mestre. Eu consertei o erro e agora estou brincando com o mestre, mas está indo muito devagar. Está indo a 1.3x em tempo real. Eu estava usando menos que 10% dos recursos do banco de dados quando essas gravações estavam ocorrendo, então a velocidade do servidor não deveria ser um problema.

Existe alguma configuração que eu possa mudar para ajudar o escravo a alcançar o mestre?

    
por James Hackett 15.01.2011 / 00:17

1 resposta

5

O MySQL usa apenas um thread no slave para aplicar as instruções replicadas vindas do master.

No servidor mestre, as instruções SQL são executadas de maneira simultânea multi-threaded, mas são serializadas quando instaladas no escravo. É por isso que o seu servidor escravo pode parecer subutilizado enquanto, dolorosamente, tenta recuperar o atraso.

Se o seu servidor estiver atrasado demais, a opção principal é restaurar o backup mais recente do banco de dados principal no servidor slave e reconfigurar a replicação a partir desse ponto.

Eu recomendo que você dê uma olhada neste site para informações mais detalhadas sobre o atraso de replicação. link

Há também uma ferramenta no conjunto de ferramentas Maatkit que você pode considerar:

mk-slave-prefetch

This tool implements Paul Tuckfield’s famous “oracle” algorithm to read ahead of the slave SQL thread in the relay logs, rewriting queries as SELECT and executing them to warm the slave’s caches. This can help an I/O-bound slave SQL thread run faster under some conditions, because it doesn’t have to wait for as much I/O to complete.

Apenas meu 2c.

Boa sorte.

Fran.

    
por 15.01.2011 / 01:04