यह कमांड पीटी-टेबल-चेकसमप है जिसे हमारे कई मुफ्त ऑनलाइन वर्कस्टेशन जैसे कि उबंटू ऑनलाइन, फेडोरा ऑनलाइन, विंडोज ऑनलाइन एमुलेटर या मैक ओएस ऑनलाइन एमुलेटर का उपयोग करके ऑनवर्क्स फ्री होस्टिंग प्रदाता में चलाया जा सकता है।
कार्यक्रम:
नाम
पीटी-टेबल-चेकसम - MySQL प्रतिकृति अखंडता को सत्यापित करें।
SYNOPSIS
उपयोग: पीटी-टेबल-चेकसम [विकल्प] [डीएसएन]
पीटी-टेबल-चेकसम चेकसम निष्पादित करके एक ऑनलाइन प्रतिकृति स्थिरता जांच करता है
मास्टर पर प्रश्न, जो असंगत प्रतिकृतियों पर भिन्न परिणाम उत्पन्न करता है
मालिक के साथ. वैकल्पिक DSN मास्टर होस्ट को निर्दिष्ट करता है। टूल का "EXIT STATUS" है
यदि कोई अंतर पाया जाता है, या कोई चेतावनी या त्रुटि होती है तो गैर-शून्य।
निम्न कमांड लोकलहोस्ट पर प्रतिकृति मास्टर से कनेक्ट होगा, हर चेकसम
तालिका, और प्रत्येक खोजी गई प्रतिकृति पर परिणाम रिपोर्ट करें:
पीटी-टेबल-चेकसम
यह टूल डेटा अंतरों को कुशलतापूर्वक खोजने पर केंद्रित है। यदि कोई डेटा भिन्न है,
आप पीटी-टेबल-सिंक के साथ समस्या का समाधान कर सकते हैं।
जोखिम
Percona टूलकिट परिपक्व है, वास्तविक दुनिया में सिद्ध है, और अच्छी तरह से परीक्षण किया गया है, लेकिन सभी डेटाबेस
उपकरण सिस्टम और डेटाबेस सर्वर के लिए जोखिम पैदा कर सकते हैं। इस उपकरण का उपयोग करने से पहले,
कृप्या अ:
उपकरण के दस्तावेज़ीकरण पढ़ें
उपकरण के ज्ञात "बग्स" की समीक्षा करें
· गैर-उत्पादन सर्वर पर उपकरण का परीक्षण करें
· अपने उत्पादन सर्वर का बैकअप लें और बैकअप सत्यापित करें
"सीमाएँ" भी देखें।
वर्णन
पीटी-टेबल-चेकसम को लगभग हर मामले में डिफ़ॉल्ट रूप से सही काम करने के लिए डिज़ाइन किया गया है। कब
संदेह होने पर, यह देखने के लिए "--एक्सप्लेन" का उपयोग करें कि टूल किसी तालिका को कैसे चेक करेगा। निम्नलिखित है एक
उपकरण कैसे काम करता है इसका उच्च-स्तरीय अवलोकन।
पीटी-टेबल-चेकसम के पुराने संस्करणों के विपरीत, यह टूल एकल पर केंद्रित है
उद्देश्य, और इसमें बहुत अधिक जटिलता नहीं है या कई अलग-अलग चेकसमिंग का समर्थन नहीं है
तकनीकें. यह केवल एक सर्वर पर चेकसम क्वेरी निष्पादित करता है, और ये प्रवाहित होती हैं
प्रतिकृतियों पर पुनः निष्पादित करने के लिए प्रतिकृति। यदि आपको पुराने व्यवहार की आवश्यकता है, तो आप उपयोग कर सकते हैं
पेरकोना टूलकिट संस्करण 1.0.
पीटी-टेबल-चेकसम आपके द्वारा निर्दिष्ट सर्वर से जुड़ता है, और डेटाबेस और टेबल ढूंढता है
आपके द्वारा निर्दिष्ट फ़िल्टर से मिलान करें (यदि कोई हो)। यह एक समय में एक टेबल पर काम करता है, इसलिए ऐसा नहीं होता है
चेकसम शुरू करने से पहले बड़ी मात्रा में मेमोरी जमा करें या बहुत सारा काम करें। यह
इसे बहुत बड़े सर्वर पर प्रयोग करने योग्य बनाता है। हमने इसे सैकड़ों सर्वरों पर उपयोग किया है
हजारों डेटाबेस और टेबल, और खरबों पंक्तियाँ। चाहे सर्वर कितना भी बड़ा क्यों न हो
है, पीटी-टेबल-चेकसम समान रूप से अच्छी तरह से काम करता है।
इसके बहुत बड़ी टेबलों पर काम करने का एक कारण यह है कि यह प्रत्येक टेबल को टुकड़ों में विभाजित करता है
पंक्तियाँ, और प्रत्येक खंड को एक ही REPLACE..SELECT क्वेरी के साथ चेकसम करें। यह हिस्सा बदलता रहता है
चेकसम क्वेरीज़ को वांछित समय में चलाने के लिए आकार। खंडन का लक्ष्य
प्रत्येक तालिका को एक ही बड़ी क्वेरी के साथ करने के बजाय, तालिकाओं को यह सुनिश्चित करना है
चेकसम अनियंत्रित होते हैं और सर्वर पर बहुत अधिक प्रतिकृति अंतराल या लोड का कारण नहीं बनते हैं।
इसीलिए प्रत्येक टुकड़े के लिए लक्ष्य समय डिफ़ॉल्ट रूप से 0.5 सेकंड है।
टूल इस बात पर नज़र रखता है कि सर्वर कितनी तेज़ी से प्रश्नों को निष्पादित करने में सक्षम है, और समायोजित करता है
जैसे ही यह सर्वर के प्रदर्शन के बारे में अधिक सीखता है। यह घातीय रूप से उपयोग करता है
टुकड़े के आकार को स्थिर रखने के लिए घटते भारित औसत, फिर भी यदि प्रतिक्रियाशील बने रहें
किसी भी कारण से चेकसमिंग के दौरान सर्वर का प्रदर्शन बदल जाता है। इसका मतलब यह है कि उपकरण
यदि ट्रैफ़िक स्पाइक के दौरान आपका सर्वर भारी लोड हो जाता है तो यह तुरंत ही अपने आप बंद हो जाएगा
या कोई पृष्ठभूमि कार्य, उदाहरण के लिए।
चंकिंग को एक ऐसी तकनीक द्वारा पूरा किया जाता है जिसे हम अन्य उपकरणों में "निबलिंग" कहते थे
पेरकोना टूलकिट। उदाहरण के लिए, यह वही तकनीक है जिसका उपयोग पीटी-आर्काइवर के लिए किया जाता है। वसीयत
पीटी-टेबल-चेकसम के पुराने संस्करणों में प्रयुक्त चंकिंग एल्गोरिदम हटा दिए गए हैं, क्योंकि वे
अनुमानित आकार के खंडों में परिणाम नहीं मिला, और कई तालिकाओं पर अच्छा काम नहीं किया। सभी कि
किसी तालिका को टुकड़ों में विभाजित करने के लिए किसी प्रकार के सूचकांक (अधिमानतः प्राथमिक) की आवश्यकता होती है
कुंजी या अद्वितीय सूचकांक)। यदि कोई सूचकांक नहीं है, और तालिका में उपयुक्त रूप से छोटा है
पंक्तियों की संख्या, उपकरण तालिका को एक ही खंड में चेकसम करेगा।
पीटी-टेबल-चेकसम में यह सुनिश्चित करने के लिए कई अन्य सुरक्षा उपाय हैं कि यह किसी के साथ हस्तक्षेप नहीं करता है
प्रतिकृतियों सहित सर्वर का संचालन। इसे पूरा करने के लिए, pt-table-checksum पता लगाता है
प्रतिकृतियाँ और उनसे स्वचालित रूप से जुड़ जाता है। (यदि यह विफल रहता है, तो आप इसका संकेत दे सकते हैं
"--रिकर्सन-विधि" विकल्प।)
उपकरण लगातार प्रतिकृतियों की निगरानी करता है। यदि कोई प्रतिकृति बहुत पीछे छूट जाती है
प्रतिकृति, पीटी-टेबल-चेकसम इसे पकड़ने की अनुमति देने के लिए रुकती है। यदि किसी प्रतिकृति में कोई है
त्रुटि, या प्रतिकृति रुक जाती है, पीटी-टेबल-चेकसम रुक जाता है और प्रतीक्षा करता है। इसके अलावा, पीटी-टेबल-
चेकसम समस्याओं के सामान्य कारणों की तलाश करता है, जैसे प्रतिकृति फ़िल्टर, और इनकार कर देता है
तब तक काम करें जब तक आप उसे मजबूर न करें। प्रतिकृति फ़िल्टर खतरनाक हैं, क्योंकि क्वेरीज़
पीटी-टेबल-चेकसम निष्पादन संभावित रूप से उनके साथ संघर्ष कर सकता है और प्रतिकृति का कारण बन सकता है
असफल होना।
पीटी-टेबल-चेकसम सत्यापित करता है कि टुकड़े सुरक्षित रूप से चेकसम के लिए बहुत बड़े नहीं हैं। यह प्रदर्शन करता है
प्रत्येक टुकड़े पर एक EXPLAIN क्वेरी, और उन हिस्सों को छोड़ देता है जो वांछित से बड़े हो सकते हैं
पंक्तियों की संख्या। आप इस सुरक्षा की संवेदनशीलता को इसके साथ कॉन्फ़िगर कर सकते हैं
"--चंक-आकार-सीमा" विकल्प। यदि किसी तालिका को एक ही खंड में जांचा जाएगा क्योंकि यह
पंक्तियों की एक छोटी संख्या है, तो पीटी-टेबल-चेकसम अतिरिक्त रूप से सत्यापित करता है कि तालिका
प्रतिकृतियों पर अधिक आकार का नहीं है. यह निम्नलिखित परिदृश्य से बचा जाता है: एक तालिका खाली है
मास्टर लेकिन एक प्रतिकृति पर बहुत बड़ा है, और एक बड़ी क्वेरी में चेकसम किया गया है, जो
प्रतिकृति में बहुत लंबे विलंब का कारण बनता है।
कई अन्य सुरक्षा उपाय भी हैं। उदाहरण के लिए, पीटी-टेबल-चेकसम अपना सत्र-स्तर निर्धारित करता है
innodb_lock_wait_timeout 1 सेकंड तक, ताकि यदि कोई लॉक प्रतीक्षा हो, तो यह होगा
अन्य प्रश्नों के कारण समय समाप्त करने के बजाय पीड़ित। एक अन्य सुरक्षा उपाय लोड की जाँच करता है
डेटाबेस सर्वर, और लोड बहुत अधिक होने पर रुक जाता है। कोई एक भी सही उत्तर नहीं है
यह कैसे करें, लेकिन डिफ़ॉल्ट रूप से 25 से अधिक होने पर पीटी-टेबल-चेकसम रुक जाएगा
समवर्ती रूप से क्वेरी निष्पादित करना। आपको संभवतः अपने सर्वर के लिए एक उचित मूल्य निर्धारित करना चाहिए
"--मैक्स-लोड" विकल्प।
चेकसमिंग आमतौर पर एक कम प्राथमिकता वाला कार्य है जिसे सर्वर पर अन्य कार्यों के लिए तैयार किया जाना चाहिए।
हालाँकि, जिस टूल को लगातार पुनरारंभ करना पड़ता है उसका उपयोग करना कठिन होता है। इस प्रकार, पीटी-टेबल-
चेकसम त्रुटियों के प्रति बहुत लचीला है। उदाहरण के लिए, यदि डेटाबेस व्यवस्थापक को इसकी आवश्यकता है
किसी भी कारण से पीटी-टेबल-चेकसम के प्रश्नों को समाप्त करें, यह कोई घातक त्रुटि नहीं है। उपयोगकर्ता अक्सर
किसी भी लंबे समय से चल रहे चेकसम प्रश्न को ख़त्म करने के लिए pt-kill चलाएँ। टूल मारे गए क्वेरी का पुनः प्रयास करेगा
एक बार, और यदि यह दोबारा विफल हो जाता है, तो यह उस तालिका के अगले हिस्से पर चला जाएगा। जो उसी
यदि लॉक प्रतीक्षा समयबाह्य है तो व्यवहार लागू होता है। यदि ऐसा है तो टूल एक चेतावनी प्रिंट करेगा
त्रुटि होती है, लेकिन प्रति तालिका केवल एक बार। यदि किसी सर्वर से कनेक्शन विफल हो जाता है, तो पीटी-
टेबल-चेकसम पुनः कनेक्ट करने और काम करना जारी रखने का प्रयास करेगा।
यदि पीटी-टेबल-चेकसम को ऐसी स्थिति का सामना करना पड़ता है जिसके कारण यह पूरी तरह से बंद हो जाता है, तो यह आसान है
इसे "--रेज़्यूमे" विकल्प के साथ फिर से शुरू करने के लिए। इसकी शुरुआत आखिरी के आखिरी हिस्से से होगी
तालिका जिसे उसने संसाधित किया। आप CTRL-C से टूल को सुरक्षित रूप से बंद भी कर सकते हैं। यह ख़त्म हो जायेगा
वह हिस्सा जिस पर यह वर्तमान में प्रसंस्करण कर रहा है, और फिर बाहर निकलें। आप इसे हमेशा की तरह फिर से शुरू कर सकते हैं
बाद में।
पीटी-टेबल-चेकसम द्वारा तालिका के सभी हिस्सों का चेकसमिंग पूरा करने के बाद, यह रुक जाता है और
चेकसम क्वेरीज़ को निष्पादित करने के लिए सभी खोजी गई प्रतिकृतियों की प्रतीक्षा करता है। एक बार ऐसा है
समाप्त, यह यह देखने के लिए सभी प्रतिकृतियों की जाँच करता है कि क्या उनमें मास्टर के समान डेटा है,
और फिर परिणामों के साथ आउटपुट की एक पंक्ति प्रिंट करता है। आप इसके आउटपुट का एक नमूना देख सकते हैं
बाद में इस दस्तावेज़ में।
उपकरण समय लेने वाली कार्रवाइयों के दौरान प्रगति संकेतक प्रिंट करता है। यह एक प्रिंट करता है
प्रगति सूचक क्योंकि प्रत्येक तालिका को चेकसम किया गया है। प्रगति की गणना किसके द्वारा की जाती है?
तालिका में पंक्तियों की अनुमानित संख्या. रुकने पर यह एक प्रगति रिपोर्ट भी प्रिंट करेगा
प्रतिकृति के पकड़ने के लिए प्रतीक्षा करना, और प्रतिकृतियों की जांच करने के लिए कब प्रतीक्षा करना
गुरु से मतभेद. आप "--quiet" के साथ आउटपुट को कम क्रियात्मक बना सकते हैं
विकल्प.
यदि आप चाहें, तो आप किन तालिकाओं की रिपोर्ट प्राप्त करने के लिए चेकसम तालिकाओं को मैन्युअल रूप से क्वेरी कर सकते हैं
और टुकड़ों में गुरु से मतभेद हैं। निम्नलिखित क्वेरी प्रत्येक की रिपोर्ट करेगी
अंतरों के साथ डेटाबेस और तालिका, टुकड़ों और पंक्तियों की संख्या के सारांश के साथ
संभवतः प्रभावित:
db, tbl, SUM(this_cnt) AS total_rows, COUNT(*) AS खंड चुनें
Percona.checksums से
कहाँ (
मास्टर_सीएनटी <> यह_सीएनटी
या मास्टर_सीआरसी <> यह_सीआरसी
OR शून्य है(मास्टर_सीआरसी) <> ISNULL(this_crc))
डीबी, टीबीएल द्वारा समूह;
उस क्वेरी में संदर्भित तालिका चेकसम तालिका है, जहां चेकसम संग्रहीत हैं।
तालिका की प्रत्येक पंक्ति में किसी तालिका से डेटा के एक हिस्से का चेकसम होता है
सर्वर.
पीटी-टेबल-चेकसम का संस्करण 2.0, पीटी-टेबल-सिंक संस्करण के साथ पश्चगामी संगत नहीं है
1.0. कुछ मामलों में यह कोई गंभीर समस्या नहीं है. में एक "सीमाएँ" कॉलम जोड़ना
तालिका, और फिर इसे मैन्युअल रूप से जेनरेट किए गए WHERE क्लॉज के साथ अपडेट करना, pt- देने के लिए पर्याप्त हो सकता है
टेबल-सिंक संस्करण 1.0 पीटी-टेबल-चेकसम संस्करण 2.0 के साथ इंटरऑपरेट करता है। एक मानते हुए
'आईडी' नामक पूर्णांक प्राथमिक कुंजी, आप निम्न जैसा कुछ आज़मा सकते हैं:
तालिका चेकसम बदलें सीमाएं जोड़ें VARCHAR; (500)
चेकसम अद्यतन करें
सीमाएँ निर्धारित करें = COALESCE(CONCAT('id BETWEEN', निचली सीमा,
'और', ऊपरी सीमा), '1=1');
सीमाएं
पंक्ति-आधारित प्रतिकृति का उपयोग करते हुए प्रतिकृतियाँ
पीटी-टेबल-चेकसम को कथन-आधारित प्रतिकृति की आवश्यकता होती है, और यह सेट हो जाता है
मास्टर पर "binlog_format=STATEMENT", लेकिन MySQL सीमा के कारण प्रतिकृतियां नहीं हैं
इस बदलाव का सम्मान करें. इसलिए, चेकसम किसी भी प्रतिकृति का उपयोग करके उसकी नकल नहीं करेगा
पंक्ति-आधारित प्रतिकृति जो आगे की प्रतिकृतियों के लिए मास्टर हैं।
टूल स्वचालित रूप से सभी सर्वरों पर "binlog_format" की जाँच करता है। देखना
"--[नहीं]चेक-बिनलॉग-प्रारूप"।
(बग 899415 )
स्कीमा और तालिका अंतर
टूल मानता है कि स्कीमा और टेबल मास्टर और सभी पर समान हैं
प्रतिकृतियाँ प्रतिकृति टूट जाएगी यदि, उदाहरण के लिए, किसी प्रतिकृति में कोई स्कीमा नहीं है
जो मास्टर पर मौजूद है (और वह स्कीमा चेकसमड है), या यदि ए की संरचना
प्रतिकृति पर तालिका मास्टर की तुलना में भिन्न होती है।
Percona एक्स्ट्राडीबी समूह
पीटी-टेबल-चेकसम पेरकोना एक्स्ट्राडीबी क्लस्टर (पीएक्ससी) 5.5.28-23.7 और नए के साथ काम करता है।
संभावित पेरकोना एक्स्ट्राडीबी क्लस्टर सेटअप की संख्या बड़ी है, क्योंकि इसका उपयोग किया जा सकता है
नियमित प्रतिकृति भी. इसलिए, केवल नीचे सूचीबद्ध सेटअप समर्थित हैं और
काम करने के लिए जाना जाता है. अन्य सेटअप, जैसे क्लस्टर से क्लस्टर, समर्थन नहीं करते हैं और संभवतः नहीं भी करते हैं
काम।
जहां उल्लेख किया गया है उसे छोड़कर, निम्नलिखित सभी समर्थित सेटअपों के लिए आवश्यक है कि आप "डीएसएन" का उपयोग करें
क्लस्टर नोड्स निर्दिष्ट करने के लिए "--रिकर्सन-विधि" की विधि। इसके अलावा, लैग चेक (देखें
क्लस्टर नोड्स के लिए "रेप्लिका चेक्स") नहीं किया जाता है।
एकल क्लस्टर
सबसे सरल पीएक्ससी सेटअप एक एकल क्लस्टर है: सभी सर्वर क्लस्टर नोड हैं, और वहां
कोई नियमित प्रतिकृतियां नहीं हैं. यदि सभी नोड्स डीएसएन तालिका में निर्दिष्ट हैं (देखें)।
"--रिकर्सन-मेथड"), फिर आप टूल को किसी भी नोड और किसी भी अंतर पर चला सकते हैं
अन्य नोड्स का पता लगाया जाएगा.
सभी नोड्स एक ही क्लस्टर में होने चाहिए (समान "wsrep_cluster_name" मान), अन्यथा
उपकरण एक त्रुटि के साथ बाहर निकलता है। हालाँकि अलग-अलग क्लस्टर होना संभव है
एक ही नाम है, ऐसा नहीं किया जाना चाहिए और इसका समर्थन नहीं किया जाता है। ये बात सभी पर लागू होती है
समर्थित सेटअप.
प्रतिकृतियों के साथ एकल क्लस्टर
क्लस्टर नोड्स नियमित मास्टर भी हो सकते हैं और नियमित प्रतिकृतियों की प्रतिकृति बना सकते हैं। हालाँकि,
उपकरण केवल प्रतिकृति पर अंतर का पता लगा सकता है यदि प्रतिकृति के "मास्टर नोड" पर चलाया जाए।
उदाहरण के लिए, यदि क्लस्टर सेटअप है,
नोड1 <-> नोड2 <-> नोड3
| |
| +->प्रतिकृति3
+->प्रतिकृति2
आप नोड3 पर उपकरण चलाकर प्रतिकृति3 पर अंतर का पता लगा सकते हैं, लेकिन अंतर का पता लगाने के लिए
प्रतिकृति2 आपको टूल को नोड2 पर फिर से चलाना होगा। यदि आप टूल को नोड1 पर चलाते हैं, तो यह होगा
किसी भी प्रतिकृति पर अंतर का पता नहीं चल सका।
वर्तमान में, टूल इस सेटअप का पता नहीं लगाता है या उन प्रतिकृतियों के बारे में चेतावनी नहीं देता है जो नहीं हो सकती हैं
जाँच की गई (उदाहरण के लिए नोड2 पर चलने पर प्रतिकृति3)।
इस सेटअप में प्रतिकृतियां अभी भी "--[नहीं]चेक-बिनलॉग-प्रारूप" के अधीन हैं।
एकल क्लस्टर में मास्टर
एक नियमित मास्टर के लिए क्लस्टर की प्रतिकृति बनाना संभव है, जैसे कि क्लस्टर था
एक तार्किक गुलाम, जैसे:
मास्टर -> नोड1 <-> नोड2 <-> नोड3
उपकरण इस सेटअप का समर्थन करता है, लेकिन केवल तभी जब मास्टर पर चलता है और यदि सभी नोड्स
क्लस्टर "प्रत्यक्ष प्रतिकृति" (इस उदाहरण में नोड 1) के अनुरूप हैं
मालिक। उदाहरण के लिए, यदि पंक्ति 1 के लिए सभी नोड्स का मान "foo" है, लेकिन मास्टर का मान है
उसी पंक्ति के लिए "बार", इस अंतर का पता लगाया जाएगा। या यदि केवल नोड1 में यह अंतर है,
इसका भी पता लगाया जाएगा. लेकिन यदि केवल नोड2 या नोड3 में ही यह अंतर है, तो ऐसा नहीं होगा
पता चला. इसलिए, इस सेटअप का उपयोग यह जांचने के लिए किया जाता है कि मास्टर और क्लस्टर एक के रूप में हैं
संपूर्ण सुसंगत हैं.
इस सेटअप में, चलने पर टूल स्वचालित रूप से "प्रत्यक्ष प्रतिकृति" (नोड1) का पता लगा सकता है
मास्टर पर, इसलिए आपको "--recursion-method" के लिए "dsn" विधि का उपयोग करने की आवश्यकता नहीं है
क्योंकि नोड1 पूरे क्लस्टर का प्रतिनिधित्व करेगा, यही कारण है कि अन्य सभी नोड्स भी होने चाहिए
इसके अनुरूप.
जब टूल इस सेटअप का पता लगाता है तो आपको चेतावनी देता है ताकि आपको याद दिलाया जा सके कि यह केवल उपयोग किए जाने पर ही काम करता है
जैसा ऊपर वर्णित है। ये चेतावनियाँ उपकरण की निकास स्थिति को प्रभावित नहीं करतीं; वे
गलत-सकारात्मक परिणामों से बचने में मदद के लिए केवल अनुस्मारक।
आउटपुट
उपकरण सारणीबद्ध परिणाम प्रिंट करता है, प्रति तालिका एक पंक्ति:
टीएस त्रुटियाँ पंक्तियों में अंतर, खंड छोड़े गए समय सारणी
10-20T08:36:50 0 0 200 1 0 0.005 db1.tbl1
10-20T08:36:50 0 0 603 7 0 0.035 db1.tbl2
10-20T08:36:50 0 0 16 1 0 0.003 db2.tbl3
10-20T08:36:50 0 0 600 6 0 0.024 db2.tbl4
त्रुटियाँ, चेतावनियाँ और प्रगति रिपोर्ट मानक त्रुटि पर मुद्रित की जाती हैं। "--शांत" भी देखें।
प्रत्येक तालिका के परिणाम तब मुद्रित होते हैं जब उपकरण तालिका का चेकसमिंग पूरा कर लेता है।
कॉलम इस प्रकार हैं:
टीएस टाइमस्टैम्प (वर्ष के बिना) जब टूल ने तालिका को चेकसम करना समाप्त कर दिया।
त्रुटियों
तालिका को जाँचते समय होने वाली त्रुटियों और चेतावनियों की संख्या। त्रुटियाँ
और तालिका प्रगति पर होने पर चेतावनियाँ मानक त्रुटि पर मुद्रित होती हैं।
डिफ
टुकड़ों की संख्या जो एक या अधिक प्रतिकृतियों पर मास्टर से भिन्न होती है। अगर
"--नो-रेप्लिकेट-चेक" निर्दिष्ट है, इस कॉलम में हमेशा शून्य होगा। अगर
"--रेप्लिकेट-चेक-ओनली" निर्दिष्ट किया गया है, तो केवल अंतर वाली तालिकाएँ मुद्रित की जाती हैं।
पंक्तियों
तालिका से चयनित और जांचे गए पंक्तियों की संख्या। यह अलग हो सकता है
यदि आप --where विकल्प का उपयोग करते हैं तो तालिका में पंक्तियों की संख्या से।
हिस्सा
उन टुकड़ों की संख्या जिनमें तालिका को विभाजित किया गया था।
को छोड़ दिया
इनमें से एक या अधिक समस्याओं के कारण छोड़े गए टुकड़ों की संख्या:
* MySQL --chunk-index का उपयोग नहीं कर रहा है
* MySQL फुल चंक इंडेक्स का उपयोग नहीं कर रहा है (--[नहीं]चेक-प्लान)
* चंक का आकार --चंक-आकार * --चंक-आकार-सीमा से बड़ा है
* लॉक प्रतीक्षा समय समाप्त हो गया (--पुनः प्रयास)
* चेकसम क्वेरी समाप्त (--पुनः प्रयास)
पीटी-टेबल-चेकसम 2.2.5 के अनुसार, छोड़े गए हिस्से एक गैर-शून्य "बाहर निकलने की स्थिति" का कारण बनते हैं।
TIME
तालिका को जाँचते समय समय बीत गया।
टेबल
डेटाबेस और तालिका जिसे चेकसम किया गया था।
यदि "--रेप्लिकेट-चेक-ओनली" निर्दिष्ट किया गया है, तो केवल पता लगाए गए प्रतिकृतियों पर चेकसम अंतर होगा
मुद्रित हैं. आउटपुट अलग है: प्रति प्रतिकृति एक पैराग्राफ, एक चेकसम अंतर
प्रति पंक्ति, और मान रिक्त स्थान द्वारा अलग किए गए हैं:
h=127.0.0.1,P=12346 पर अंतर
टेबल चंक CNT_DIFF CRC_DIFF CHUNK_INDEX निचली सीमा ऊपरी सीमा
db1.tbl1 1 0 1 प्राथमिक 1 100
db1.tbl1 6 0 1 प्राथमिक 501 600
h=127.0.0.1,P=12347 पर अंतर
टेबल चंक CNT_DIFF CRC_DIFF CHUNK_INDEX निचली सीमा ऊपरी सीमा
db1.tbl1 1 0 1 प्राथमिक 1 100
db2.tbl2 9 5 0 प्राथमिक 101 200
पैराग्राफ की पहली पंक्ति भिन्नता के साथ प्रतिकृति को इंगित करती है। इस उदाहरण में
दो हैं: h=127.0.0.1,P=12346 और h=127.0.0.1,P=12347। कॉलम इस प्रकार हैं:
टेबल
डेटाबेस और तालिका जो मास्टर से भिन्न है।
टुकड़ा
तालिका का खंड संख्या जो मास्टर से भिन्न है।
CNT_DIFF
प्रतिकृति पर चंक पंक्तियों की संख्या घटाकर मास्टर पर चंक पंक्तियों की संख्या घटा दी जाती है।
सीआरसी_डीआईएफएफ
1 यदि प्रतिकृति पर टुकड़े की सीआरसी, प्रतिकृति पर टुकड़े की सीआरसी से भिन्न है
मास्टर, अन्यथा 0.
CHUNK_INDEX
तालिका को खंडित करने के लिए सूचकांक का उपयोग किया जाता है।
निचली_सीमा
सूचकांक मान जो खंड की निचली सीमा को परिभाषित करते हैं।
ऊपरी सीमा
सूचकांक मान जो खंड की ऊपरी सीमा को परिभाषित करते हैं।
बाहर निकलें स्थिति
पीटी-टेबल-चेकसम में तीन संभावित निकास स्थितियाँ हैं: शून्य, 255, और कोई अन्य मान एक है
विभिन्न समस्याओं के लिए झंडे के साथ बिटमास्क।
शून्य निकास स्थिति यह दर्शाती है कि कोई त्रुटि, चेतावनियाँ, या चेकसम अंतर नहीं है, या छोड़ दिया गया है
टुकड़े या टेबल.
255 निकास स्थिति एक घातक त्रुटि को इंगित करती है। दूसरे शब्दों में: उपकरण मर गया या दुर्घटनाग्रस्त हो गया।
त्रुटि "STDERR" पर मुद्रित होती है।
यदि निकास स्थिति शून्य या 255 नहीं है, तो इसका मान इनके साथ बिटमास्क के रूप में कार्य करता है
झंडे:
फ़्लैग बिट वैल्यू का अर्थ
================ ========= ======================== ================
त्रुटि 1 एक गैर-घातक त्रुटि उत्पन्न हुई
ALREADY_RUNNING 2 --पिड फ़ाइल मौजूद है और पीआईडी चल रही है
CAUGHT_SIGNAL 4 पकड़ा गया SIGHUP, SIGINT, SIGPIPE, या SIGTERM
NO_SLAVES_FOUND 8 कोई प्रतिकृति या क्लस्टर नोड नहीं मिला
TABLE_DIFF 16 कम से कम एक अंतर पाया गया
SKIP_CHUNK 32 कम से कम एक हिस्सा छोड़ दिया गया
SKIP_TABLE 64 कम से कम एक टेबल छोड़ दी गई थी
यदि कोई ध्वज सेट किया गया है, तो निकास स्थिति गैर-शून्य होगी। बिटवाइज़ "AND" ऑपरेशन का उपयोग करें
किसी विशेष झंडे की जाँच करें। उदाहरण के लिए, यदि "$exit_status & 16" सत्य है, तो कम से कम
एक अंतर पाया गया.
पीटी-टेबल-चेकसम 2.2.5 के अनुसार, छोड़े गए हिस्से गैर-शून्य निकास स्थिति का कारण बनते हैं। एक निकास
शून्य या 32 की स्थिति पिछले छोड़े गए हिस्सों के साथ शून्य निकास स्थिति के बराबर है
उपकरण के संस्करण.
विकल्प
यह उपकरण अतिरिक्त आदेश-पंक्ति तर्क स्वीकार करता है। "सिनॉप्सिस" और उपयोग का संदर्भ लें
विवरण के लिए जानकारी।
--आस्क-पास
समूह: कनेक्शन
MySQL से कनेक्ट करते समय पासवर्ड के लिए संकेत दें।
--[नहीं]चेक-बिनलॉग-प्रारूप
डिफ़ॉल्ट: हाँ
जांचें कि "binlog_format" सभी सर्वरों पर समान है।
"सीमाएं" के अंतर्गत "पंक्ति-आधारित प्रतिकृति का उपयोग कर प्रतिकृतियां" देखें।
--बाइनरी-सूचकांक
यह विकल्प "--क्रिएट-रेप्लिकेट-टेबल" के व्यवहार को संशोधित करता है जैसे कि
प्रतिकृति तालिका के ऊपरी और निचले सीमा स्तंभ BLOB डेटा के साथ बनाए जाते हैं
प्रकार। यह उन मामलों में उपयोगी है जहां आपको कुंजियों के साथ तालिकाओं की जांच करने में परेशानी होती है
जिसमें बाइनरी डेटा प्रकार शामिल हो या जिसमें गैर-मानक वर्ण सेट हों। देखना
"--प्रतिकृति"।
--चेक-अंतराल
प्रकार: समय; डिफ़ॉल्ट: 1; समूह: गला घोंटना
"--मैक्स-लैग" की जाँच के बीच सोने का समय।
--[नहीं]चेक-योजना
डिफ़ॉल्ट: हाँ
सुरक्षा के लिए क्वेरी निष्पादन योजनाओं की जाँच करें। डिफ़ॉल्ट रूप से, यह विकल्प pt-table- का कारण बनता है
छोटी राशि तक पहुंचने के लिए क्वेरी चलाने से पहले EXPLAIN चलाने के लिए चेकसम
डेटा का, लेकिन यदि MySQL खराब निष्पादन योजना चुनता है तो यह कई पंक्तियों तक पहुंच सकता है। इन
खंड सीमाओं और स्वयं खंड प्रश्नों को निर्धारित करने के लिए क्वेरीज़ शामिल करें। अगर
ऐसा प्रतीत होता है कि MySQL एक खराब क्वेरी निष्पादन योजना का उपयोग करेगा, टूल इसे छोड़ देगा
मेज का टुकड़ा.
यह उपकरण यह निर्धारित करने के लिए कई अनुमानों का उपयोग करता है कि कोई निष्पादन योजना खराब है या नहीं।
पहला यह है कि क्या EXPLAIN रिपोर्ट करता है कि MySQL एक्सेस के लिए वांछित इंडेक्स का उपयोग करना चाहता है
पंक्तियाँ. यदि MySQL एक अलग इंडेक्स चुनता है, तो टूल क्वेरी को असुरक्षित मानता है।
टूल यह भी जांचता है कि MySQL कितनी इंडेक्स रिपोर्ट का उपयोग करेगा
जिज्ञासा। EXPLAIN आउटपुट इसे key_len कॉलम में दिखाता है। उपकरण याद रखता है
सबसे बड़ा key_len देखा गया है, और उन हिस्सों को छोड़ देता है जहां MySQL रिपोर्ट करता है कि यह छोटे का उपयोग करेगा
सूचकांक का उपसर्ग. इस अनुमान को ऐसे लंघन खंडों के रूप में समझा जा सकता है जिनमें a
अन्य हिस्सों की तुलना में खराब निष्पादन योजना।
खराब निष्पादन के कारण पहली बार किसी खंड के छूट जाने पर उपकरण एक चेतावनी प्रिंट करता है
प्रत्येक तालिका में योजना बनाएं. बाद के हिस्सों को चुपचाप छोड़ दिया जाता है, हालाँकि आप देख सकते हैं
उपकरण के आउटपुट में छोड़े गए कॉलम में छोड़े गए हिस्सों की गिनती।
यह विकल्प प्रत्येक तालिका और खंड में कुछ सेटअप कार्य जोड़ता है। हालाँकि काम नहीं है
MySQL के लिए घुसपैठ, इसके परिणामस्वरूप सर्वर पर अधिक राउंड-ट्रिप होती है, जो उपभोग करती है
समय। टुकड़ों को बहुत छोटा करने से ऊपरी हिस्सा अपेक्षाकृत बड़ा हो जाएगा। यह
इसलिए यह अनुशंसा की जाती है कि आप टुकड़ों को बहुत छोटा न बनाएं, क्योंकि उपकरण में समय लग सकता है
यदि आप ऐसा करते हैं तो इसे पूरा करने में बहुत लंबा समय लगेगा।
--[नहीं]चेक-प्रतिकृति-फ़िल्टर
डिफ़ॉल्ट: हाँ; समूह: सुरक्षा
यदि किसी प्रतिकृति पर कोई प्रतिकृति फ़िल्टर सेट है तो चेकसम न करें। उपकरण दिखता है
सर्वर विकल्पों के लिए जो प्रतिकृति को फ़िल्टर करते हैं, जैसे कि binlog_ignore_db और
प्रतिकृति_do_db. यदि उसे ऐसा कोई फ़िल्टर मिलता है, तो वह एक त्रुटि के साथ बंद हो जाता है।
यदि प्रतिकृतियां किसी फ़िल्टरिंग विकल्प के साथ कॉन्फ़िगर की गई हैं, तो आपको सावधान रहना चाहिए
मास्टर पर मौजूद किसी भी डेटाबेस या टेबल को चेकसम करने के लिए, न कि प्रतिकृतियों पर।
ऐसी तालिकाओं में परिवर्तन आमतौर पर प्रतिकृतियों पर छोड़े जा सकते हैं क्योंकि
फ़िल्टरिंग विकल्प, लेकिन चेकसम क्वेरीज़ तालिका की सामग्री को संशोधित करती हैं
चेकसम को संग्रहीत करता है, न कि उन तालिकाओं को जिनके डेटा को आप चेकसम कर रहे हैं। इसलिए,
इन प्रश्नों को प्रतिकृति पर निष्पादित किया जाएगा, और यदि आप तालिका या डेटाबेस पर हैं
चेकसमिंग मौजूद नहीं है, प्रश्नों के कारण प्रतिकृति विफल हो जाएगी। अधिक जानकारी के लिए
प्रतिकृति नियमों पर जानकारी, देखें
<http://dev.mysql.com/doc/en/replication-rules.html>.
प्रतिकृति फ़िल्टरिंग से यह सुनिश्चित करना असंभव हो जाता है कि चेकसम क्वेरीज़ नहीं होंगी
प्रतिकृति को तोड़ें (या बस दोहराने में विफल रहें)। यदि आप आश्वस्त हैं कि इसे चलाना ठीक है
चेकसम क्वेरीज़, आप चेक को अक्षम करने के लिए इस विकल्प को अस्वीकार कर सकते हैं। यह सभी देखें
"--प्रतिकृति-डेटाबेस"।
"प्रतिकृति चेक" भी देखें।
--चेक-स्लेव-लैग
प्रकार: स्ट्रिंग; समूह: गला घोंटना
चेकसमिंग को तब तक रोकें जब तक कि इस प्रतिकृति का अंतराल "--मैक्स-लैग" से कम न हो जाए। मान एक है
डीएसएन जो मास्टर होस्ट और कनेक्शन विकल्पों से गुण प्राप्त करता है
("--पोर्ट", "--उपयोगकर्ता", आदि)। डिफ़ॉल्ट रूप से, पीटी-टेबल-चेकसम मॉनिटर सभी पर पिछड़ जाते हैं
कनेक्टेड प्रतिकृतियां, लेकिन यह विकल्प अंतराल निगरानी को निर्दिष्ट प्रतिकृति तक सीमित करता है।
यह उपयोगी है यदि कुछ प्रतिकृतियां जानबूझकर विलंबित हैं (पीटी-स्लेव-विलंब के साथ)।
उदाहरण), जिस स्थिति में आप मॉनिटर करने के लिए एक सामान्य प्रतिकृति निर्दिष्ट कर सकते हैं।
"प्रतिकृति चेक" भी देखें।
--[नहीं]चेक-स्लेव-टेबल
डिफ़ॉल्ट: हाँ; समूह: सुरक्षा
जाँचता है कि दासों पर तालिकाएँ मौजूद हैं और उनमें सभी चेकसम "--कॉलम" हैं। टेबल
स्लेव का गायब होना या सभी चेकसम "--कॉलम" का न होना टूल का कारण बन सकता है
जब यह अंतरों की जाँच करने का प्रयास करता है तो प्रतिकृति को तोड़ देता है। इस चेक को केवल तभी अक्षम करें यदि
आप जोखिमों से अवगत हैं और आश्वस्त हैं कि सभी दासों की सभी तालिकाएँ मौजूद हैं और हैं
गुरु के समान.
--चंक-सूचकांक
टाइप करें: स्ट्रिंग
चंकिंग टेबल के लिए इस इंडेक्स को प्राथमिकता दें। डिफ़ॉल्ट रूप से, pt-table-checksum सबसे अधिक चुनता है
चंकिंग के लिए उपयुक्त सूचकांक। यह विकल्प आपको वह सूचकांक निर्दिष्ट करने देता है जो आप
पसंद करना। यदि सूचकांक मौजूद नहीं है, तो pt-table-checksum वापस अपने पर आ जाएगा
सूचकांक चुनने का डिफ़ॉल्ट व्यवहार। pt-table-checksum सूचकांक को इसमें जोड़ता है
"फोर्स इंडेक्स" क्लॉज में चेकसम एसक्यूएल स्टेटमेंट। इस विकल्प का उपयोग करते समय सावधान रहें;
सूचकांक का ख़राब चयन खराब प्रदर्शन का कारण बन सकता है। इसका उपयोग कब करना संभवतः सबसे अच्छा है
आप केवल एक तालिका की जाँच कर रहे हैं, संपूर्ण सर्वर की नहीं।
--चंक-सूचकांक-कॉलम
प्रकार: int
"--चंक-इंडेक्स" के केवल इतने सारे बाएं-सबसे कॉलम का उपयोग करें। यह केवल के लिए काम करता है
कंपाउंड इंडेक्स, और उन मामलों में उपयोगी है जहां MySQL क्वेरी ऑप्टिमाइज़र में एक बग है
(योजनाकार) इसे खोजने के लिए सूचकांक का उपयोग करने के बजाय पंक्तियों की एक बड़ी श्रृंखला को स्कैन करने का कारण बनता है
प्रारंभ और समाप्ति बिंदु सटीक रूप से। यह समस्या कभी-कभी इंडेक्स पर होती है
कई कॉलम, जैसे 4 या अधिक। यदि ऐसा होता है, तो टूल एक चेतावनी प्रिंट कर सकता है
"--[नहीं]चेक-प्लान" विकल्प से संबंधित। उपकरण को केवल पहले उपयोग करने का निर्देश देना
सूचकांक का एन कॉलम कुछ मामलों में बग का समाधान है।
--खंड आकार
प्रकार: आकार; डिफ़ॉल्ट: 1000
प्रत्येक चेकसम क्वेरी के लिए चयन की जाने वाली पंक्तियों की संख्या। स्वीकार्य प्रत्यय k, M, G हैं।
अधिकांश मामलों में आपको इस विकल्प का उपयोग नहीं करना चाहिए; इसके बजाय "--चंक-टाइम" को प्राथमिकता दें।
यह विकल्प डिफ़ॉल्ट व्यवहार को ओवरराइड कर सकता है, जो कि चंक आकार को समायोजित करना है
टुकड़ों को बिल्कुल "--चंक-टाइम" सेकंड में चलाने का प्रयास करने के लिए गतिशील रूप से। जब यह
विकल्प स्पष्ट रूप से सेट नहीं है, इसका डिफ़ॉल्ट मान प्रारंभिक बिंदु के रूप में उपयोग किया जाता है, लेकिन उसके बाद
कि, टूल इस विकल्प के मान को अनदेखा कर देता है। यदि आप इस विकल्प को स्पष्ट रूप से सेट करते हैं,
हालाँकि, फिर यह गतिशील समायोजन व्यवहार को अक्षम कर देता है और सभी भाग बनाने का प्रयास करता है
पंक्तियों की बिल्कुल निर्दिष्ट संख्या।
एक सूक्ष्मता है: यदि खंड सूचकांक अद्वितीय नहीं है, तो यह संभव है कि खंड
इच्छा से अधिक बड़ा होगा. उदाहरण के लिए, यदि किसी तालिका को किसी सूचकांक द्वारा विभाजित किया गया है
इसमें किसी दिए गए मान का 10,000 है, मेल खाने वाला WHERE क्लॉज लिखने का कोई तरीका नहीं है
केवल 1,000 मान, और वह हिस्सा कम से कम 10,000 पंक्तियाँ बड़ा होगा। इस तरह का एक
खंड संभवतः "--खंड-आकार-सीमा" के कारण छोड़ दिया जाएगा।
छोटे हिस्से के आकार का चयन करने से उपकरण आंशिक रूप से बहुत धीमा हो जाएगा
"--[नहीं]चेक-प्लान" के लिए आवश्यक सेटअप कार्य के कारण।
--खंड-आकार-सीमा
प्रकार: फ्लोट; डिफ़ॉल्ट: 2.0; समूह: सुरक्षा
चेकसम के टुकड़ों को वांछित टुकड़े के आकार से बहुत बड़ा न करें।
जब किसी तालिका में कोई अद्वितीय अनुक्रमणिका नहीं होती है, तो खंड आकार गलत हो सकते हैं। इस विकल्प
अशुद्धि के लिए अधिकतम सहनीय सीमा निर्दिष्ट करता है। उपकरण का उपयोग करता है को
अनुमान लगाएं कि टुकड़े में कितनी पंक्तियाँ हैं। यदि वह अनुमान वांछित हिस्से से अधिक है
आकार सीमा से गुना अधिक है (डिफ़ॉल्ट रूप से दोगुना बड़ा), तो उपकरण खंड को छोड़ देता है।
इस विकल्प के लिए न्यूनतम मान 1 है, जिसका अर्थ है कि कोई भी हिस्सा इससे बड़ा नहीं हो सकता
"--खंड आकार"। आप संभवतः 1 निर्दिष्ट नहीं करना चाहेंगे, क्योंकि पंक्तियाँ रिपोर्ट की गई हैं
EXPLAIN अनुमान हैं, जो पंक्तियों की वास्तविक संख्या से भिन्न हो सकते हैं
टुकड़ा. यदि उपकरण बहुत सारे टुकड़ों को छोड़ देता है क्योंकि वे बड़े आकार के हैं, तो हो सकता है कि आप चाहें
2 के डिफ़ॉल्ट से बड़ा मान निर्दिष्ट करने के लिए।
आप 0 का मान निर्दिष्ट करके बड़े आकार के चंक चेकिंग को अक्षम कर सकते हैं।
--खंड-समय
प्रकार: फ्लोट; डिफ़ॉल्ट: 0.5
चंक आकार को गतिशील रूप से समायोजित करें ताकि प्रत्येक चेकसम क्वेरी को निष्पादित होने में इतना समय लगे।
उपकरण सभी तालिकाओं और प्रत्येक तालिका के लिए चेकसम दर (प्रति सेकंड पंक्तियाँ) को ट्रैक करता है
व्यक्तिगत रूप से. यह प्रत्येक चेकसम क्वेरी के बाद चंक आकार को समायोजित करने के लिए इन दरों का उपयोग करता है,
ताकि अगली चेकसम क्वेरी को निष्पादित होने में इतना समय (सेकंड में) लगे।
एल्गोरिथ्म इस प्रकार है: प्रत्येक तालिका की शुरुआत में, खंड का आकार होता है
उपकरण के काम करना शुरू करने के बाद से प्रति सेकंड कुल औसत पंक्तियों से प्रारंभ किया गया, या
यदि उपकरण ने अभी तक काम करना शुरू नहीं किया है तो "--चंक-आकार" का मान। प्रत्येक के लिए
तालिका के अगले भाग में, उपकरण प्रश्न पूछने के लिए खंड के आकार को समायोजित करता है
वांछित समय में चलाएँ। यह तेजी से घटती हुई चलती औसत रखता है
प्रति सेकंड प्रश्नों की संख्या, ताकि यदि परिवर्तन के कारण सर्वर का प्रदर्शन बदल जाए
सर्वर लोड होने पर, उपकरण शीघ्रता से अनुकूलित हो जाता है। यह उपकरण को पूर्वानुमानित रूप से प्राप्त करने की अनुमति देता है
प्रत्येक तालिका और समग्र रूप से सर्वर के लिए समयबद्ध क्वेरीज़।
यदि यह विकल्प शून्य पर सेट है, तो खंड का आकार स्वतः समायोजित नहीं होता है, इसलिए चेकसम को क्वेरी करें
समय अलग-अलग होगा, लेकिन क्वेरी चेकसम का आकार नहीं होगा। वही काम करने का दूसरा तरीका
इसका उद्देश्य "--चंक-साइज़" को यहीं छोड़ने के बजाय स्पष्ट रूप से उसके लिए एक मान निर्दिष्ट करना है
चूक।
--स्तंभ
संक्षिप्त रूप: -सी; प्रकार: सरणी; समूह: फ़िल्टर
केवल स्तंभों की इस अल्पविराम से अलग की गई सूची को चेकसम करें। यदि किसी तालिका में इनमें से कुछ भी नहीं है
निर्दिष्ट कॉलम इसे छोड़ दिया जाएगा।
यह विकल्प सभी तालिकाओं पर लागू होता है, इसलिए यह वास्तव में केवल तभी समझ में आता है जब किसी को चेकसम किया जाता है
तालिका जब तक कि तालिकाओं में स्तंभों का एक सामान्य सेट न हो।
--कॉन्फ़िगरेशन
प्रकार: सारणी; समूह: कॉन्फ़िग
कॉन्फिग फाइलों की इस अल्पविराम से अलग की गई सूची को पढ़ें; यदि निर्दिष्ट किया गया है, तो यह पहला होना चाहिए
कमांड लाइन पर विकल्प।
डिफ़ॉल्ट कॉन्फ़िगरेशन फ़ाइलों की सूची के लिए "--help" आउटपुट देखें।
--[नहीं]क्रिएट-रेप्लिकेट-टेबल
डिफ़ॉल्ट: हाँ
यदि वे मौजूद नहीं हैं तो "--रेप्लिकेट" डेटाबेस और तालिका बनाएं। की संरचना
प्रतिकृति तालिका "--प्रतिकृति" में उल्लिखित सुझाई गई तालिका के समान है।
--डेटाबेस
संक्षिप्त रूप: -d; प्रकार: हैश; समूह: फ़िल्टर
डेटाबेस की इस अल्पविराम से अलग की गई सूची को केवल चेकसम करें।
--डेटाबेस-रेगेक्स
प्रकार: स्ट्रिंग; समूह: फ़िल्टर
केवल चेकसम डेटाबेस जिनके नाम इस पर्ल रेगेक्स से मेल खाते हैं।
--डिफ़ॉल्ट-फ़ाइल
संक्षिप्त रूप: -F; प्रकार: स्ट्रिंग; समूह: कनेक्शन
दी गई फ़ाइल से केवल mysql विकल्प पढ़ें। आपको एक पूर्ण पथनाम देना होगा।
--[नहीं]खाली-प्रतिकृति-तालिका
डिफ़ॉल्ट: हाँ
तालिका को चेकसम करने से पहले प्रत्येक तालिका के लिए पिछले चेकसम को हटा दें। इस विकल्प
संपूर्ण तालिका को छोटा नहीं करता, यह केवल प्रत्येक तालिका के लिए पंक्तियाँ (चेकसम) हटाता है
तालिका को चेकसम करने से ठीक पहले। इसलिए, यदि चेकसमिंग समय से पहले बंद हो जाती है और
पहले से मौजूद डेटा था, उन तालिकाओं के लिए अभी भी पंक्तियाँ होंगी जो मौजूद नहीं थीं
टूल बंद होने से पहले चेकसम किया गया।
यदि आप पिछले चेकसम रन से फिर से शुरू कर रहे हैं, तो चेकसम रिकॉर्ड के लिए
वह तालिका जिससे उपकरण फिर से शुरू होता है, खाली नहीं किया जाएगा।
संपूर्ण प्रतिकृति तालिका को खाली करने के लिए, आपको पहले "TRUNCATE TABLE" को मैन्युअल रूप से निष्पादित करना होगा
उपकरण चलाना.
--इंजन
संक्षिप्त रूप: -ई; प्रकार: हैश; समूह: फ़िल्टर
केवल चेकसम तालिकाएँ जो इन भंडारण इंजनों का उपयोग करती हैं।
--समझाना
संचयी: हाँ; डिफ़ॉल्ट: 0; समूह: आउटपुट
चेकसम क्वेरी दिखाएं, लेकिन निष्पादित न करें ("--[नहीं]खाली-प्रतिकृति-तालिका" अक्षम करता है)।
यदि दो बार निर्दिष्ट किया जाए, तो उपकरण वास्तव में चंकिंग एल्गोरिदम के माध्यम से पुनरावृत्त होता है,
प्रत्येक टुकड़े के लिए ऊपरी और निचली सीमा मानों को प्रिंट करना, लेकिन निष्पादित नहीं करना
चेकसम प्रश्न.
--फ्लोट-परिशुद्धता
प्रकार: int
फ्लोट और डबल नंबर-टू-स्ट्रिंग रूपांतरण के लिए परिशुद्धता। फ्लोट और डबल का कारण बनता है
मानों को दशमलव बिंदु के बाद अंकों की निर्दिष्ट संख्या तक पूर्णांकित किया जाना चाहिए
la गोल() MySQL में कार्य करें। इससे चेकसम बेमेल से बचने में मदद मिल सकती है
अलग-अलग MySQL पर समान मानों का अलग-अलग फ़्लोटिंग-पॉइंट प्रतिनिधित्व
संस्करण और हार्डवेयर। डिफ़ॉल्ट कोई पूर्णांकन नहीं है; मूल्यों को परिवर्तित किया जाता है
द्वारा तार CONCAT () फ़ंक्शन, और MySQL स्ट्रिंग प्रतिनिधित्व चुनता है। अगर आप
उदाहरण के लिए, 2 का मान निर्दिष्ट करें, फिर मान 1.008 और 1.009 को पूर्णांकित किया जाएगा
1.01, और चेकसम बराबर होगा।
--समारोह
टाइप करें: स्ट्रिंग
चेकसम के लिए हैश फ़ंक्शन (FNV1A_64, MURMUR_HASH, SHA1, MD5, CRC32, आदि)।
डिफ़ॉल्ट का उपयोग करना है सीआरसी32(), परंतु एमडी5() और SHA1() भी काम करते हैं, और आप अपना उपयोग कर सकते हैं
यदि आप चाहें तो स्वयं का कार्य, जैसे संकलित यूडीएफ। आपके द्वारा निर्दिष्ट फ़ंक्शन चलाया जाता है
SQL, पर्ल में नहीं है, इसलिए यह MySQL के लिए उपलब्ध होना चाहिए।
MySQL में अच्छे अंतर्निर्मित हैश फ़ंक्शन नहीं हैं जो तेज़ हों। सीआरसी32() बहुत प्रवण है
हैश टकराव के लिए, और एमडी5() और SHA1() बहुत सीपीयू-सघन हैं। FNV1A_64() यूडीएफ
जो पेरकोना सर्वर के साथ वितरित किया जाता है वह एक तेज़ विकल्प है। यह बहुत आसान है
संकलित करें और स्थापित करें; निर्देशों के लिए स्रोत कोड में हेडर देखें। अगर यह है
स्थापित, इसे प्राथमिकता दी जाती है एमडी5()। आप भी इसका उपयोग कर सकते हैं MURMUR_HASH() अगर कार्य
आप उसे यूडीएफ के रूप में संकलित और स्थापित करते हैं; स्रोत को पेरकोना के साथ भी वितरित किया जाता है
सर्वर, और यह इससे बेहतर हो सकता है FNV1A_64().
--मदद
समूह: सहायता
मदद दिखाएं और बाहर निकलें।
--मेज़बान
संक्षिप्त रूप: -h; प्रकार: स्ट्रिंग; डिफ़ॉल्ट: लोकलहोस्ट; समूह: कनेक्शन
कनेक्ट करने के लिए होस्ट.
--उपेक्षा-कॉलम
प्रकार: हैश; समूह: फ़िल्टर
चेकसम की गणना करते समय स्तंभों की इस अल्पविराम से अलग की गई सूची को अनदेखा करें। यदि एक टेबल
इसके सभी कॉलम --ignore-कॉलम द्वारा फ़िल्टर किए गए हैं, इसे छोड़ दिया जाएगा।
--अनदेखा-डेटाबेस
प्रकार: हैश; समूह: फ़िल्टर
डेटाबेस की इस अल्पविराम से अलग की गई सूची पर ध्यान न दें।
--अनदेखा-डेटाबेस-रेगेक्स
प्रकार: स्ट्रिंग; समूह: फ़िल्टर
उन डेटाबेसों पर ध्यान न दें जिनके नाम इस पर्ल रेगेक्स से मेल खाते हैं।
--अनदेखा-इंजन
प्रकार: हैश; डिफ़ॉल्ट: फ़ेडरेटेड,MRG_MyISAM; समूह: फ़िल्टर
भंडारण इंजनों की इस अल्पविराम से अलग की गई सूची पर ध्यान न दें।
--अनदेखा-टेबल
प्रकार: हैश; समूह: फ़िल्टर
तालिकाओं की इस अल्पविराम से अलग की गई सूची पर ध्यान न दें। तालिका के नाम इसके साथ योग्य हो सकते हैं
डेटाबेस का नाम। "--रेप्लिकेट" तालिका को हमेशा स्वचालित रूप से अनदेखा कर दिया जाता है।
--अनदेखा-टेबल-रेगेक्स
प्रकार: स्ट्रिंग; समूह: फ़िल्टर
उन तालिकाओं पर ध्यान न दें जिनके नाम पर्ल रेगेक्स से मेल खाते हैं।
--मैक्स-लैग
प्रकार: समय; डिफ़ॉल्ट: 1s; समूह: गला घोंटना
चेकसमिंग को तब तक रोकें जब तक कि सभी प्रतिकृतियों का अंतराल इस मान से कम न हो जाए। प्रत्येक के बाद
चेकसम क्वेरी (प्रत्येक खंड), पीटी-टेबल-चेकसम सभी के प्रतिकृति अंतराल को देखता है
सेकंड्स_बिहाइंड_मास्टर का उपयोग करके प्रतिकृतियां जिनसे यह जुड़ता है। यदि कोई प्रतिकृति पिछड़ रही है
इस विकल्प के मूल्य से अधिक, तो पीटी-टेबल-चेकसम के लिए सो जाएगा
"--चेक-इंटरवल" सेकंड, फिर सभी प्रतिकृतियों को दोबारा जांचें। यदि आप निर्दिष्ट करते हैं
"--चेक-स्लेव-लैग", तो टूल केवल उस सर्वर की लैग के लिए जांच करता है, सभी सर्वरों की नहीं।
उपकरण प्रतिकृतियों के पिछड़ने से रुकने का हमेशा इंतजार करता है। यदि कोई प्रतिकृति रोक दी जाती है, तो
प्रतिकृति प्रारंभ होने तक उपकरण हमेशा प्रतीक्षा करता है। चेकसमिंग एक बार फिर जारी है
प्रतिकृतियाँ चल रही हैं और बहुत अधिक पिछड़ नहीं रही हैं।
प्रतीक्षा करते समय टूल प्रगति रिपोर्ट प्रिंट करता है। यदि एक प्रतिकृति रोक दी जाती है, तो यह प्रिंट करता है
प्रगति रिपोर्ट तुरंत, फिर प्रत्येक प्रगति रिपोर्ट अंतराल पर।
"प्रतिकृति चेक" भी देखें।
--अधिकतम भार
प्रकार: सारणी; डिफ़ॉल्ट: थ्रेड्स_रनिंग=25; समूह: गला घोंटना
प्रत्येक खंड के बाद वैश्विक स्थिति दिखाएं की जांच करें, और यदि कोई स्थिति चर हो तो रोकें
सीमा से अधिक. विकल्प MySQL स्थिति की अल्पविराम से अलग की गई सूची स्वीकार करता है
सीमा की जांच करने के लिए चर। एक वैकल्पिक "=MAX_VALUE" (या ":MAX_VALUE") कर सकते हैं
प्रत्येक चर का अनुसरण करें. यदि नहीं दिया गया है, तो उपकरण जांच करके एक सीमा निर्धारित करता है
वर्तमान मूल्य और इसे 20% तक बढ़ाना।
उदाहरण के लिए, यदि आप चाहते हैं कि जब Threads_connected बहुत अधिक हो जाए तो टूल रुक जाए, तो आप
"थ्रेड्स_कनेक्टेड" निर्दिष्ट कर सकते हैं, और टूल वर्तमान मान की जांच करेगा
काम करना शुरू करता है और उस मूल्य में 20% जोड़ता है। यदि वर्तमान मान 100 है, तो उपकरण
Threads_connected 120 से अधिक होने पर रुक जाएगा, और 120 से नीचे होने पर काम करना फिर से शुरू कर देगा
दोबारा। यदि आप कोई स्पष्ट सीमा निर्दिष्ट करना चाहते हैं, जैसे कि 110, तो आप इनमें से किसी एक का उपयोग कर सकते हैं
"थ्रेड्स_कनेक्टेड:110" या "थ्रेड्स_कनेक्टेड=110"।
इस विकल्प का उद्देश्य उपकरण पर बहुत अधिक भार डालने से रोकना है
सर्वर. यदि चेकसम प्रश्न दखल देने वाले हैं, या यदि वे लॉक प्रतीक्षा का कारण बनते हैं, तो अन्य
सर्वर पर क्वेरीज़ ब्लॉक और कतारबद्ध हो जाएंगी। यह आमतौर पर कारण होगा
Threads_running को बढ़ाने के लिए, और टूल SHOW GLOBAL चलाकर इसका पता लगा सकता है
प्रत्येक चेकसम क्वेरी समाप्त होने के तुरंत बाद की स्थिति। यदि आप इसके लिए कोई सीमा निर्दिष्ट करते हैं
यह वैरिएबल, तो आप टूल को क्वेरी चलने तक प्रतीक्षा करने का निर्देश दे सकते हैं
सामान्य रूप से फिर से. हालाँकि, यह कतार में लगने से नहीं रोकेगा; यह केवल सर्वर देगा
कतार से उबरने का मौका. यदि आप कतार में लगे हुए देखते हैं, तो इसे कम करना सबसे अच्छा है
खंड समय.
--पासवर्ड
संक्षिप्त रूप: -p; प्रकार: स्ट्रिंग; समूह: कनेक्शन
कनेक्ट करते समय उपयोग करने के लिए पासवर्ड। यदि पासवर्ड में अल्पविराम हैं तो उन्हें अवश्य ही छोड़ देना चाहिए
बैकस्लैश के साथ: "परीक्षा\,पीएल"
--पिडी
टाइप करें: स्ट्रिंग
दी गई पीआईडी फाइल बनाएं। यदि PID फ़ाइल पहले से मौजूद है और
इसमें मौजूद PID वर्तमान PID से भिन्न है। हालांकि, अगर पीआईडी फाइल
मौजूद है और इसमें मौजूद PID अब नहीं चल रहा है, उपकरण PID को अधिलेखित कर देगा
वर्तमान पीआईडी के साथ फाइल। उपकरण के बाहर निकलने पर PID फ़ाइल स्वचालित रूप से हटा दी जाती है।
--लगाना
टाइप करें: स्ट्रिंग
पर्ल मॉड्यूल फ़ाइल जो "pt_table_checksum_plugin" वर्ग को परिभाषित करती है। एक प्लगइन आपको अनुमति देता है
एक पर्ल मॉड्यूल लिखने के लिए जो पीटी-टेबल-चेकसम के कई हिस्सों से जुड़ सकता है। यह
इसके लिए पर्ल और पेरकोना टूलकिट सम्मेलनों का अच्छा ज्ञान आवश्यक है, जो इससे परे हैं
इस दस्तावेज़ का यह दायरा. यदि आपके कोई प्रश्न हों तो कृपया पेरकोना से संपर्क करें
मदद की ज़रूरत है।
अधिक जानकारी के लिए "प्लगइन" देखें।
--बंदरगाह
संक्षिप्त रूप: -P; प्रकार: int; समूह: कनेक्शन
कनेक्शन के लिए उपयोग करने के लिए पोर्ट नंबर।
--प्रगति
प्रकार: सरणी; डिफ़ॉल्ट: समय, 30
एसटीडीईआरआर को प्रगति रिपोर्ट प्रिंट करें।
मान दो भागों वाली अल्पविराम से अलग की गई सूची है। पहला भाग प्रतिशत हो सकता है,
समय, या पुनरावृत्तियाँ; दूसरा भाग निर्दिष्ट करता है कि किसी अद्यतन को कितनी बार मुद्रित किया जाना चाहिए,
प्रतिशत, सेकंड या पुनरावृत्तियों की संख्या में। टूल प्रगति रिपोर्ट प्रिंट करता है
विभिन्न प्रकार के समय लेने वाले ऑपरेशन, जिनमें प्रतिकृतियों के पकड़ने की प्रतीक्षा करना भी शामिल है
वे पिछड़ जाते हैं.
--शांत
संक्षिप्त रूप: -q; संचयी: हाँ; डिफ़ॉल्ट: 0
केवल सबसे महत्वपूर्ण जानकारी प्रिंट करें ("--प्रगति" अक्षम करता है)। इसे निर्दिष्ट करना
विकल्प एक बार टूल को केवल त्रुटियों, चेतावनियों और तालिकाओं को प्रिंट करने का कारण बनता है
चेकसम अंतर.
इस विकल्प को दो बार निर्दिष्ट करने से उपकरण केवल त्रुटियाँ मुद्रित करता है। इस मामले में, आप
यह निर्धारित करने के लिए उपकरण की निकास स्थिति का उपयोग कर सकता है कि क्या कोई चेतावनी या चेकसम था
मतभेद।
--recurs
प्रकार: int
प्रतिकृतियों की खोज करते समय पदानुक्रम में दोहराए जाने वाले स्तरों की संख्या। डिफ़ॉल्ट है
अनंत। "--रिकर्सन-मेथड" और "रेप्लिका चेक्स" भी देखें।
--पुनरावर्तन-विधि
प्रकार: सरणी; डिफ़ॉल्ट: प्रक्रिया सूची, होस्ट
प्रतिकृतियों की खोज के लिए पसंदीदा पुनरावर्तन विधि। पीटी-टेबल-चेकसम निष्पादित करता है
दौड़ने से पहले और दौड़ते समय कई "प्रतिकृतियां जांचें"।
हालाँकि पीटी-टेबल-चेकसम चलाने के लिए प्रतिकृतियों की आवश्यकता नहीं है, उपकरण पता नहीं लगा सकता है
यह उन दासों पर निर्भर करता है जिन्हें वह खोज नहीं सकता। इसलिए, एक चेतावनी मुद्रित की जाती है और
यदि कोई प्रतिकृतियां नहीं मिलती हैं तो "बाहर निकलने की स्थिति" गैर-शून्य है और विधि "कोई नहीं" नहीं है। अगर
ऐसा होता है, एक अलग रिकर्सन विधि का प्रयास करें, या निर्दिष्ट करने के लिए "डीएसएन" विधि का उपयोग करें
जांचने के लिए प्रतिकृतियां.
संभावित तरीके हैं:
विधि का उपयोग
=========== ===================================== ======
प्रक्रिया सूची प्रक्रिया सूची दिखाएं
मेज़बान गुलाम दिखाएँ मेज़बान
क्लस्टर 'wsrep\_incoming\_पते' जैसी स्थिति दिखाएं
डीएसएन = डीएसएन एक तालिका से डीएसएन
कोई भी गुलाम नहीं मिलता
"प्रोसेसलिस्ट" विधि डिफ़ॉल्ट है, क्योंकि "शो स्लेव होस्ट्स" विश्वसनीय नहीं है।
हालाँकि, यदि सर्वर एक गैर-मानक पोर्ट (3306 नहीं) का उपयोग करता है, तो "होस्ट" विधि
डिफ़ॉल्ट बन जाता है क्योंकि यह इस मामले में बेहतर काम करता है।
"होस्ट" विधि के लिए प्रतिकृतियों को "रिपोर्ट_होस्ट" के साथ कॉन्फ़िगर करने की आवश्यकता होती है।
"रिपोर्ट_पोर्ट", आदि।
"क्लस्टर" विधि के लिए गैलेरा 23.7.3 या नए जैसे क्लस्टर पर आधारित क्लस्टर की आवश्यकता होती है
पेरकोना एक्स्ट्राडीबी क्लस्टर संस्करण 5.5.29 और उससे ऊपर। यह स्वचालित रूप से नोड्स की खोज करेगा
क्लस्टर "SHOW STATUS LIKE 'wsrep\_incoming\_addresses'" का उपयोग कर रहा है। आप गठबंधन कर सकते हैं
क्लस्टर नोड्स और प्रतिकृतियों को स्वचालित रूप से खोजने के लिए "प्रोसेसलिस्ट" और "होस्ट" के साथ "क्लस्टर",
लेकिन यह कार्यक्षमता प्रायोगिक है.
"डीएसएन" विधि विशेष है: प्रतिकृतियों को स्वचालित रूप से खोजने के बजाय, यह
विधि प्रतिकृति डीएसएन के साथ एक तालिका निर्दिष्ट करती है। टूल केवल इन्हीं से कनेक्ट होगा
प्रतिकृतियाँ यह विधि तब सबसे अच्छा काम करती है जब प्रतिकृतियां समान MySQL उपयोगकर्ता नाम का उपयोग नहीं करती हैं
मास्टर के रूप में पासवर्ड, या जब आप टूल को कनेक्ट होने से रोकना चाहते हैं
कुछ प्रतिकृतियाँ. "डीएसएन" विधि इस प्रकार निर्दिष्ट है: "--रिकर्सन-विधि
dsn=h=host,D=percona,t=dsns"। निर्दिष्ट DSN में D और t भाग होने चाहिए, या बस एक
डेटाबेस-योग्य टी भाग, जो डीएसएन तालिका निर्दिष्ट करता है। डीएसएन तालिका में होना चाहिए
निम्नलिखित संरचना:
तालिका `डीएसएनएस` बनाएं (
`आईडी` int(11) पूर्ण स्वतः वृद्धि नहीं,
`parent_id` int(11) डिफ़ॉल्ट शून्य,
`डीएसएन` वर्चर(255) शून्य नहीं,
प्राथमिक कुंजी (`आईडी`)
);
डीएसएन को "आईडी" द्वारा आदेशित किया जाता है, लेकिन अन्यथा "आईडी" और "पैरेंट_आईडी" को नजरअंदाज कर दिया जाता है। "डीएसएन"
कॉलम में एक प्रतिकृति DSN है जैसे कि यह कमांड लाइन पर दी जाएगी, उदाहरण के लिए:
"h=replika_host,u=repl_user,p=repl_pass"।
"कोई नहीं" विधि उपकरण को सभी दासों और क्लस्टर नोड्स को अनदेखा कर देती है। यह विधि है
अनुशंसित नहीं है क्योंकि यह प्रभावी रूप से "रेप्लिका चेक" को अक्षम कर देता है और नहीं
मतभेद पाया जा सकता है. हालाँकि, यदि आपको केवल चेकसम लिखने की आवश्यकता है तो यह उपयोगी है
मास्टर या एकल क्लस्टर नोड पर। सुरक्षित विकल्प है
"--नो-रेप्लिकेट-चेक": टूल प्रतिकृतियां और क्लस्टर नोड्स ढूंढता है, कार्यान्वित करता है
"प्रतिकृति जांचती है", लेकिन अंतर की जांच नहीं करती है। देखें "--[नहीं]रेप्लिकेट-चेक"।
--प्रतिकृति
प्रकार: स्ट्रिंग; डिफ़ॉल्ट: percona.checksums
इस तालिका में चेकसम परिणाम लिखें। प्रतिकृति तालिका में यह संरचना होनी चाहिए
(MAGIC_create_प्रतिकृति):
टेबल चेकसम बनाएं (
db CHAR(64) शून्य नहीं,
tbl CHAR(64) शून्य नहीं,
खंड पूर्णांक नहीं,
खंड_समय फ़्लोट शून्य,
चंक_इंडेक्स VARCHAR(200) शून्य,
निचली सीमा पाठ शून्य,
ऊपरी सीमा पाठ शून्य,
this_crc CHAR(40) शून्य नहीं,
यह_सीएनटी शून्य नहीं है,
मास्टर_सीआरसी CHAR(40) शून्य,
मास्टर_सीएनटी INT शून्य,
अद्यतन करेंट_टाइमस्टैम्प पर टीएस टाइमस्टैम्प शून्य डिफ़ॉल्ट करंट_टाइमस्टैम्प नहीं है,
प्राथमिक कुंजी (डीबी, टीबीएल, चंक),
सूचकांक ts_db_tbl (ts, db, tbl)
) इंजन=इनोडीबी;
नोट: निचली सीमा और ऊपरी सीमा डेटा प्रकार BLOB हो सकते हैं। "--बाइनरी-इंडेक्स" देखें।
डिफ़ॉल्ट रूप से, "--[नहीं]क्रिएट-रेप्लिकेट-टेबल" सत्य है, इसलिए डेटाबेस और तालिका
यदि वे मौजूद नहीं हैं तो इस विकल्प द्वारा निर्दिष्ट स्वचालित रूप से बनाए जाते हैं।
प्रतिकृति तालिका के लिए उपयुक्त भंडारण इंजन का चयन करना सुनिश्चित करें। यदि आप हैं
InnoDB तालिकाओं को जांचें, और आप इस तालिका के लिए MyISAM का उपयोग करें, एक गतिरोध टूट जाएगा
प्रतिकृति, क्योंकि इसमें लेन-देन संबंधी और गैर-लेन-देन संबंधी तालिकाओं का मिश्रण होता है
चेकसम स्टेटमेंट के कारण इसे बिनलॉग पर लिखा जाएगा, भले ही इसमें एक हो
गलती। फिर यह प्रतिकृतियों पर बिना किसी गतिरोध के पुनः चलेगा, और प्रतिकृति को तोड़ देगा
"स्वामी और दास पर अलग-अलग त्रुटि।" पीटी-टेबल के साथ यह कोई समस्या नहीं है-
चेकसम; यह MySQL प्रतिकृति के साथ एक समस्या है, और आप इसके बारे में अधिक पढ़ सकते हैं
MySQL मैनुअल.
प्रतिकृति तालिका को कभी भी चेकसम नहीं किया जाता है (टूल स्वचालित रूप से इस तालिका को इसमें जोड़ता है
"--अनदेखा-टेबल")।
--[नहीं]प्रतिकृति-जाँच
डिफ़ॉल्ट: हाँ
प्रत्येक तालिका को समाप्त करने के बाद डेटा अंतर के लिए प्रतिकृतियां जांचें। उपकरण ढूँढता है
सभी खोजी गई प्रतिकृतियों पर एक सरल SELECT कथन निष्पादित करके अंतरों को दूर किया जा सकता है।
क्वेरी प्रतिकृति के चेकसम परिणामों की तुलना मास्टर के चेकसम परिणामों से करती है। यह
आउटपुट के DIFFS कॉलम में अंतर की रिपोर्ट करता है।
--केवल-प्रतिकृति-जांचें
चेकसम क्वेरी निष्पादित किए बिना एकरूपता के लिए प्रतिकृतियां जांचें। यह विकल्प है
केवल "--[नहीं]रेप्लिकेट-चेक" के साथ प्रयोग किया जाता है। यदि निर्दिष्ट किया गया है, तो pt-table-checksum नहीं है
किसी भी तालिका को चेकसम करें। यह पिछले द्वारा पाए गए अंतरों के लिए प्रतिकृतियों की जाँच करता है
चेकसमिंग, और फिर बाहर निकल जाता है। यदि आप pt-table-checksum चुपचाप चलाते हैं तो यह उपयोगी हो सकता है
उदाहरण के लिए, क्रॉन जॉब में, और बाद में क्रॉन जॉब के परिणामों पर एक रिपोर्ट चाहते हैं,
शायद नागियोस चेक लागू करने के लिए।
--प्रतिकृति-जांच-पुनः प्रयास करें
प्रकार: इंट; डिफ़ॉल्ट: 1
अंतर सामने आने पर कई बार चेकसम तुलना का पुनः प्रयास करें। केवल जब
यह अंतर बना रहता है कि इतनी संख्या में जांच के बाद इसे वैध माना जाएगा या नहीं। इसका उपयोग कर रहे हैं
2 या अधिक मान वाला विकल्प उपयोग करते समय उत्पन्न होने वाले नकली मतभेदों को कम करता है
- फिर से शुरू करने का विकल्प।
--प्रतिकृति-डेटाबेस
टाइप करें: स्ट्रिंग
केवल इस डेटाबेस का उपयोग करें. डिफ़ॉल्ट रूप से, pt-table-checksum चयन करने के लिए USE निष्पादित करता है
डेटाबेस जिसमें वह तालिका शामिल है जिस पर वह वर्तमान में काम कर रहा है। यह एक सर्वोत्तम प्रयास है
बिनलॉग_इग्नोर_डीबी और जैसे प्रतिकृति फ़िल्टर के साथ समस्याओं से बचने के लिए
प्रतिकृति_इग्नोर_डीबी. हालाँकि, प्रतिकृति फ़िल्टर ऐसी स्थिति पैदा कर सकते हैं जहाँ
बस चीजों को करने का कोई सही तरीका नहीं है। कुछ कथनों को दोहराया नहीं जा सकता, और
अन्य के कारण प्रतिकृति विफल हो सकती है। ऐसे मामलों में, आप इस विकल्प का उपयोग कर सकते हैं
एक डिफ़ॉल्ट डेटाबेस निर्दिष्ट करें जिसे pt-table-checksum USE के साथ चुनता है, और कभी नहीं बदलता है।
यह भी देखें "--[नहीं]चेक-प्रतिकृति-फ़िल्टर"।
--फिर शुरू करना
अंतिम पूर्ण खंड से चेकसमिंग फिर से शुरू करें (अक्षम करता है)।
"--[नहीं]खाली-प्रतिकृति-तालिका")। यदि उपकरण सभी तालिकाओं की जांच करने से पहले बंद हो जाता है,
यह विकल्प अंतिम तालिका के अंतिम भाग से चेकसमिंग बायोडाटा बनाता है
ख़त्म होना।
--पुनर्प्रयास
प्रकार: इंट; डिफ़ॉल्ट: 2
जब कोई गैर-घातक त्रुटि हो तो एक टुकड़े को कई बार पुनः प्रयास करें। अघातक त्रुटियाँ हैं
लॉक वेट टाइमआउट या क्वेरी बंद होने जैसी समस्याएं।
--रन-टाइम
प्रकार: समय
कितनी देर तक दौड़ना है. डिफ़ॉल्ट तब तक चलना है जब तक सभी तालिकाओं को चेकसम नहीं कर दिया जाता। इन
समय मान प्रत्यय की अनुमति है: s (सेकंड), m (मिनट), h (घंटे), और d (दिन)।
एक आवंटित तालिका के भीतर कई तालिकाओं को चेकसम करने के लिए इस विकल्प को "--रेज़्यूमे" के साथ मिलाएं
समय, अगली बार चलाने पर उपकरण वहीं से शुरू होगा जहां छोड़ा था।
--विभाजक
प्रकार: स्ट्रिंग; गलती करना: #
विभाजक वर्ण के लिए उपयोग किया जाता है CONCAT_WS(). इस अक्षर का प्रयोग जोड़ने के लिए किया जाता है
चेकसमिंग करते समय कॉलम के मान।
--सेट-वार्स
प्रकार: सारणी; समूह: कनेक्शन
"वेरिएबल = मान" जोड़े की इस अल्पविराम से अलग सूची में MySQL चर सेट करें।
डिफ़ॉल्ट रूप से, उपकरण सेट करता है:
प्रतीक्षा_समयबाह्य = 10000
innodb_lock_wait_timeout=1
कमांड लाइन पर निर्दिष्ट चर इन डिफ़ॉल्ट को ओवरराइड करते हैं। उदाहरण के लिए,
"--set-vars Wait_timeout=500" निर्दिष्ट करना 10000 के डिफ़ॉल्ट मान को ओवरराइड करता है।
उपकरण एक चेतावनी प्रिंट करता है और यदि कोई चर सेट नहीं किया जा सकता है तो जारी रहता है।
--सॉकेट
संक्षिप्त रूप; प्रकार: स्ट्रिंग; समूह: कनेक्शन
कनेक्शन के लिए उपयोग करने के लिए सॉकेट फ़ाइल।
--टेबल्स
संक्षिप्त रूप: -t; प्रकार: हैश; समूह: फ़िल्टर
केवल अल्पविराम से अलग की गई तालिकाओं की सूची को चेकसम करें। तालिका के नाम इसके साथ योग्य हो सकते हैं
डेटाबेस का नाम.
--टेबल-रेगेक्स
प्रकार: स्ट्रिंग; समूह: फ़िल्टर
चेकसम केवल वे तालिकाएँ जिनके नाम इस पर्ल रेगेक्स से मेल खाते हैं।
--ट्रिम
जोड़ना काट-छांट करना() VARCHAR कॉलम के लिए (4.1 से >=5.0 की तुलना करने पर मदद करता है)। यह उपयोगी है
जब आप MySQL संस्करणों के बीच अनुगामी स्थान अंतर की परवाह नहीं करते हैं
अनुगामी स्थानों के प्रबंधन में भिन्नता होती है। MySQL 5.0 और बाद के सभी संस्करण पीछे चल रहे हैं
VARCHAR में रिक्त स्थान, जबकि पिछले संस्करण उन्हें हटा देंगे। ये मतभेद होंगे
झूठे चेकसम अंतर का कारण बनें।
--उपयोगकर्ता
संक्षिप्त रूप: -यू; प्रकार: स्ट्रिंग; समूह: कनेक्शन
लॉगिन के लिए उपयोगकर्ता यदि वर्तमान उपयोगकर्ता नहीं है।
--संस्करण
समूह: सहायता
संस्करण दिखाएं और बाहर निकलें।
--[नहीं]संस्करण-जांच
डिफ़ॉल्ट: हाँ
Percona टूलकिट, MySQL, और अन्य प्रोग्राम के नवीनतम संस्करण की जाँच करें।
यह दो अतिरिक्त के साथ एक मानक "स्वचालित रूप से अपडेट की जांच करें" सुविधा है
विशेषताएं। सबसे पहले, टूल स्थानीय सिस्टम पर अन्य प्रोग्रामों के संस्करण की जांच करता है
अपने स्वयं के संस्करण के अलावा। उदाहरण के लिए, यह प्रत्येक MySQL सर्वर के संस्करण की जाँच करता है
यह पर्ल, और पर्ल मॉड्यूल DBD::mysql से जुड़ता है। दूसरा, यह जाँचता है और चेतावनी देता है
ज्ञात समस्याओं वाले संस्करणों के बारे में। उदाहरण के लिए, MySQL 5.5.25 में एक महत्वपूर्ण बग था और
5.5.25a के रूप में पुनः जारी किया गया था।
किसी भी अपडेट या ज्ञात समस्या को टूल के सामान्य आउटपुट से पहले STDOUT पर प्रिंट किया जाता है।
इस सुविधा को उपकरण के सामान्य संचालन में कभी भी हस्तक्षेप नहीं करना चाहिए।
ज्यादा जानकारी के लिये पधारें .
--कहां
टाइप करें: स्ट्रिंग
केवल इस WHERE क्लॉज से मेल खाने वाली पंक्तियाँ ही बनाएँ। को सीमित करने के लिए आप इस विकल्प का उपयोग कर सकते हैं
तालिका के केवल भाग के लिए चेकसम। यह विशेष रूप से उपयोगी है यदि आपके पास संलग्न है-
केवल तालिकाएँ और सभी पंक्तियों की लगातार पुनः जाँच नहीं करना चाहते; आप दैनिक कार्य चला सकते हैं
उदाहरण के लिए, कल की पंक्तियाँ जाँचने के लिए।
यह विकल्प काफी हद तक mysqldump के -w विकल्प जैसा है। कहां निर्दिष्ट न करें
कीवर्ड. आपको मूल्य उद्धृत करने की आवश्यकता हो सकती है. यहाँ एक उदाहरण है:
पीटी-टेबल-चेकसम --जहां "ts > CURRENT_DATE - अंतराल 1 दिन"
प्रतिकृति निरीक्षण
डिफ़ॉल्ट रूप से, पीटी-टेबल-चेकसम इससे जुड़े सभी प्रतिकृतियों को ढूंढने और कनेक्ट करने का प्रयास करता है
मास्टर मेज़बान. इस स्वचालित प्रक्रिया को "स्लेव रिकर्सन" कहा जाता है और इसे नियंत्रित किया जाता है
"--रिकर्सन-विधि" और "--रिकर्सन" विकल्प। यह उपकरण सभी पर ये जाँच करता है
प्रतिकृतियां:
1. "--[नहीं]चेक-प्रतिकृति-फ़िल्टर"
पीटी-टेबल-चेकसम सभी प्रतिकृतियों पर प्रतिकृति फिल्टर की जांच करता है क्योंकि वे ऐसा कर सकते हैं
चेकसम प्रक्रिया को जटिल बनाना या तोड़ना। डिफ़ॉल्ट रूप से, यदि कोई हो तो उपकरण बाहर निकल जाएगा
प्रतिकृति फ़िल्टर पाए जाते हैं, लेकिन निर्दिष्ट करके इस जाँच को अक्षम किया जा सकता है
"--नो-चेक-रेप्लिकेशन-फ़िल्टर"।
2. "--प्रतिकृति" तालिका
पीटी-टेबल-चेकसम जाँचता है कि "--रेप्लिकेट" तालिका सभी प्रतिकृतियों पर मौजूद है, अन्यथा
जब मास्टर प्रतिकृति पर तालिका में अद्यतन किया जाता है तो चेकसमिंग प्रतिकृति को तोड़ सकता है
ऐसी प्रतिकृति के लिए जिसमें तालिका नहीं है। इस चेक को अक्षम नहीं किया जा सकता, और टूल
जब तक तालिका सभी प्रतिकृतियों पर मौजूद नहीं हो जाती, "--प्रगति" संदेशों को प्रिंट करते हुए, हमेशा के लिए प्रतीक्षा करती है
जबकि यह प्रतीक्षा करता है।
3. एकल टुकड़े का आकार
यदि किसी तालिका को मास्टर पर एक ही हिस्से में चेकसम किया जा सकता है, तो pt-table-checksum होगा
जांचें कि सभी प्रतिकृतियों पर तालिका का आकार "--चंक-आकार" से कम है *
"--चंक-आकार-सीमा"। यह उस दुर्लभ समस्या को रोकता है जहां मास्टर पर तालिका है
खाली या छोटा, लेकिन प्रतिकृति पर यह बहुत बड़ा होता है। इस मामले में, एकल टुकड़ा
मास्टर पर चेकसम प्रतिकृति को अधिभारित कर देगा।
एक और दुर्लभ समस्या तब होती है जब प्रतिकृति पर तालिका का आकार करीब होता है
"--चंक-आकार" * "--चंक-आकार-सीमा"। ऐसे मामलों में, तालिका होने की अधिक संभावना है
भले ही एक ही हिस्से में चेकसम करना सुरक्षित हो, फिर भी इसे छोड़ दिया गया। ऐसा इसलिए होता है क्योंकि
तालिका का आकार अनुमान है। जब वे अनुमान और "--चंक-आकार" *
"--चंक-आकार-सीमा" लगभग बराबर है, यह जांच अधिक संवेदनशील हो जाती है
तालिका आकारों में वास्तविक महत्वपूर्ण अंतरों के बजाय त्रुटि के मार्जिन का अनुमान लगाएं।
"--चंक-आकार-सीमा" के लिए बड़ा मान निर्दिष्ट करने से इस समस्या से बचने में मदद मिलती है।
इस चेक को अक्षम नहीं किया जा सकता.
4. अंतराल
प्रत्येक खंड के बाद, पीटी-टेबल-चेकसम सभी प्रतिकृतियों, या केवल पर अंतराल की जांच करता है
प्रतिकृति "--चेक-स्लेव-लैग" द्वारा निर्दिष्ट है। इससे टूल को ओवरलोड न होने में मदद मिलती है
चेकसम डेटा के साथ प्रतिकृतियां। इस चेक को अक्षम करने का कोई तरीका नहीं है, लेकिन आप कर सकते हैं
"--चेक-स्लेव-लैग" के साथ जांच करने के लिए एक एकल प्रतिकृति निर्दिष्ट करें, और यदि वह प्रतिकृति है
सबसे तेज़, यह टूल को रेप्लिका लैग कम होने के लिए बहुत लंबे समय तक प्रतीक्षा करने से रोकने में मदद करेगा।
5. चेकसम के टुकड़े
जब पीटी-टेबल-चेकसम किसी तालिका का चेकसम पूरा करता है, तो यह अंतिम चेकसम की प्रतीक्षा करता है
सभी प्रतिकृतियों को दोहराने के लिए खंड ताकि यह "--[नहीं]प्रतिकृति-जांच" निष्पादित कर सके।
--no-replication-check निर्दिष्ट करके उस विकल्प को अक्षम करने से यह चेक अक्षम हो जाता है, लेकिन यह
चेकसम अंतर की तत्काल रिपोर्टिंग को भी अक्षम कर देता है, जिससे दूसरे की आवश्यकता होती है
चेकसम अंतर ढूंढने और प्रिंट करने के लिए "--रेप्लिकेट-चेक-ओनली" के साथ टूल चलाएं।
लगाना
"--प्लगइन" द्वारा निर्दिष्ट फ़ाइल को एक क्लास (यानी एक पैकेज) को परिभाषित करना होगा
"pt_table_checksum_plugin" एक "new()" सबरूटीन के साथ। टूल इसका एक उदाहरण बनाएगा
इस वर्ग और किसी भी हुक को कॉल करें जिसे यह परिभाषित करता है। किसी हुक की आवश्यकता नहीं है, लेकिन प्लगइन की आवश्यकता नहीं है
उनके बिना बहुत उपयोगी है.
इन हुकों को, इस क्रम में, यदि परिभाषित किया जाए तो कहा जाता है:
init
पहले_प्रतिकृति_चेक करें
बाद_प्रतिकृति_चेक
get_slave_lag
before_checksum_table
After_checksum_table
प्रत्येक हुक को अलग-अलग तर्क दिए जाते हैं। यह देखने के लिए कि कौन से तर्क एक हुक में पारित किए गए हैं,
टूल के स्रोत कोड में हुक का नाम खोजें, जैसे:
# --प्लगइन हुक
अगर ($प्लगइन && $प्लगइन->कर सकते हैं('init') ) {
$प्लगइन->init(
गुलाम => $गुलाम,
स्लेव_लैग_सीएक्सएनएस => $स्लेव_लैग_सीएक्सएनएस,
repl_table => $repl_table,
);
}
टिप्पणी "# --प्लगइन हुक" प्रत्येक हुक कॉल से पहले आती है।
यदि आपके कोई प्रश्न हैं या सहायता की आवश्यकता है तो कृपया पेरकोना से संपर्क करें।
डीएसएन विकल्प
इन DSN विकल्पों का उपयोग DSN बनाने के लिए किया जाता है। प्रत्येक विकल्प "विकल्प = मान" की तरह दिया गया है।
विकल्प केस-संवेदी हैं, इसलिए P और p समान विकल्प नहीं हैं। नहीं हो सकता
"=" से पहले या बाद में व्हाइटस्पेस और यदि मान में व्हाइटस्पेस है तो उसे उद्धृत किया जाना चाहिए।
DSN विकल्प अल्पविराम से अलग किए गए हैं। पूर्ण विवरण के लिए पेरकोना-टूलकिट मैनपेज देखें।
· ए
डीएसएन: वर्णसेट; कॉपी: हाँ
डिफ़ॉल्ट वर्ण सेट।
· डी
कॉपी: नहीं
डीएसएन टेबल डेटाबेस।
· एफ
डीएसएन: mysql_read_default_file; कॉपी: हाँ
कनेक्शन मानों के लिए डिफ़ॉल्ट फ़ाइल.
· एच
डीएसएन: मेजबान; कॉपी: हाँ
होस्ट से कनेक्ट करें।
· पी
डीएसएन: पासवर्ड; कॉपी: हाँ
कनेक्ट करते समय उपयोग करने के लिए पासवर्ड। यदि पासवर्ड में अल्पविराम हैं तो उन्हें अवश्य ही छोड़ देना चाहिए
बैकस्लैश के साथ: "परीक्षा\,पीएल"
· पी
डीएसएन: बंदरगाह; कॉपी: हाँ
कनेक्शन के लिए उपयोग करने के लिए पोर्ट नंबर।
· एस
डीएसएन: mysql_socket; कॉपी: नहीं
कनेक्शन के लिए उपयोग करने के लिए सॉकेट फ़ाइल।
· टी
कॉपी: नहीं
डीएसएन टेबल टेबल।
· आप
डीएसएन: उपयोगकर्ता; कॉपी: हाँ
लॉगिन के लिए उपयोगकर्ता यदि वर्तमान उपयोगकर्ता नहीं है।
वातावरण
पर्यावरण चर "PTDEBUG" एसटीडीईआरआर को वर्बोज़ डिबगिंग आउटपुट सक्षम करता है। सक्षम करने के लिए
डिबगिंग और सभी आउटपुट को फ़ाइल में कैप्चर करें, जैसे टूल चलाएं:
PTDEBUG=1 पीटी-टेबल-चेकसम ... > FILE 2>&1
सावधान रहें: डिबगिंग आउटपुट बड़ा होता है और कई मेगाबाइट आउटपुट उत्पन्न कर सकता है।
प्रणाली आवश्यकताएँ
आपको Perl, DBI, DBD::mysql, और कुछ मुख्य पैकेजों की आवश्यकता है जिन्हें किसी भी में स्थापित किया जाना चाहिए
पर्ल का यथोचित नया संस्करण।
onworks.net सेवाओं का उपयोग करके ऑनलाइन pt-table-checksump का उपयोग करें