Zapoznaj się z zestawem narzędzi Percona Toolkit o otwartym kodzie źródłowym — w szczególności pt-table-sync pożytek.
Jego głównym celem jest synchronizacja tabeli MySQL z jej repliką, ale ponieważ jej wynikiem jest zestaw poleceń MySQL niezbędnych do pogodzenia różnic między dwiema tabelami, jest to naturalne dopasowanie do porównania tych dwóch.
To, co faktycznie robi pod maską, jest nieco skomplikowane i faktycznie wykorzystuje różne podejścia w zależności od tego, co może powiedzieć o twoich tabelach (indeksach itp.), ale jedną z podstawowych idei jest to, że robi szybkie sumy kontrolne CRC32 na fragmentach indeksów , a jeśli sumy kontrolne się nie zgadzają, dokładniej sprawdza te rekordy. Pamiętaj, że ta metoda to dużo szybciej niż chodzenie po obu indeksach liniowo i porównywanie ich.
Jednak to tylko pomaga. Ponieważ wygenerowane polecenia mają na celu zsynchronizowanie repliki z jej wzorcem, po prostu zastępują bieżącą zawartość repliki dla wszystkich różnych rekordów. Innymi słowy, wygenerowane polecenia modyfikują all
pola w rekordzie (nie tylko te, które uległy zmianie). Więc kiedy użyjesz pt-table-sync
aby znaleźć różnice, musiałbyś zawinąć wyniki w coś, aby zbadać różniące się rekordy, porównując każde pole w rekordzie.
Ale pt-table-sync
robi to, co już wiesz, że jest trudne:wykrywanie różnic, naprawdę szybki. Jest napisany w Perlu; źródło powinno zapewniać dobrą bułkę tartą.