Разгледайте Percona Toolkit с отворен код ---по-специално pt-table-sync полезност.
Основната му цел е да синхронизира MySQL таблица с нейната реплика, но тъй като нейният изход е наборът от MySQL команди, необходими за съгласуване на разликите между две таблици, това е естествено подходящо за сравняване на двете.
Това, което всъщност прави под капака, е малко сложно и всъщност използва различни подходи в зависимост от това какво може да каже за вашите таблици (индекси и т.н.), но една от основните идеи е, че прави бързи CRC32 контролни суми на части от индексите и ако контролните суми не съвпадат, той разглежда тези записи по-внимателно. Имайте предвид, че този метод е много по-бързо, отколкото да обхождате линейно двата индекса и да ги сравнявате.
Това обаче ви стига само до част от пътя. Тъй като генерираните команди са предназначени да синхронизират реплика с главния, те просто заместват текущото съдържание на репликата за всички различни записи. С други думи, генерираните команди променят all
полета в записа (не само тези, които са се променили). Така че след като използвате pt-table-sync
за да намерите разликите, ще трябва да опаковате резултатите в нещо, за да изследвате различните записи чрез сравняване на всяко поле в записа.
Но pt-table-sync
прави това, което вече знаете, че е трудната част:откриване на разлики, наистина бърз. Написано е на Perl; източникът трябва да предоставя добри галета.