Kiểm tra Bộ công cụ Percona mã nguồn mở --- cụ thể là pt-table-sync tính thiết thực.
Mục đích chính của nó là đồng bộ một bảng MySQL với bản sao của nó, nhưng vì đầu ra của nó là tập hợp các lệnh MySQL cần thiết để điều hòa sự khác biệt giữa hai bảng, đó là một sự phù hợp tự nhiên để so sánh hai bảng.
Những gì nó thực sự làm được hơi phức tạp và nó thực sự sử dụng các cách tiếp cận khác nhau tùy thuộc vào những gì nó có thể cho biết về các bảng của bạn (chỉ mục, v.v.), nhưng một trong những ý tưởng cơ bản là nó thực hiện tổng kiểm tra CRC32 nhanh chóng trên các phần của chỉ mục và nếu tổng kiểm tra không khớp, nó sẽ kiểm tra các bản ghi đó chặt chẽ hơn. Lưu ý rằng phương pháp này nhiều nhanh hơn so với việc đi bộ tuyến tính cả hai chỉ mục và so sánh chúng.
Tuy nhiên, nó chỉ giúp bạn được một phần của con đường. Vì các lệnh được tạo nhằm mục đích đồng bộ hóa một bản sao với bản chính của nó, chúng chỉ đơn giản là thay thế nội dung hiện tại của bản sao cho tất cả các bản ghi khác nhau. Nói cách khác, các lệnh được tạo sẽ sửa đổi all
các trường trong bản ghi (không chỉ những trường đã thay đổi). Vì vậy, khi bạn sử dụng pt-table-sync
để tìm các điểm khác biệt, bạn cần phải gói kết quả trong một cái gì đó để kiểm tra các bản ghi khác nhau bằng cách so sánh từng trường trong bản ghi.
Nhưng pt-table-sync
điều bạn đã biết là phần khó:phát hiện sự khác biệt, thực sự là Nhanh. Nó được viết bằng Perl; nguồn phải cung cấp đường dẫn tốt.