MariaDB
 sql >> डेटाबेस >  >> RDS >> MariaDB

MySQL गैलेरा क्लस्टर्स के बीच एसिंक्रोनस प्रतिकृति कैसे सेट करें

गैलेरा क्लस्टर मजबूत डेटा स्थिरता को लागू करता है, जहां क्लस्टर में सभी नोड्स कसकर युग्मित होते हैं। हालांकि नेटवर्क विभाजन समर्थित है, प्रतिकृति प्रदर्शन अभी भी दो कारकों से बाध्य है:

  • आरंभकर्ता नोड से क्लस्टर में सबसे दूर के नोड के लिए राउंड ट्रिप टाइम (RTT)।

  • रिसीवर नोड पर विरोध के लिए हस्तांतरित और प्रमाणित किए जाने वाले राइटसेट का आकार।

गैलेरा के प्रदर्शन को बढ़ावा देने के कई तरीके हैं, लेकिन इन दो सीमित कारकों के आसपास काम करना संभव नहीं है।

सौभाग्य से, गैलेरा क्लस्टर MySQL के शीर्ष पर बनाया गया था, जो एक अंतर्निहित प्रतिकृति सुविधा (डुह!) के साथ भी आता है। गैलेरा प्रतिकृति और MySQL प्रतिकृति दोनों एक ही सर्वर सॉफ्टवेयर में स्वतंत्र रूप से मौजूद हैं। हम इन तकनीकों का उपयोग एक साथ काम करने के लिए कर सकते हैं, जहां डेटा सेंटर के भीतर सभी प्रतिकृति गैलेरा पर होगी, जबकि इंटर-डेटा सेंटर प्रतिकृति मानक MySQL प्रतिकृति पर होगी। स्लेव साइट एक हॉट-स्टैंडबाय साइट के रूप में कार्य कर सकती है, जो अनुप्रयोगों को बैकअप साइट पर पुनर्निर्देशित करने के बाद डेटा की सेवा के लिए तैयार है। हमने आपदा पुनर्प्राप्ति के लिए MySQL आर्किटेक्चर पर पिछले ब्लॉग में इसे कवर किया था।

संस्करण 1.7.4 में क्लस्टर-टू-क्लस्टर प्रतिकृति को ClusterControl में पेश किया गया था। इस ब्लॉग पोस्ट में, हम दिखाएंगे कि दो गैलेरा क्लस्टर (पीएक्ससी 8.0) के बीच प्रतिकृति स्थापित करना कितना आसान है। फिर हम अधिक चुनौतीपूर्ण भाग को देखेंगे:क्लस्टरकंट्रोल की सहायता से नोड और क्लस्टर दोनों स्तरों पर विफलताओं को संभालना; पूरे सिस्टम में डेटा अखंडता को बनाए रखने के लिए फ़ेलओवर और फ़ेलबैक संचालन महत्वपूर्ण हैं।

क्लस्टर परिनियोजन

हमारे उदाहरण के लिए, हमें कम से कम दो समूहों और दो साइटों की आवश्यकता होगी - एक प्राथमिक के लिए और दूसरी द्वितीयक के लिए। यह पारंपरिक MySQL मास्टर-स्लेव प्रतिकृति के समान काम करता है लेकिन प्रत्येक साइट में तीन डेटाबेस नोड्स के साथ बड़े पैमाने पर। ClusterControl के साथ, आप प्राथमिक क्लस्टर को परिनियोजित करके इसे प्राप्त करेंगे, इसके बाद द्वितीयक क्लस्टर को एक प्रतिकृति क्लस्टर के रूप में डिजास्टर रिकवरी साइट पर तैनात करके, एक द्वि-दिशात्मक एसिंक्रोनस प्रतिकृति द्वारा दोहराया जाएगा।

निम्न आरेख हमारे अंतिम आर्किटेक्चर को दर्शाता है:

हमारे पास कुल छह डेटाबेस नोड हैं, तीन प्राथमिक साइट पर हैं और दूसरा आपदा वसूली स्थल पर तीन। नोड प्रतिनिधित्व को सरल बनाने के लिए, हम निम्नलिखित नोटेशन का उपयोग करेंगे:

  • प्राथमिक साइट:

    • galera1-P - 192.168.11.171 (मास्टर)

    • galera2-P - 192.168.11.172

    • galera3-P - 192.168.11.173

  • आपदा पुनर्प्राप्ति साइट:

    • galera1-DR - 192.168.11.181 (दास)

    • galera2-DR - 192.168.11.182

    • galera3-DR - 192.168.11.183

सबसे पहले, बस पहले क्लस्टर को तैनात करें, और हम इसे पीएक्ससी-प्राथमिक कहते हैं। ClusterControl UI खोलें → परिनियोजित करें → MySQL Galera, और सभी आवश्यक विवरण दर्ज करें:

सुनिश्चित करें कि प्रत्येक निर्दिष्ट नोड के आगे एक हरे रंग का टिक है, जो दर्शाता है कि ClusterControl पासवर्ड रहित SSH के माध्यम से होस्ट से जुड़ सकते हैं। परिनियोजन पर क्लिक करें और परिनियोजन के पूरा होने की प्रतीक्षा करें। एक बार हो जाने के बाद, आपको क्लस्टर डैशबोर्ड पृष्ठ पर सूचीबद्ध निम्नलिखित क्लस्टर दिखाई देंगे:

इसके बाद, हम ClusterControl फीचर का उपयोग करेंगे, जिसे क्रिएट रेप्लिका क्लस्टर कहा जाता है, जिसे यहां से एक्सेस किया जा सकता है। क्लस्टर एक्शन ड्रॉपडाउन:

आपको निम्नलिखित साइडबार पॉपअप प्रस्तुत किया जाएगा:

हमने "मास्टर से स्ट्रीमिंग" विकल्प चुना है, जहां ClusterControl उपयोग करेगा प्रतिकृति क्लस्टर को सिंक करने और प्रतिकृति को कॉन्फ़िगर करने के लिए चुना गया मास्टर। द्वि-दिशात्मक प्रतिकृति विकल्प पर ध्यान दें। यदि सक्षम किया गया है, तो ClusterControl दोनों साइटों (वृत्ताकार प्रतिकृति) के बीच एक द्वि-दिशात्मक प्रतिकृति स्थापित करेगा। चुने गए मास्टर को प्रतिकृति क्लस्टर के लिए परिभाषित पहले मास्टर से और इसके विपरीत दोहराया जाएगा। यह सेटअप फ़ेलओवर या फ़ेलबैक के बाद पुनर्प्राप्त करते समय आवश्यक स्टेजिंग समय को कम कर देगा। "रेप्लिका क्लस्टर बनाएं" पर क्लिक करें, जहां क्लस्टरकंट्रोल प्रतिकृति क्लस्टर के लिए एक नया परिनियोजन विज़ार्ड खोलता है, जैसा कि नीचे दिखाया गया है:

यदि प्रतिकृति में WAN जैसे अविश्वसनीय नेटवर्क शामिल हैं, तो SSL एन्क्रिप्शन सक्षम करने की अनुशंसा की जाती है, गैर-सुरंग नेटवर्क, या इंटरनेट। साथ ही, सुनिश्चित करें कि "केवल-पढ़ने के लिए क्लस्टर बनाएं" टॉगल किया गया है; यह आकस्मिक लिखने से सुरक्षा है और सक्रिय क्लस्टर (पढ़ने-लिखने) और निष्क्रिय क्लस्टर (केवल पढ़ने के लिए) के बीच आसानी से अंतर करने के लिए एक अच्छा संकेतक है।

सभी आवश्यक जानकारी भरते समय, आपको प्रतिकृति क्लस्टर टोपोलॉजी को परिभाषित करने के लिए निम्न चरण तक पहुंचना चाहिए:

ClusterControl डैशबोर्ड से, एक बार परिनियोजन पूर्ण हो जाने पर, आपको यह देखना चाहिए DR साइट में प्राथमिक साइट से जुड़ा एक द्विदिश तीर है:

परिनियोजन अब पूर्ण हो गया है। अनुप्रयोगों को केवल प्राथमिक साइट पर लिखना चाहिए क्योंकि यह सक्रिय साइट है, और डीआर साइट केवल-पढ़ने के लिए कॉन्फ़िगर की गई है (पीले रंग में हाइलाइट की गई)। दोनों साइटों पर रीड्स भेजे जा सकते हैं, हालांकि डीआर साइट एसिंक्रोनस प्रतिकृति प्रकृति के कारण पिछड़ने का जोखिम उठाती है। यह सेटअप प्राथमिक और आपदा पुनर्प्राप्ति साइटों को एक दूसरे से स्वतंत्र बना देगा, अतुल्यकालिक प्रतिकृति के साथ शिथिल रूप से जुड़ा होगा। डीआर साइट में गैलेरा नोड्स में से एक दास होगा जो प्राथमिक साइट में गैलेरा नोड्स (मास्टर) में से एक से प्रतिकृति करता है।

अब हमारे पास एक ऐसा सिस्टम है जहां प्राथमिक साइट पर क्लस्टर विफलता बैकअप साइट को प्रभावित नहीं करेगी। प्रदर्शन-वार, WAN विलंबता सक्रिय क्लस्टर पर अद्यतनों को प्रभावित नहीं करेगी। इन्हें एसिंक्रोनस रूप से बैकअप साइट पर भेज दिया जाता है।

एक साइड नोट के रूप में, एक गुलाम के रूप में गैलेरा नोड्स में से एक का उपयोग करने के बजाय एक प्रतिकृति रिले के रूप में एक समर्पित दास उदाहरण होना भी संभव है।

गैलेरा नोड फ़ेलओवर प्रक्रिया

यदि वर्तमान मास्टर (galera1-P) विफल हो जाता है और प्राथमिक साइट में शेष नोड्स अभी भी ऊपर हैं, तो डिजास्टर रिकवरी साइट (galera1-DR) पर दास को किसी भी उपलब्ध मास्टर को निर्देशित किया जाना चाहिए प्राथमिक साइट पर, जैसा कि निम्नलिखित चित्र में दिखाया गया है:

ClusterControl क्लस्टर सूची से, आप देख सकते हैं कि क्लस्टर स्थिति खराब हो गई है , और यदि आप विस्मयादिबोधक चिह्न आइकन पर रोल करते हैं, तो आप उस विशेष नोड के लिए त्रुटि देख सकते हैं (galera1-P):

ClusterControl के साथ, आप बस PXC-DR क्लस्टर पर जा सकते हैं → नोड्स → galera1-DR → नोड क्रियाएँ → प्रतिकृति स्लेव का पुनर्निर्माण करें, और आपको निम्नलिखित कॉन्फ़िगरेशन संवाद के साथ प्रस्तुत किया जाएगा:

हम प्राथमिक साइट पर सभी गैलेरा नोड्स देख सकते हैं (192.168.11.17x ) ड्रॉप-डाउन सूची से। द्वितीयक नोड चुनें, 192.168.11.172 (galera2-P), और आगे बढ़ें पर क्लिक करें। क्लस्टरकंट्रोल तब प्रतिकृति टोपोलॉजी को कॉन्फ़िगर करेगा जैसा कि यह होना चाहिए, गैलेरा 2-पी से गैलेरा 1-डीआर तक द्विदिश प्रतिकृति स्थापित करना। आप क्लस्टर डैशबोर्ड पृष्ठ (पीले रंग में हाइलाइट किए गए) से इसकी पुष्टि कर सकते हैं:

इस समय, प्राथमिक क्लस्टर (PXC-Primary) अभी भी काम कर रहा है इस टोपोलॉजी के लिए सक्रिय क्लस्टर के रूप में। यह प्राथमिक क्लस्टर के डेटाबेस सेवा अपटाइम को प्रभावित नहीं करना चाहिए।

गैलेरा क्लस्टर फ़ेलओवर प्रक्रिया

यदि प्राथमिक क्लस्टर नीचे चला जाता है, क्रैश हो जाता है, या एप्लिकेशन के दृष्टिकोण से बस कनेक्टिविटी खो देता है, तो एप्लिकेशन को लगभग तुरंत DR साइट पर निर्देशित किया जा सकता है। SysAdmin को केवल निम्न कथन का उपयोग करके आपदा पुनर्प्राप्ति साइट पर सभी Galera नोड्स पर केवल-पढ़ने के लिए अक्षम करने की आवश्यकता है:

mysql> SET GLOBAL read_only = 0; -- repeat on galera1-DR, galera2-DR, galera3-DR

ClusterControl उपयोगकर्ताओं के लिए, आप ClusterControl UI → Nodes → DB नोड चुनें → नोड क्रियाएँ → केवल-पढ़ने के लिए अक्षम करें का उपयोग कर सकते हैं। ClusterControl नोड पर निम्न कमांड निष्पादित करके, ClusterControl CLI भी उपलब्ध है: 

$ s9s node --nodes="192.168.11.181" --cluster-id=11 --set-read-write
$ s9s node --nodes="192.168.11.182" --cluster-id=11 --set-read-write
$ s9s node --nodes="192.168.11.183" --cluster-id=11 --set-read-write

DR साइट का फ़ेलओवर अब पूरा हो गया है, और अनुप्रयोग PXC-DR क्लस्टर को लेखन भेजना प्रारंभ कर सकते हैं। ClusterControl UI से, आपको कुछ इस तरह दिखना चाहिए:

डीआर साइट पर एप्लिकेशन के विफल होने के बाद निम्नलिखित आरेख हमारे आर्किटेक्चर को दर्शाता है :

यह मानते हुए कि प्राथमिक साइट अभी भी डाउन है, इस समय कोई प्राथमिक साइट के वापस आने तक साइटों के बीच प्रतिकृति।

गैलेरा क्लस्टर फ़ेलबैक प्रक्रिया

प्राथमिक साइट के आने के बाद, यह नोट करना महत्वपूर्ण है कि प्राथमिक क्लस्टर को केवल-पढ़ने के लिए सेट किया जाना चाहिए, इसलिए हम जानते हैं कि आपदा रिकवरी साइट में सक्रिय क्लस्टर है। ClusterControl से, क्लस्टर के ड्रॉप डाउन मेनू पर जाएं और "केवल-पढ़ने के लिए सक्षम करें" चुनें, जो प्राथमिक क्लस्टर में सभी नोड्स पर केवल-पढ़ने के लिए सक्षम करेगा और वर्तमान टोपोलॉजी को नीचे के रूप में सारांशित करेगा:

क्लस्टर फेलबैक प्रक्रिया शुरू करने की योजना बनाने से पहले सुनिश्चित करें कि सब कुछ हरा है (हरा इसका मतलब है कि सभी नोड्स ऊपर हैं और एक दूसरे के साथ समन्वयित हैं)। यदि कोई नोड अपमानजनक स्थिति में है, उदाहरण के लिए, प्रतिकृति नोड अभी भी पिछड़ रहा है, या प्राथमिक क्लस्टर में केवल कुछ नोड्स पहुंच योग्य थे, तब तक प्रतीक्षा करें जब तक कि क्लस्टर पूरी तरह से पुनर्प्राप्त न हो जाए, या तो ClusterControl स्वचालित पुनर्प्राप्ति प्रक्रियाओं की प्रतीक्षा करके पूरा करने के लिए, या मैन्युअल हस्तक्षेप।

इस बिंदु पर, सक्रिय क्लस्टर अभी भी DR का क्लस्टर है, और प्राथमिक क्लस्टर द्वितीयक क्लस्टर के रूप में कार्य कर रहा है। निम्नलिखित आरेख वर्तमान वास्तुकला को दर्शाता है:

प्राथमिक साइट पर फ़ेलबैक करने का सबसे सुरक्षित तरीका केवल-पढ़ने के लिए सेट करना है प्राथमिक साइट पर केवल-पढ़ने के लिए अक्षम करने के बाद, DR के क्लस्टर पर। ClusterControl UI → PXC-DR (ड्रॉपडाउन मेनू) → केवल-पढ़ने के लिए सक्षम करें पर जाएं। यह DR के क्लस्टर पर सभी नोड्स पर केवल-पढ़ने के लिए सेट करने के लिए कार्य को ट्रिगर करेगा। फिर, ClusterControl UI → PXC-Primary → Nodes पर जाएँ, और प्राथमिक क्लस्टर में सभी डेटाबेस नोड्स पर केवल-पढ़ने के लिए अक्षम करें।

आप ClusterControl CLI के साथ उपरोक्त प्रक्रियाओं को सरल भी कर सकते हैं। वैकल्पिक रूप से, ClusterControl होस्ट पर निम्न कमांड निष्पादित करें:

$ s9s cluster --cluster-id=11 --set-read-only # enable cluster-wide read-only
$ s9s node --nodes="192.168.11.171" --cluster-id=8 --set-read-write
$ s9s node --nodes="192.168.11.172" --cluster-id=8 --set-read-write
$ s9s node --nodes="192.168.11.173" --cluster-id=8 --set-read-write

एक बार हो जाने के बाद, प्रतिकृति दिशा अपने मूल विन्यास पर वापस चली गई है, जहां PXC-प्राथमिक सक्रिय क्लस्टर है और PXC-DR स्टैंडबाय क्लस्टर है। निम्न आरेख क्लस्टर फ़ेलबैक ऑपरेशन के बाद अंतिम आर्किटेक्चर को दिखाता है:

इस बिंदु पर, अब इस पर लिखने के लिए अनुप्रयोगों को पुनर्निर्देशित करना सुरक्षित है प्राथमिक साइट।

क्लस्टर-टू-क्लस्टर एसिंक्रोनस प्रतिकृति के लाभ

एसिंक्रोनस प्रतिकृति के साथ क्लस्टर-टू-क्लस्टर कई लाभों के साथ आता है:

  • डेटाबेस फेलओवर ऑपरेशन के दौरान न्यूनतम डाउनटाइम। मूल रूप से, आप लेखन को लगभग तुरंत स्लेव साइट पर पुनर्निर्देशित कर सकते हैं, केवल तभी जब आप राइट्स को मास्टर साइट तक नहीं पहुंचने के लिए सुरक्षित कर सकते हैं (क्योंकि इन राइट्स को दोहराया नहीं जाएगा, और संभवतः DR साइट से पुन:सिंक करते समय ओवरराइट किया जाएगा)।

  • प्राथमिक साइट पर प्रदर्शन का कोई प्रभाव नहीं क्योंकि यह बैकअप (DR) साइट से स्वतंत्र है। मास्टर से दास तक प्रतिकृति अतुल्यकालिक रूप से की जाती है। मास्टर साइट बाइनरी लॉग उत्पन्न करती है, स्लेव साइट घटनाओं को दोहराती है और कुछ समय बाद की घटनाओं को लागू करती है।

  • आपदा पुनर्प्राप्ति साइटों का उपयोग अन्य उद्देश्यों के लिए किया जा सकता है, उदाहरण के लिए, डेटाबेस बैकअप, बाइनरी लॉग बैकअप और रिपोर्टिंग, या भारी विश्लेषणात्मक प्रश्न (OLAP)। दास पक्ष पर प्रतिकृति अंतराल और केवल-पढ़ने के संचालन को छोड़कर, दोनों साइटों का एक साथ उपयोग किया जा सकता है।

  • DR क्लस्टर संभावित रूप से सार्वजनिक क्लाउड वातावरण में छोटे उदाहरणों पर चल सकता है, जब तक कि वे इसे बनाए रख सकते हैं प्राथमिक क्लस्टर के साथ। यदि आवश्यक हो तो आप उदाहरणों को अपग्रेड कर सकते हैं। कुछ परिदृश्यों में, यह आपको कुछ लागतें बचा सकता है।

  • आपको सक्रिय सक्रिय गैलेरा बहु-साइट प्रतिकृति सेटअप की तुलना में आपदा पुनर्प्राप्ति के लिए केवल एक अतिरिक्त साइट की आवश्यकता है, जो सही ढंग से काम करने के लिए कम से कम तीन सक्रिय साइटों की आवश्यकता होती है।

क्लस्टर-टू-क्लस्टर एसिंक्रोनस प्रतिकृति के नुकसान

इस सेटअप में कुछ कमियां भी हैं, जो इस बात पर निर्भर करती है कि आप द्विदिश या यूनिडायरेक्शनल प्रतिकृति का उपयोग कर रहे हैं:

  • अगर दास पीछे था, तो फेलओवर के दौरान कुछ डेटा गायब होने की संभावना है, क्योंकि प्रतिकृति अतुल्यकालिक है। इसे सेमी-सिंक्रोनस और मल्टी-थ्रेडेड स्लेव प्रतिकृति के साथ बेहतर बनाया जा सकता है, यद्यपि प्रतीक्षा में चुनौतियों का एक और सेट होगा (नेटवर्क ओवरहेड, प्रतिकृति गैप, आदि)।

  • यूनिडायरेक्शनल प्रतिकृति में, फेलओवर प्रक्रियाएं काफी सरल होने के बावजूद, फ़ेलबैक प्रक्रियाएं मुश्किल हो सकती हैं और मानव के लिए प्रवण हो सकती हैं त्रुटि। इसके लिए मास्टर/स्लेव भूमिका को प्राथमिक साइट पर वापस स्विच करने पर कुछ विशेषज्ञता की आवश्यकता होती है। प्रक्रियाओं को प्रलेखित रखने, फ़ेलओवर/फ़ेलबैक ऑपरेशन का नियमित रूप से पूर्वाभ्यास करने और सटीक रिपोर्टिंग और निगरानी टूल का उपयोग करने की अनुशंसा की जाती है।

  • यह काफी महंगा हो सकता है, क्योंकि आपको आपदा रिकवरी साइट पर समान संख्या में नोड्स सेट करने होंगे। . यह ब्लैक एंड व्हाइट नहीं है, क्योंकि लागत का औचित्य आमतौर पर आपके व्यवसाय की आवश्यकताओं से आता है। कुछ नियोजन के साथ, डेटाबेस की भूमिकाओं पर ध्यान दिए बिना, दोनों साइटों पर डेटाबेस संसाधनों के उपयोग को अधिकतम करना संभव है।

रैपिंग अप

आपके MySQL गैलेरा क्लस्टर के लिए एसिंक्रोनस प्रतिकृति सेट करना अपेक्षाकृत सरल प्रक्रिया हो सकती है - जब तक आप समझते हैं कि नोड और क्लस्टर दोनों स्तरों पर विफलताओं को ठीक से कैसे संभालना है। अंततः, डेटा अखंडता सुनिश्चित करने के लिए फ़ेलओवर और फ़ेलबैक संचालन महत्वपूर्ण हैं।

अपने गैलेरा क्लस्टर्स को फ़ेलओवर और फ़ेलबैक रणनीतियों को ध्यान में रखते हुए डिज़ाइन करने के बारे में अधिक युक्तियों के लिए, डिजास्टर रिकवरी के लिए MySQL आर्किटेक्चर पर इस पोस्ट को देखें। यदि आप इन कार्यों को स्वचालित करने में सहायता की तलाश कर रहे हैं, तो 30 दिनों के लिए ClusterControl का निःशुल्क मूल्यांकन करें और इस पोस्ट में दिए गए चरणों का पालन करें।

ट्विटर या लिंक्डइन पर हमें फॉलो करना न भूलें और अपने ओपन-सोर्स डेटाबेस इन्फ्रास्ट्रक्चर के प्रबंधन के लिए नवीनतम समाचारों और सर्वोत्तम प्रथाओं पर अपडेट रहने के लिए हमारे न्यूज़लेटर की सदस्यता लें।


  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. सुरक्षित तरीके से MySQL और MariaDB में स्कीमा परिवर्तन कैसे करें

  2. मारियाडीबी में संयोजन दिखाएं

  3. मारियाडीबी CURRENT_TIME() समझाया गया

  4. कैसे सप्ताह () मारियाडीबी में काम करता है

  5. MySQL में लॉक ग्रैन्युलैरिटी को समझना