Lihat Percona Toolkit open-source --- khususnya, pt-table-sync kegunaan.
Tujuan utamanya adalah untuk menyinkronkan tabel MySQL dengan replikanya, tetapi karena outputnya adalah kumpulan perintah MySQL yang diperlukan untuk mendamaikan perbedaan antara dua tabel, itu wajar untuk membandingkan keduanya.
Apa yang sebenarnya dilakukan di bawah tenda agak rumit, dan sebenarnya menggunakan pendekatan yang berbeda tergantung pada apa yang dapat diceritakan tentang tabel Anda (indeks, dll.), tetapi salah satu ide dasarnya adalah ia melakukan checksum CRC32 cepat pada potongan indeks , dan jika checksum tidak cocok, checksum akan memeriksa catatan tersebut lebih dekat. Perhatikan bahwa metode ini banyak lebih cepat daripada menjalankan kedua indeks secara linier dan membandingkannya.
Itu hanya membuat Anda menjadi bagian dari jalan. Karena perintah yang dihasilkan dimaksudkan untuk menyinkronkan replika dengan masternya, perintah tersebut cukup mengganti konten replika saat ini untuk semua rekaman yang berbeda. Dengan kata lain, perintah yang dihasilkan memodifikasi all
bidang dalam catatan (bukan hanya yang telah berubah). Jadi setelah Anda menggunakan pt-table-sync
untuk menemukan perbedaannya, Anda perlu membungkus hasilnya dalam sesuatu untuk memeriksa catatan yang berbeda dengan membandingkan setiap bidang dalam catatan.
Tapi pt-table-sync
melakukan apa yang sudah Anda ketahui sebagai bagian yang sulit:mendeteksi perbedaan, benar-benar cepat. Itu ditulis dalam Perl; sumber harus menyediakan remah roti yang baik.