एक MySQL मास्टर / दास प्रतिकृति में, अगर मैं गुलाम को लिखूं तो क्या होगा?


17

कई सवाल

  • क्या स्लेव प्रविष्टि तब तक रहेगी जब तक कि स्लेव को प्रभावित करने वाले मास्टर पर तालिका में कोई सम्मिलित / अद्यतन / हटा नहीं दिया जाता है?

  • यदि नहीं, तो मैं यह कैसे सुनिश्चित करूं कि स्लेव मास्टर के साथ आगे जा रहा है (या तो स्लेव प्रविष्टि को हटाकर या उस प्रविष्टि को मैन्युअल रूप से कॉपी करके)?

  • सबसे महत्वपूर्ण बात, मैं कैसे पता लगाऊं कि टेबल आउट-ऑफ-सिंक हैं?


कृपया अपने प्रश्न को ठीक से समझाएं ...
अब्दुल मनफ

1
क्या एक मास्टर / दास का संबंध गुरु से दास के लिए एक-तरफ़ा सिंक नहीं है, लेकिन इसके विपरीत नहीं है? मैं पूछ रहा हूं कि अगर आप गुलाम को इस तरह के सेट-अप में लिखते हैं तो क्या होगा।
kfmfe04

जवाबों:


14

जब तक आप सीधे किसी 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 जैसी ही गुणवत्ता का होना चाहिए।


विस्तृत जवाब के लिए ty। मुझे लगा कि मेरे पास और प्रश्न हैं, लेकिन मुझे लगता है कि आपके जवाबों ने सभी मामलों को कवर किया है (पीटी-टेबल-सिंक वास्तव में उपयोगी लगता है)।
kfmfe04
हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.