Olhando para um trecho do log binário, pode-se ver que essas duas declarações são escritas para o log fora de ordem cronologicamente:
#160628 17:32:46 server id 2220 end_log_pos 64812204 Query thread_id=157061 exec_time=0 error_code=0
SET TIMESTAMP=1467153166/*!*/;
UPDATE 'table' SET 'field' = "a";
/*!*/;
# at 64812204
--
#160628 17:32:36 server id 2220 end_log_pos 64895850 Query thread_id=157062 exec_time=0 error_code=0
SET TIMESTAMP=1467153156/*!*/;
UPDATE 'table' SET 'field' = "b";
/*!*/;
# at 64895850
Não é possível descobrir como destacar o bloco de códigos, mas as partes importantes são:
first statement - end_log_pos 64812204, SET TIMESTAMP=1467153166
second statement - end_log_pos 64895850, SET TIMESTAMP=1467153156
Isso fez com que o mestre e o escravo dessincronizassem, pois o mestre executou a primeira instrução por último, enquanto o escravo executou a segunda declaração por último.
Alguém pode me ajudar a descobrir o motivo disso? Notei que todas as instruções com o thread_id 157062 foram executadas primeiro, mas gravadas no log depois daquelas com o thread_id 157061.
A versão do Mysql é 5.5.
Obrigado por qualquer ajuda.
Tags mysql mysql-replication