Quando você tiver determinado que não há erro de usuário envolvido, e a replicação ainda não funciona perfeitamente ou está instável, é hora de começar a fazer num relatório de erros. Nós precisamos do máximo de informações que você puder fornecer para conseguirmos rastrear o bug. Por favor gaste algum tempo e esforço preparando um bom relato de erro.
Se você tiver uma forma repetitível de demonstrar o problema, por favor inclua-o em nosso banco de dados de bugs http://bugs.mysql.com. Se você tem um problema de fantasma (um problema que não pode ser duplicado a sua vontade), use o seguinte procedimento:
Verifique se nenhum erro de usuário está envolvido. Por exemplo, se você atualiza o slave fora da thread slave, os dados podem ficar fora de sincronia e podem ocorrer violações de chave única nas atualizações. Neste caso a thread slave irá terminar e esperar que você limpe as tabelas manualmente para entrar em sincronia. Este não é um problema de replicação; é um problema de interferência externa que faz com que a replicação falhe.
Execute o slave com as opções
log-slave-updates
e
log-bin
. Elas farão com que o registre
todas as atualizações que ele receber no seu próprio log
binário.
Salve todas as evidências antes de restaurar o estado da replicação. Se não tivermos nenhuma informação ou apenas algum esboço, será um pouco mais difícil para rastrearmos o problema. As evidências que você deve coletar são:
Todos os logs binários no master
Todos os logs binários no slave
A saída de SHOW MASTER STATUS
no
master na hora que você descobriu o problema.
A saída de SHOW SLAVE STATUS
no
master na hora que você descobriu o problema.
Logs de erro no master e no slave
Utilize mysqlbinlog
para examinar os logs
binários. A informação a seguir pode ser útil para
encontrar a consulta problemática, por exemplo:
mysqlbinlog -j pos_from_slave_status /caminho/para/log_do_slave | head
Uma vez que você coletou as evidências do problema fantasma, tente isolá-lo em um caso de testes separados inicialmente. Então relate o problema para http://bugs.mysql.com/ com a maior quantidade possíveis de informações.
This is a translation of the MySQL Reference Manual that can be found at dev.mysql.com. The original Reference Manual is in English, and this translation is not necessarily as up to date as the English version.