Confira o Percona Toolkit de código aberto --- especificamente, o pt-table-sync Utilitário.
Seu objetivo principal é sincronizar uma tabela MySQL com sua réplica, mas como sua saída é o conjunto de comandos MySQL necessários para reconciliar as diferenças entre duas tabelas, é um ajuste natural para comparar as duas.
O que ele realmente faz sob o capô é um pouco complexo e, na verdade, usa abordagens diferentes, dependendo do que pode dizer sobre suas tabelas (índices, etc.), mas uma das idéias básicas é que ele faz checksums CRC32 rápidos em partes dos índices , e se as somas de verificação não corresponderem, ele examinará esses registros mais de perto. Observe que este método é muito mais rápido do que andar os dois índices linearmente e compará-los.
Isso só leva você a parte do caminho, no entanto. Como os comandos gerados destinam-se a sincronizar uma réplica com seu mestre, eles simplesmente substituem o conteúdo atual da réplica para todos os registros diferentes. Em outras palavras, os comandos gerados modificam
all
campos no registro (não apenas os que foram alterados). Então, uma vez que você usa pt-table-sync
para encontrar as diferenças, você precisa agrupar os resultados em algo para examinar os diferentes registros comparando cada campo no registro. Mas
pt-table-sync
faz o que você já sabia ser a parte mais difícil:detectar diferenças, realmente velozes. Está escrito em Perl; a fonte deve fornecer boas migalhas de pão.