sql >> Database teknologi >  >> RDS >> Mysql

diff 2 store databasetabeller

Tjek open source Percona Toolkit ---specifikt, pt-table-sync nytte.

Dens primære formål er at synkronisere en MySQL-tabel med dens replika, men da dens output er det sæt af MySQL-kommandoer, der er nødvendige for at forene forskellene mellem to tabeller, er det en naturlig egnethed til at sammenligne de to.

Hvad det faktisk gør under motorhjelmen er lidt komplekst, og det bruger faktisk forskellige tilgange afhængigt af hvad det kan fortælle om dine tabeller (indekser osv.), men en af ​​de grundlæggende ideer er, at det laver hurtige CRC32-kontrolsummer på bidder af indekserne , og hvis kontrolsummerne ikke stemmer overens, undersøger den disse poster nærmere. Bemærk, at denne metode er meget hurtigere end at gå begge indeks lineært og sammenligne dem.

Det får dig dog kun en del af vejen. Fordi de genererede kommandoer er beregnet til at synkronisere en replika med dens master, erstatter de simpelthen det aktuelle indhold af replikaen for alle forskellige poster. Med andre ord ændrer de genererede kommandoer all felter i posten (ikke kun dem, der er ændret). Så når du først bruger pt-table-sync for at finde forskellene, skal du pakke resultaterne ind i noget for at undersøge de forskellige poster ved at sammenligne hvert felt i posten.

Men pt-table-sync gør, hvad du allerede vidste var den svære del:at opdage forskelle, virkelig hurtig. Det er skrevet i Perl; kilden skal give gode brødkrummer.



  1. Mysql OPRET DEFINER

  2. Sådan ser du det største afkast fra din Microsoft Access-database

  3. indsætte print_r output til databasen?

  4. Log registreringsændringer i SQL-server i en revisionstabel