Mysql
 sql >> Base de Dados >  >> RDS >> Mysql

diff 2 grandes tabelas de banco de dados


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.