ओपन-सोर्स पेरकोना टूलकिट देखें --- विशेष रूप से, पीटी-टेबल-सिंक उपयोगिता।
इसका प्राथमिक उद्देश्य एक MySQL तालिका को इसकी प्रतिकृति के साथ सिंक करना है, लेकिन चूंकि इसका आउटपुट दो तालिकाओं के बीच के अंतर को समेटने के लिए आवश्यक MySQL कमांड का सेट है, यह दोनों की तुलना करने के लिए एक स्वाभाविक फिट है।
यह वास्तव में हुड के तहत क्या करता है थोड़ा जटिल है, और यह वास्तव में आपकी टेबल (इंडेक्स इत्यादि) के बारे में क्या बता सकता है इसके आधार पर विभिन्न तरीकों का उपयोग करता है, लेकिन मूल विचारों में से एक यह है कि यह तेजी से सीआरसी 32 चेकसम करता है अनुक्रमणिका के टुकड़ों पर , और यदि चेकसम मेल नहीं खाते हैं, तो यह उन अभिलेखों की अधिक बारीकी से जांच करता है। ध्यान दें कि यह विधि बहुत है दोनों इंडेक्स को रैखिक रूप से चलने और उनकी तुलना करने से तेज़।
हालाँकि, यह आपको केवल रास्ते का हिस्सा देता है। क्योंकि जनरेट किए गए कमांड किसी प्रतिकृति को उसके मास्टर के साथ सिंक करने के लिए अभिप्रेत हैं, वे सभी अलग-अलग रिकॉर्ड के लिए प्रतिकृति की वर्तमान सामग्री को आसानी से बदल देते हैं। दूसरे शब्दों में, जेनरेट किए गए कमांड all
. को संशोधित करते हैं रिकॉर्ड में फ़ील्ड (केवल वे नहीं जो बदल गए हैं)। तो एक बार जब आप pt-table-sync
. का उपयोग करते हैं अंतर खोजने के लिए, आपको रिकॉर्ड में प्रत्येक फ़ील्ड की तुलना करके अलग-अलग रिकॉर्ड की जांच करने के लिए परिणामों को किसी चीज़ में लपेटना होगा।
लेकिन pt-table-sync
वह करता है जिसे आप पहले से ही कठिन हिस्सा मानते थे:अंतर का पता लगाना, वास्तव में तेज़। यह पर्ल में लिखा है; स्रोत को अच्छे ब्रेडक्रंब प्रदान करने चाहिए।