जब तक आप सीधे किसी INSERT / UPDATE / DELETE स्टेटमेंट को स्लेव पर नहीं करते हैं, तब तक आपका स्लेव ठीक होना चाहिए। अन्यथा, MySQL प्रतिकृति टूट सकती है यदि आप गुलाम पर mydb.mytable में एक नई पंक्ति सम्मिलित करते हैं, और प्रतिकृति के माध्यम से, दास बाद में उसी PRIMARY KEY के साथ mydb.mytable को पंक्ति की INSERT का पता लगाता है। यह 1062 त्रुटि (डुप्लिकेट कुंजी) पैदा करता है।
जिस तरह से आप MySQL प्रतिकृति को तोड़े बिना गुलाम को लिख सकते हैं वह यह है:
- मास्टर के पास डेटाबेस db1, db2, db3 है
- दास मास्टर से db1, db2, db3 की प्रतिकृति बना रहा है
- तुम
CREATE DATABASE db4;
गुलाम पर चलते हो
- आप दास पर db4 में केवल INSERTs / UPDATEs / DELETE करते हैं
- आप दास पर केवल db1, db2, db3 के लिए INSERTs / UPDATEs / DELETE नहीं करते हैं
किसी भी टूल को डाउनलोड किए बिना सिंक और मास्टर स्लेव का पता लगाने के लिए, किसी भी टेबल को चुनें और मास्टर और उसी टेबल की स्लेव कॉपी पर एक टेबल के खिलाफ चेक टेबल को चलाएं ।
उदाहरण
यदि आपके पास एक मेज है mydb.mytable
, तो उसके खिलाफ कमांड चलाएं:
mysql> CHECKSUM TABLE mydb.mytable;
यदि मान वापस नहीं आते हैं, तो कुछ आउट-ऑफ-सिंक है।
यदि आप बल्क में टेबल के एक गुच्छा की जांच करना चाहते हैं, तो आप पेरकोना के MAATKIT को नीचे कर सकते हैं। आपको दो विशिष्ट उपकरणों की आवश्यकता होगी (पेरकोना के पास पेरकोना टूलकिट भी है जो उन्होंने खुद MAATKIT से लिया था जिसे अब और अधिक बढ़ावा दिया जा रहा है)
या
pt-table-checksum
मास्टर और स्लेव पर सभी तालिकाओं के खिलाफ एक चेक टेबल प्रदर्शन करेंगे। आप इसे केवल विशिष्ट लोगों पर सभी डेटाबेस करने के लिए कॉन्फ़िगर कर सकते हैं।
pt-table-sync
किसी भी तालिका के खिलाफ एक दास पर चलाया जा सकता है। -प्रिंट और --sync-to-master विकल्पों का उपयोग करके, आप यह देख सकते हैं कि स्लेव पर SQL स्टेटमेंट्स को निष्पादित करने की क्या आवश्यकता है, यह पूरी तरह से मास्टर से मेल खाने के लिए है। यह टूल उस तालिका के साथ काम नहीं करता है जिसमें PRIMARY KEY या UNIQUE कुंजी का अभाव है।
मैंने सालों से MAATKIT का इस्तेमाल किया है। मैं अभी भी कर रहा हूं। मैंने अभी तक पेरकोना टूलकिट की कोशिश नहीं की है, लेकिन मुझे यकीन है कि यह MAATKIT जैसी ही गुणवत्ता का होना चाहिए।