आजकल कई क्लाउड प्रदाता हैं। वे छोटे या बड़े, स्थानीय या पूरी दुनिया में फैले डेटा केंद्रों के साथ हो सकते हैं। इनमें से कई क्लाउड प्रदाता किसी प्रकार का प्रबंधित रिलेशनल डेटाबेस समाधान प्रदान करते हैं। समर्थित डेटाबेस MySQL या PostgreSQL या रिलेशनल डेटाबेस के कुछ अन्य स्वाद होते हैं।
किसी भी प्रकार के डेटाबेस इन्फ्रास्ट्रक्चर को डिजाइन करते समय अपनी व्यावसायिक जरूरतों को समझना और यह तय करना महत्वपूर्ण है कि आपको किस प्रकार की उपलब्धता हासिल करने की आवश्यकता होगी।
इस ब्लॉग पोस्ट में, हम सबसे बड़े क्लाउड प्रदाताओं में से एक - Google क्लाउड प्लेटफ़ॉर्म से MySQL-आधारित समाधानों के लिए उच्च उपलब्धता विकल्पों पर गौर करेंगे।
GCP SQL इंस्टेंस का उपयोग करके अत्यधिक उपलब्ध परिवेश को परिनियोजित करना
इस ब्लॉग के लिए हम चाहते हैं कि एक बहुत ही सरल वातावरण हो - एक डेटाबेस, शायद एक या दो प्रतिकृतियों के साथ। हम चाहते हैं कि यदि मास्टर विफल हो जाता है तो हम आसानी से विफल हो सकते हैं और संचालन को जल्द से जल्द बहाल कर सकते हैं। हम पसंद के संस्करण के रूप में MySQL 5.7 का उपयोग करेंगे और इंस्टेंस परिनियोजन विज़ार्ड से शुरू करेंगे:
फिर हमें रूट पासवर्ड बनाना होगा, इंस्टेंस नाम सेट करना होगा, और निर्धारित करें कि यह कहाँ स्थित होना चाहिए:
आगे, हम कॉन्फ़िगरेशन विकल्पों पर गौर करेंगे:
हम उदाहरण आकार के संदर्भ में परिवर्तन कर सकते हैं (हम साथ जाएंगे db-n1-मानक-4), भंडारण, और रखरखाव अनुसूची। इस सेटअप में हमारे लिए जो सबसे महत्वपूर्ण है वह है उच्च उपलब्धता विकल्प:
यहां हम एक फेलओवर रेप्लिका बनाना चुन सकते हैं। मूल मास्टर के विफल होने पर इस प्रतिकृति को एक मास्टर के रूप में पदोन्नत किया जाएगा।
सेटअप परिनियोजित करने के बाद, आइए एक प्रतिकृति स्लेव जोड़ें:
प्रतिलिपि जोड़ने की प्रक्रिया पूरी हो जाने के बाद, हम कुछ के लिए तैयार हैं परीक्षण। हम अपने मास्टर, फेलओवर प्रतिकृति पर Sysbench का उपयोग करके परीक्षण कार्यभार चलाने जा रहे हैं, और यह देखने के लिए प्रतिकृति पढ़ें कि यह कैसे काम करेगा। हम तीनों प्रकार के नोड्स के लिए एंडपॉइंट का उपयोग करते हुए Sysbench के तीन इंस्टेंस चलाएंगे।
फिर हम UI के माध्यम से मैन्युअल विफलता को ट्रिगर करेंगे:
Google क्लाउड प्लेटफ़ॉर्म पर MySQL फ़ेलओवर का परीक्षण कर रहे हैं?
जीसीपी में एसक्यूएल नोड्स कैसे काम करते हैं, इस बारे में विस्तृत जानकारी के बिना मैं इस बिंदु पर पहुंच गया हूं। हालाँकि, पिछले MySQL अनुभव और मैंने अन्य क्लाउड प्रदाताओं में जो देखा है, उसके आधार पर मुझे कुछ उम्मीदें थीं। शुरुआत के लिए, फ़ेलओवर नोड में फ़ेलओवर बहुत तेज़ होना चाहिए। हम जो चाहते हैं वह है प्रतिकृति दासों को पुनर्निर्माण की आवश्यकता के बिना उपलब्ध रखना। हम यह भी देखना चाहेंगे कि हम दूसरी बार कितनी तेजी से फ़ेलओवर निष्पादित कर सकते हैं (क्योंकि यह असामान्य नहीं है कि समस्या एक डेटाबेस से दूसरे डेटाबेस में फैलती है)।
हमने अपने परीक्षण के दौरान क्या निर्धारित किया...
- असफल होने पर, मास्टर 75 - 80 सेकंड में फिर से उपलब्ध हो गया।
- विफल प्रतिकृति 5-6 मिनट के लिए उपलब्ध नहीं थी।
- रीड रेप्लिका फ़ेलओवर प्रक्रिया के दौरान उपलब्ध थी, लेकिन फ़ेलओवर रेप्लिका उपलब्ध होने के बाद यह 55 - 60 सेकंड के लिए अनुपलब्ध हो गई
जिसके बारे में हम निश्चित नहीं हैं...
जब विफलता प्रतिकृति उपलब्ध नहीं है तो क्या हो रहा है? समय के आधार पर, ऐसा लगता है कि फ़ेलओवर प्रतिकृति का पुनर्निर्माण किया जा रहा है। यह समझ में आता है, लेकिन फिर पुनर्प्राप्ति समय इंस्टेंस के आकार (विशेषकर I/O प्रदर्शन) और डेटा फ़ाइल के आकार से दृढ़ता से संबंधित होगा।
फेलओवर रेप्लिका के पुनर्निर्माण के बाद रीड रेप्लिका के साथ क्या हो रहा है? मूल रूप से, पढ़ी गई प्रतिकृति मास्टर से जुड़ी हुई थी। जब मास्टर विफल हो जाता है, तो हम अपेक्षा करते हैं कि रीड प्रतिकृति डेटासेट का पुराना दृश्य प्रदान करेगी। एक बार जब नया मास्टर दिखाई देता है, तो उसे उदाहरण के लिए प्रतिकृति के माध्यम से फिर से कनेक्ट होना चाहिए (जो कि फ़ेलओवर प्रतिकृति हुआ करता था और जिसे मास्टर में पदोन्नत किया गया था)। चेंज मास्टर को क्रियान्वित करते समय एक मिनट के डाउनटाइम की आवश्यकता नहीं होती है।
इससे भी महत्वपूर्ण बात यह है कि फेलओवर प्रक्रिया के दौरान एक और फेलओवर निष्पादित करने का कोई तरीका नहीं है (जो कि समझ में आता है):
पढ़ने की प्रतिकृति को बढ़ावा देना भी संभव नहीं है (जो जरूरी नहीं कि समझ में आता हो) - हम किसी भी समय पठन प्रतिकृतियों को बढ़ावा देने में सक्षम होने की उम्मीद करेंगे)।
यह नोट करना महत्वपूर्ण है, उच्च उपलब्धता प्रदान करने के लिए पठन प्रतिकृतियों पर भरोसा करना महत्वपूर्ण है (बिना फेलओवर रेप्लिका बनाए) एक व्यवहार्य समाधान नहीं है। आप मास्टर बनने के लिए एक पठन प्रतिकृति को बढ़ावा दे सकते हैं, हालांकि एक नया क्लस्टर बनाया जाएगा; बाकी नोड्स से अलग।
आपके अन्य प्रतिरूपों को नए क्लस्टर से अलग करने का कोई तरीका नहीं है। ऐसा करने का एकमात्र तरीका नई प्रतिकृतियां बनाना होगा, लेकिन यह एक समय लेने वाली प्रक्रिया है। यह वस्तुतः अनुपयोगी भी है, जिससे Google क्लाउड प्लेटफ़ॉर्म में SQL नोड्स के लिए उच्च उपलब्धता के लिए फ़ेलओवर प्रतिकृति ही एकमात्र वास्तविक विकल्प है।
निष्कर्ष
हालांकि GCP में SQL नोड्स के लिए अत्यधिक उपलब्ध वातावरण बनाना संभव है, मास्टर लगभग डेढ़ मिनट के लिए उपलब्ध नहीं होगा। पूरी प्रक्रिया (फेलओवर प्रतिकृति के पुनर्निर्माण और पठन प्रतिकृतियों पर कुछ क्रियाओं सहित) में कई मिनट लगे। उस समय के दौरान हम एक अतिरिक्त विफलता को ट्रिगर करने में सक्षम नहीं थे, न ही हम एक पठन प्रतिकृति को बढ़ावा देने में सक्षम थे।
क्या हमारे पास कोई GCP उपयोगकर्ता है? आप उच्च उपलब्धता कैसे प्राप्त कर रहे हैं?