2017-05-14 10 views
5

मैं mysql नौसिखिया हूँ।mysql विफलता: दास को नए मास्टर के रूप में कैसे चुनें?

जब असफल होने की बात आती है, तो किस दास को नए मास्टर को पदोन्नत किया जाना चाहिए?

उदाहरण के लिए, एक मास्टर, बी और सी दास हैं है, और एक समय में से कुछ बिंदु पर बी और सी

को async प्रतिकृति करता है, बी सी, ए दुर्घटनाओं की तुलना में एक से अधिक डेटा प्राप्त करता है।

यदि हम सी को नए मास्टर को बढ़ावा देते हैं, और बी के मास्टर को सी में बदलते हैं, तो बी के साथ क्या होता है? यह सी से मेल खाने के लिए अपने डेटा truncates?

जाहिर है, बी सर्वश्रेष्ठ नए मास्टर उम्मीदवार हैं, लेकिन मेरा सवाल यह है कि इस तथ्य को कैसे निर्धारित किया जाए?

+0

http://stackoverflow.com/questions/14116488/master-slave-configuration –

+0

प्रश्न जिम्मेदार ... और यह एक चाल सवाल है क्योंकि आपको जवाब समझने से पहले प्रश्न को समझने की आवश्यकता है: क्या आप प्रतिकृति कर रहे हैं बिनलॉग निर्देशांक या वैश्विक लेनदेन पहचानकर्ता (जीटीआईडी) के आधार पर? –

+0

@ माइकल-एसक्लबॉट क्या आप दोनों को समझा सकते हैं? – kingluo

उत्तर

1

MySQL documentation से, मास्टर-गुलाम आर्किटेक्चर स्थापित करने के दो तरीके हैं। जीटीआईडी ​​(वैश्विक लेनदेन पहचानकर्ता) का उपयोग कर लेनदेन और नए संस्करण (5.6+) को दोहराने के लिए लॉग फ़ाइलों का उपयोग करने का पारंपरिक तरीका।

यदि आप फेलओवर हैंडलिंग करने के लिए जीटीआईडी ​​का उपयोग करना चुनते हैं तो आप mysqlfailover उपयोगिता का उपयोग करेंगे। , एक खोज पसंदीदा दास की एक सूची में किया जाता है मास्टर बनने के लिए करता है, तो कोई भी उपलब्ध एक और दास को चुना जाता है कर रहे हैं:

  • ऑटो (डिफ़ॉल्ट): उपयोगिता हैंडल डेटाबेस व्यवस्थापक द्वारा परिभाषित तीन तरीकों में से एक में गुरु के विफल रहता है । चुने हुए दास पहले सभी अन्य गुलामों के दास बन जाते हैं और इसमें अन्य गुलामों के प्रति परिवर्तन होते हैं, इस प्रकार नया मास्टर सबसे अद्यतित संस्करण संभव होगा।
  • चुनाव: ऊपर के रूप में ही है, सिवाय इसके कि यदि सूची में से कोई दास उपलब्ध हैं यह एक त्रुटि और खत्म (कोई विफलता) रिटर्न
  • असफल: नहीं विफलता होता है mysqlfailover सिर्फ डेटाबेस पर नजर रखने और यदि एक एक त्रुटि वापस आ जाएगी असफल होता है।

पारंपरिक तरीके से यह आवश्यक है कि आप डेटाबेस प्रबंधन में अपनी स्क्रिप्ट लागू करें और here बेहतर समझाया जाए।

+0

मुझे पता है कि ऑटो विफल होने के लिए उपकरण (आधिकारिक या नहीं) हैं, लेकिन मुझे दृश्य के पीछे सिद्धांत की आवश्यकता है। यही है, मुझे "क्यों" चाहिए लेकिन "कैसे" नहीं। – kingluo

+0

आपके द्वारा दिया गया आधिकारिक संदर्भ नवीनतम गुलाम को निर्धारित करने के तरीके की व्याख्या नहीं करता है। – kingluo

0

Relay_Master_Log_File और Exec_Master_Log_PosSHOW SLAVE STATUS में सर्वश्रेष्ठ मास्टर को नए मास्टर के रूप में निर्धारित करने के लिए उपयोग किया जाता है: बड़े मूल्य जीतते हैं।

जीटीआईडी ​​के बिना, मुझे लगता है कि हमें पहले सबसे अच्छे दास के साथ अन्य दासों को सिंक करना होगा। स्पष्ट सिंक स्रोत रिले लॉग है। प्रत्येक दास पर, सर्वश्रेष्ठ दास से रिले लॉग के अंतर निर्धारित करें, उन फ़ाइलों को डाउनलोड करें और SQL कथन दोबारा चलाएं। एक बार सभी गुलामों को पकड़ने के बाद, दास CHANGE MASTER TO सबसे अच्छा दास हो सकता है। MASTER_LOG_FILE और MASTER_LOG_POS सर्वश्रेष्ठ दास पर अंतिम बिनलॉग की पूंछ होगी।

जीटीआईडी ​​के साथ, यह बहुत आसान है: MASTER_AUTO_POSITION=1 के साथ।

संबंधित मुद्दे