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

एसिंक्रोनस स्लेव्स का उपयोग करके गैलेरा क्लस्टर में हाइब्रिड OLTP/Analytics डेटाबेस वर्कलोड

गैलेरा क्लस्टर का उपयोग करना MySQL या MariaDB के लिए अत्यधिक उपलब्ध वातावरण बनाने का एक शानदार तरीका है। यह एक साझा-शून्य क्लस्टर वातावरण है जिसे 12-15 नोड्स से भी आगे बढ़ाया जा सकता है। हालाँकि, गैलेरा की कुछ सीमाएँ हैं। यह कम-विलंबता वातावरण में चमकता है और भले ही इसका उपयोग WAN में किया जा सकता है, प्रदर्शन नेटवर्क विलंबता द्वारा सीमित है। यदि नोड्स में से एक गलत तरीके से व्यवहार करना शुरू कर देता है, तो गैलेरा का प्रदर्शन भी प्रभावित हो सकता है। उदाहरण के लिए, किसी एक नोड पर अत्यधिक भार इसे धीमा कर सकता है, जिसके परिणामस्वरूप लेखन का धीमा संचालन होता है और यह क्लस्टर के अन्य सभी नोड्स को प्रभावित करेगा। दूसरी ओर, आपके डेटा का विश्लेषण किए बिना व्यवसाय चलाना काफी असंभव है। इस तरह के विश्लेषण के लिए, आम तौर पर, भारी प्रश्नों को चलाने की आवश्यकता होती है, जो कि OLTP कार्यभार से काफी अलग है। इस ब्लॉग पोस्ट में, हम MySQL या MariaDB के लिए गैलेरा क्लस्टर में संग्रहीत डेटा के लिए विश्लेषणात्मक प्रश्नों को चलाने के एक आसान तरीके पर चर्चा करेंगे, ताकि यह कोर क्लस्टर के प्रदर्शन को प्रभावित न करे।

गैलेरा क्लस्टर पर विश्लेषणात्मक क्वेरी कैसे चलाएं?

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

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

एक बार प्रतिकृति दास के उठने और चलने के बाद, आपको उस पर भारी प्रश्नों को चलाना चाहिए और गैलेरा क्लस्टर को उतारना चाहिए। यह आपके सेटअप और परिवेश के आधार पर कई तरीकों से किया जा सकता है। यदि आप प्रॉक्सीएसक्यूएल का उपयोग करते हैं, तो आप स्रोत होस्ट, उपयोगकर्ता, स्कीमा या यहां तक ​​​​कि क्वेरी के आधार पर विश्लेषणात्मक दास को आसानी से प्रश्नों को निर्देशित कर सकते हैं। अन्यथा यह आपके आवेदन पर निर्भर करेगा कि आप सही मेजबान को विश्लेषणात्मक प्रश्न भेजें।

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

क्या ध्यान रखना महत्वपूर्ण है, यह सेटअप लचीला नहीं है। अगर "मास्टर" गैलेरा नोड नीचे चला जाता है, तो प्रतिकृति लिंक टूट जाएगा और यह गैलेरा क्लस्टर में किसी अन्य मास्टर नोड से प्रतिकृति को स्लेव करने के लिए मैन्युअल कार्रवाई करेगा।

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

ClusterControl का उपयोग करके एसिंक्रोनस स्लेव को गैलेरा क्लस्टर में कैसे सेट करें?

सौभाग्य से, यदि आप ClusterControl का उपयोग करते हैं, तो पूरी प्रक्रिया को स्वचालित किया जा सकता है और इसके लिए केवल कुछ ही क्लिक की आवश्यकता होती है। प्रारंभिक स्थिति पहले से ही ClusterControl का उपयोग करके स्थापित की गई है - डेटाबेस और प्रॉक्सी परत दोनों की उच्च उपलब्धता के लिए 2 ProxySQL नोड्स और 2 Keepalived नोड्स के साथ एक 3 नोड गैलेरा क्लस्टर।

प्रतिकृति दास जोड़ना बस एक क्लिक दूर है:

प्रतिकृति, जाहिर है, बाइनरी लॉग को सक्षम करने की आवश्यकता है। यदि आपके गैलेरा नोड्स पर बिनलॉग सक्षम नहीं हैं, तो आप इसे ClusterControl से भी कर सकते हैं। कृपया ध्यान रखें कि बाइनरी लॉग को सक्षम करने के लिए कॉन्फ़िगरेशन परिवर्तनों को लागू करने के लिए एक नोड पुनरारंभ की आवश्यकता होगी।

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

जैसा कि हमने कहा, बाइनरी लॉग को सक्षम करने के लिए पुनरारंभ की आवश्यकता होती है। आप या तो इसे सीधे निष्पादित कर सकते हैं, या केवल कॉन्फ़िगरेशन परिवर्तन कर सकते हैं और किसी अन्य समय पर पुनरारंभ कर सकते हैं।

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

कार्य पूरा होने के बाद, एक प्रतिकृति दास को क्लस्टर में जोड़ा गया है। जैसा कि पहले कहा गया है, अगर 10.0.0.101 मर जाता है, तो गैलेरा क्लस्टर में एक और होस्ट को मास्टर के रूप में चुना जाएगा और क्लस्टरकंट्रोल स्वचालित रूप से दूसरे नोड से 10.0.0.104 को गुलाम बना देगा।

जैसा कि हम ProxySQL का उपयोग करते हैं, हमें इसे कॉन्फ़िगर करने की आवश्यकता है। हम ProxySQL में एक नया सर्वर जोड़ेंगे।

हमने एक और होस्टग्रुप (30) बनाया जहां हमने अपने एसिंक्रोनस स्लेव को रखा। हमने "अधिकतम प्रतिकृति अंतराल" को भी डिफ़ॉल्ट 10 से बढ़ाकर 50 सेकंड कर दिया है। यह आपकी व्यावसायिक आवश्यकताओं पर निर्भर करता है कि समस्या बनने से पहले विश्लेषिकी दास कितनी बुरी तरह पिछड़ सकता है।

उसके बाद हमें एक क्वेरी नियम कॉन्फ़िगर करना होगा जो हमारे OLAP ट्रैफ़िक से मेल खाएगा और इसे OLAP होस्टग्रुप (30) पर रूट करेगा। ऊपर दिए गए स्क्रीनशॉट में हमने कई फ़ील्ड भरे हैं - यह अनिवार्य नहीं है। आम तौर पर आपको उनमें से अधिक से अधिक एक, दो का उपयोग करने की आवश्यकता होगी। उपरोक्त स्क्रीनशॉट एक उदाहरण के रूप में कार्य करता है ताकि हम आसानी से देख सकें कि आप स्कीमा का उपयोग करके प्रश्नों का मिलान कर सकते हैं (यदि आपके पास विश्लेषणात्मक डेटा के साथ एक अलग स्कीमा है), होस्टनाम/आईपी (यदि OLAP प्रश्नों को किसी विशेष होस्ट से निष्पादित किया जाता है), उपयोगकर्ता (यदि एप्लिकेशन उपयोग करता है) विश्लेषणात्मक प्रश्नों के लिए विशेष उपयोगकर्ता। आप या तो एक पूर्ण क्वेरी पास करके या उन्हें SQL टिप्पणियों के साथ चिह्नित करके सीधे प्रश्नों का मिलान कर सकते हैं और ProxySQL को हमारे विश्लेषणात्मक होस्टग्रुप में "OLAP_QUERY" स्ट्रिंग के साथ सभी प्रश्नों को रूट करने दें।

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


  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 JDBC ड्राइवर का उपयोग करके Android को MySQL से कैसे कनेक्ट करें

  2. MySQL - स्ट्रिंग लंबाई के आधार पर डेटा का चयन कैसे करें

  3. MySQL ATAN () फ़ंक्शन - एक मान (या मान) की चाप स्पर्शरेखा लौटाएं

  4. एसक्यूएल दो टेबल्स से आंतरिक जुड़ने और सीमा के साथ चयन

  5. MySQL में फॉरेन की चेक को डिसेबल कैसे करें