डेटाबेस क्लस्टरिंग क्या है? यदि आप एक ही डेटाबेस को 2 विभिन्न सर्वरों पर रखने की अनुमति देते हैं, तो वे डेटा को सिंक्रनाइज़ के बीच कैसे रखते हैं। और यह एक डेटाबेस सर्वर के परिप्रेक्ष्य से लोड संतुलन से कैसे भिन्न होता है?
डेटाबेस क्लस्टरिंग क्या है? यदि आप एक ही डेटाबेस को 2 विभिन्न सर्वरों पर रखने की अनुमति देते हैं, तो वे डेटा को सिंक्रनाइज़ के बीच कैसे रखते हैं। और यह एक डेटाबेस सर्वर के परिप्रेक्ष्य से लोड संतुलन से कैसे भिन्न होता है?
जवाबों:
डेटाबेस क्लस्टरिंग एक अस्पष्ट शब्द का एक सा है, कुछ विक्रेताओं का मानना है कि एक क्लस्टर में दो या दो से अधिक सर्वर एक ही भंडारण को साझा करते हैं, कुछ अन्य क्लस्टर को प्रतिकृति सर्वर का एक सेट कहते हैं।
प्रतिकृति उस पद्धति को परिभाषित करती है जिसके द्वारा सर्वरों का एक सेट बिना सिंक्रनाइज़ किए रहता है ताकि भंडारण को भौगोलिक रूप से फैलाने में सक्षम हो, इसके बारे में जाने के दो मुख्य तरीके हैं:
मास्टर-मास्टर (या मल्टी-मास्टर) प्रतिकृति: कोई भी सर्वर डेटाबेस को अपडेट कर सकता है। यह आमतौर पर डेटाबेस के भीतर एक अलग मॉड्यूल (या कुछ मामलों में उनके ऊपर चल रहे एक पूरे अलग सॉफ्टवेयर) द्वारा ध्यान रखा जाता है।
नकारात्मक पक्ष यह है कि यह अच्छा करना बहुत कठिन है, और कुछ सिस्टम एसीआईडी गुण खो देते हैं जब प्रतिकृति के इस मोड में।
अपसाइड यह है कि यह लचीला है और डेटाबेस को अपडेट करते हुए भी आप किसी भी सर्वर की विफलता का समर्थन कर सकते हैं।
मास्टर-स्लेव प्रतिकृति: आधिकारिक डेटा की केवल एक ही प्रतिलिपि होती है, जो कि दास सर्वर पर धकेल दी जाती है।
नकारात्मक पक्ष यह है कि यह कम सहिष्णु है, यदि स्वामी की मृत्यु हो जाती है, तो दासों में और परिवर्तन नहीं होते हैं।
उल्टा यह है कि मल्टी-मास्टर की तुलना में करना आसान है और यह आमतौर पर एसीआईडी गुणों को संरक्षित करता है।
लोड संतुलन एक अलग अवधारणा है, इसमें उन सर्वरों को भेजे गए प्रश्नों को वितरित करना शामिल है ताकि लोड यथासंभव समान रूप से वितरित हो। यह आमतौर पर आवेदन परत (या एक कनेक्शन पूल के साथ) में किया जाता है। प्रतिकृति और लोड संतुलन के बीच एकमात्र सीधा संबंध यह है कि आपको संतुलन लोड करने में सक्षम होने के लिए कुछ प्रतिकृति की आवश्यकता है, अन्यथा आपके पास एक एकल सर्वर होगा।
SQL सर्वर बिंदु से:
क्लस्टरिंग आपको एक सक्रिय - निष्क्रिय कॉन्फ़िगरेशन देगा। 2 नोड क्लस्टर में अर्थ, उनमें से एक सक्रिय (सेवारत) होगा और दूसरा निष्क्रिय होगा (सक्रिय नोड के विफल होने पर लेने के लिए इंतजार करना)। यह हार्डवेयर के दृष्टिकोण से एक उच्च उपलब्धता है।
आपके पास एक सक्रिय-सक्रिय क्लस्टर हो सकता है, लेकिन इसके लिए प्रत्येक नोड पर चलने वाले SQL सर्वर के कई उदाहरणों की आवश्यकता होगी। (अर्थात Node A पर इंस्टेंस 1, Node B पर इंस्टेंस 2 पर विफल हो रहा है, और Node B पर इंस्टेंस 1 Node A पर 2 इंस्टेंस पर विफल हो रहा है)।
लोड संतुलन (कम से कम SQL सर्वर बिंदु से) मौजूद नहीं है (कम से कम वेब सर्वर लोड संतुलन के समान अर्थ में)। आप इस तरह से लोड को संतुलित नहीं कर सकते। हालाँकि, आप सर्वर 1 पर कुछ डेटाबेस पर चलने के लिए अपने एप्लिकेशन को विभाजित कर सकते हैं और सर्वर 2 पर कुछ डेटाबेस पर भी चला सकते हैं। यह SQL दुनिया में "लोड बैलेंसिंग" का प्राथमिक साधन है।
क्लस्टरिंग किसी प्रकार का साझा संग्रहण (एक ड्राइव केज या सैन, उदाहरण के लिए) का उपयोग करता है, और उस पर दो डेटाबेस फ्रंट-एंड डालता है। फ्रंट एंड सर्वर एक आईपी एड्रेस और क्लस्टर नेटवर्क नाम साझा करते हैं जिसका उपयोग ग्राहक कनेक्ट करने के लिए करते हैं, और वे स्वयं के बीच निर्णय लेते हैं जो वर्तमान में क्लाइंट अनुरोधों की सेवा के प्रभारी हैं।
यदि आप किसी विशेष डेटाबेस सर्वर के बारे में पूछ रहे हैं, तो उसे अपने प्रश्न में शामिल करें और हम उनके कार्यान्वयन पर विवरण जोड़ सकते हैं, लेकिन इसके मूल में, यह क्लस्टरिंग है।
डेटाबेस क्लस्टरिंग वास्तव में आपके सिस्टम में जोड़े गए दोष सहिष्णुता की एक अतिरिक्त कार्यक्षमता के साथ दो या संभवतः अधिक नोड्स के बीच तुल्यकालिक प्रतिकृति का एक मोड है, और वह भी एक साझा कुछ नहीं वास्तुकला में। साझा किए गए कुछ भी नहीं होने का मतलब है कि व्यक्तिगत नोड वास्तव में डिस्क या मेमोरी जैसे किसी भी भौतिक संसाधनों को साझा नहीं करते हैं।
जहाँ तक डेटा को सिंक्रनाइज़ रखने की बात है, एक प्रबंधन सर्वर है जिससे इसे प्राप्त करने के लिए SQL डेटा के साथ सभी डेटा नोड्स जुड़े हुए हैं (विशेष रूप से MySQL के बारे में बात करते हुए)।
अब अंतर के बारे में: लोड संतुलन केवल एक परिणाम है जिसे क्लस्टरिंग के माध्यम से हासिल किया जा सकता है, अन्य में उच्च उपलब्धता, मापनीयता और दोष सहिष्णुता शामिल हैं।