आपके डेटाबेस को अपग्रेड करने के कई कारण हैं। यह सुरक्षा सुधारों को लागू करने, नई सुविधाओं का उपयोग करने, संगतता समस्याओं को हल करने, या केवल अपने सिस्टम को अप-टू-डेट रखने के लिए हो सकता है। यह अपग्रेड एक बड़ा अपग्रेड या मामूली हो सकता है, और तकनीक के आधार पर, इस काम को करने के लिए अलग-अलग तरीके हैं, लेकिन अगर आपको अपने सिस्टम को शून्य डाउनटाइम के साथ हर समय चलाने की आवश्यकता है, तो रोलिंग अपग्रेड करना सबसे अच्छा विकल्प हो सकता है। ।
इस ब्लॉग में, हम अपग्रेड करने से पहले और MySQL पर रोलिंग अपग्रेड करने के तरीके को ध्यान में रखने के लिए कुछ विचार देखेंगे।
मामूली बनाम प्रमुख अपग्रेड
सामान्य तौर पर, मामूली अपग्रेड इस तरह से सुरक्षित होते हैं कि आप इसे आसानी से डाउनग्रेड या रोलबैक कर सकते हैं और पिछले पैकेज और सुविधाओं के साथ संगत होना चाहिए।
मुख्य संस्करण अपग्रेड में कुछ जोखिम शामिल हैं जैसे डेटाबेस पैकेज निकालना, कॉन्फ़िगरेशन और कनेक्टर संगतता, बहिष्कृत सुविधाएं, और बहुत कुछ।
इसलिए, भले ही दोनों परिदृश्यों के लिए परीक्षण महत्वपूर्ण हो, बड़े अपग्रेड के मामले में, यदि आप अपने व्यवसाय के लिए गंभीर समस्याओं से बचना चाहते हैं तो यह आवश्यक है।
अपग्रेड करने से पहले
अब, भविष्य में होने वाली समस्याओं से बचने के लिए, अपग्रेड करने से पहले कुछ बातों पर ध्यान दें।
बैकअप
बैकअप हमेशा महत्वपूर्ण होते हैं, और इससे भी अधिक यदि आप अपने डेटाबेस को अपग्रेड करना चाहते हैं। यदि कुछ गलत हो जाता है, और अन्य आपदा पुनर्प्राप्ति विकल्प विफल हो जाते हैं, तो आपको अपने डेटाबेस को पुनर्स्थापित करने के लिए बैकअप की आवश्यकता होगी। इसलिए, कार्य शुरू करने से पहले, अपने वर्तमान डेटाबेस का पूर्ण बैकअप (भौतिक या/और तार्किक) लें और इसे तब तक सुरक्षित रखें जब तक यह सुनिश्चित न हो जाए कि कुछ दिनों/सप्ताह के लिए सब कुछ ठीक से काम कर रहा है।
बहिष्कृत सुविधाओं की समीक्षा करें
यदि आप एक ऐसी सुविधा का उपयोग कर रहे हैं जिसे नए संस्करण में हटा दिया गया है, तो आपका एप्लिकेशन विफल हो सकता है, और आपको अपने सिस्टम को पुनर्प्राप्त करने के लिए रोलबैक करने की आवश्यकता होगी, जो डाउनटाइम (दृष्टिकोण पर निर्भर करता है) और एक समय का नुकसान। बहिष्कृत सुविधा की जाँच करना और उन सुविधाओं से उनकी तुलना करना जिनका आप उपयोग कर रहे हैं, इस असफल अपग्रेड प्रयास से बचेंगे।
परीक्षण
यह न केवल अपग्रेड के लिए बल्कि आपके डेटाबेस या एप्लिकेशन में किसी भी बदलाव के लिए भी महत्वपूर्ण है। एक परीक्षण वातावरण होने से जो उत्पादन वातावरण की नकल करता है, आपका समय बचा सकता है और किसी भी अपग्रेड या डेटाबेस परिवर्तन के दौरान अप्रत्याशित मुद्दों से बच सकता है।
रोलबैक
किसी भी अपग्रेड में, आपके डेटाबेस को ASAP चलाने और चलाने के लिए आवश्यक होने पर रोलबैक का उपयोग करने के लिए तैयार होना महत्वपूर्ण है। अन्यथा, यह आपके आरटीओ (पुनर्प्राप्ति समय उद्देश्य) को प्रभावित कर सकता है यदि आपको बैकअप या किसी अन्य पुनर्प्राप्ति योजना विकल्प से क्लस्टर को फिर से बनाने की आवश्यकता है।
ध्यान रखें कि कभी-कभी डाउनग्रेड करना संभव नहीं होता है, इसलिए यदि आपको अपने परिवर्तनों को रोलबैक करने की आवश्यकता हो तो आपके पास एक द्वितीयक योजना होनी चाहिए।
विक्रेता जांच
विक्रेता और संस्करण के आधार पर, आप अपने वर्तमान इंस्टॉलेशन पर प्रारंभिक जांच करने के लिए mysqlcheck कमांड का उपयोग कर सकते हैं और पुष्टि कर सकते हैं कि आप जाने के लिए तैयार हैं।
$ mysqlcheck -u root -p --all-databases --check-upgrade
Enter password:
mysql.columns_priv OK
mysql.db OK
mysql.engine_cost OK
mysql.event OK
mysql.func OK
mysql.general_log OK
mysql.gtid_executed OK
mysql.help_category OK
mysql.help_keyword OK
mysql.help_relation OK
mysql.help_topic OK
mysql.innodb_index_stats OK
mysql.innodb_table_stats OK
mysql.ndb_binlog_index OK
mysql.plugin OK
mysql.proc OK
mysql.procs_priv OK
mysql.proxies_priv OK
mysql.server_cost OK
mysql.servers OK
mysql.slave_master_info OK
mysql.slave_relay_log_info OK
mysql.slave_worker_info OK
mysql.slow_log OK
mysql.tables_priv OK
mysql.time_zone OK
mysql.time_zone_leap_second OK
mysql.time_zone_name OK
mysql.time_zone_transition OK
mysql.time_zone_transition_type OK
mysql.user OK
sys.sys_config OK
अपग्रेड करने से पहले यह पहली जांच है, और यह जांच करेगा कि कहीं कुछ तो नहीं है:
- अप्रचलित डेटा प्रकारों या कार्यों का उपयोग करने वाली तालिकाएं
- अनाथ frm फ़ाइलें
- अनुपलब्ध या खाली निश्चित या अमान्य निर्माण संदर्भ वाले ट्रिगर
कुछ और चीजें हैं जिनकी आपको जांच करने की आवश्यकता है, लेकिन एक विस्तृत ब्लॉग पोस्ट से बचने के लिए, आप इसके लिए आधिकारिक MySQL दस्तावेज़ देख सकते हैं।
MySQL के लिए मैन्युअल रोलिंग अपग्रेड
रोलिंग अपग्रेड करने के लिए अलग-अलग तरीके हैं। यह जगह पर हो सकता है, प्रतिकृति का उपयोग करके, या यहां तक कि उनमें से एक मिश्रण भी। किसी भी स्थिति में, यदि आप डाउनटाइम से बचना चाहते हैं तो आपको अपग्रेड के दौरान अपने एप्लिकेशन में परिवर्तन नहीं करने चाहिए। इसके लिए आप अपने डेटाबेस के सामने लोड बैलेंसर जोड़ सकते हैं। आपका एप्लिकेशन आपके लोड बैलेंसर से कनेक्ट होगा, और यह ट्रैफ़िक को उपलब्ध नोड्स पर रीडायरेक्ट करेगा।
मान लें कि आपके पास 1 मास्टर और 2 स्लेव नोड्स के साथ एक MySQL प्रतिकृति है, और उनके सामने 1 HAProxy नोड है:
इस परिवेश पर मैन्युअल रोलिंग अपग्रेड करने का एक सरल तरीका यह हो सकता है:
- अपने HAProxy से एक स्लेव नोड को अक्षम करें
- सुनिश्चित करें कि आपके पास इस स्लेव नोड पर ट्रैफ़िक नहीं है
- स्लेव नोड को मैन्युअल रूप से अपग्रेड करें
- यह सुनिश्चित करने के लिए कि यह अप-टू-डेट है, प्रतिकृति स्थिति जांचें
- अपने HAProxy में मास्टर नोड को अक्षम करें
- सुनिश्चित करें कि आपके मास्टर नोड पर ट्रैफ़िक नहीं है
- अपग्रेड किए गए स्लेव नोड को बढ़ावा दें
- इसे अपने HAProxy में सक्षम करें
- पुष्टि करें कि नए मास्टर को ट्रैफ़िक मिल रहा है
- नए मास्टर से दोहराने के लिए अपने दूसरे दास को फिर से कॉन्फ़िगर करें
- दूसरे गुलाम को अपने HAProxy से अक्षम करें
- सुनिश्चित करें कि आपके पास इस स्लेव नोड पर ट्रैफ़िक नहीं है
- स्लेव नोड को मैन्युअल रूप से अपग्रेड करें
- यह सुनिश्चित करने के लिए कि यह अप-टू-डेट है, प्रतिकृति स्थिति जांचें
- इसे अपने HAProxy में सक्षम करें
- पुष्टि करें कि स्लेव नोड ट्रैफ़िक प्राप्त कर रहा है (यदि आवश्यक हो)
- नए मास्टर से दोहराने के लिए अपने पुराने मास्टर को फिर से कॉन्फ़िगर करें
- पुराने मास्टर नोड को मैन्युअल रूप से अपग्रेड करें
- यह सुनिश्चित करने के लिए कि यह अप-टू-डेट है, प्रतिकृति स्थिति जांचें
- इसे अपने HAProxy में सक्षम करें
- पुष्टि करें कि पुराने मास्टर (अब दास) को ट्रैफ़िक मिल रहा है (यदि आवश्यक हो)
जैसा कि आप देख सकते हैं, सरल तरीके से भी, इस कार्य के लिए कई चरणों की आवश्यकता होती है, और इसका अर्थ है कुछ गलत होने की अधिक संभावनाएं।
MySQL के लिए क्लस्टर कंट्रोल रोलिंग अपग्रेड
विफलता की संभावना को कम करने का सबसे अच्छा तरीका इन सभी चरणों (या लगभग सभी) को स्वचालित करना है। ClusterControl का उपयोग करके आप कुछ ही क्लिक में अपने MySQL क्लस्टर का मामूली रोलिंग अपग्रेड कर सकते हैं।
ऐसा करने के लिए, ClusterControl पर जाएं -> क्लस्टर चुनें -> प्रबंधित करें -> अपग्रेड करें, जहां आपको अपग्रेड विकल्प दिखाई देता है।
अपग्रेड ऑनलाइन होते हैं और एक समय में एक नोड पर किए जाते हैं। नोड बंद हो जाएगा, सॉफ्टवेयर अपडेट किया जाएगा, और फिर नोड फिर से शुरू हो जाएगा। यदि कोई नोड अपग्रेड करने में विफल रहता है, तो प्रक्रिया निरस्त कर दी जाती है।
यदि आप अपग्रेड विकल्प चुनते हैं, तो आपको उस संस्करण के बारे में एक पुष्टिकरण दिखाई देगा जिसे अपग्रेड किया जाएगा:
और आपको इस कार्य की पुष्टि के लिए अपग्रेड पर प्रेस करना होगा। इसके बाद, आप क्लस्टर नियंत्रण गतिविधि अनुभाग में अपग्रेड प्रक्रिया की निगरानी कर सकते हैं:
उसी समय, ClusterControl आपके लोड बैलेंसरों को ट्रैफ़िक भेजने के लिए फिर से कॉन्फ़िगर करेगा उपलब्ध नोड्स के लिए।
ClusterControl केवल मामूली अपग्रेड का समर्थन करता है, क्योंकि, जैसा कि हमने पहले उल्लेख किया है, एक बड़ा अपग्रेड एक जोखिम भरा कार्य है जिसमें यह सुनिश्चित करने के लिए परीक्षण और शोध की आवश्यकता होती है कि आपका एप्लिकेशन नए प्रमुख संस्करण पर ठीक काम करेगा।
पी>निष्कर्ष
अपग्रेड करना सभी कंपनियों में एक महत्वपूर्ण कार्य है और यदि आप कुछ सावधानियां नहीं बरतते हैं और अपग्रेड के सभी चरणों का सही ढंग से पालन नहीं करते हैं तो यह जोखिम भरा हो सकता है।
इस ब्लॉग में, हमने आपके डेटाबेस को अपग्रेड करने से पहले ध्यान देने योग्य कुछ बातों का उल्लेख किया है, और हमने इस कार्य को मैन्युअल रूप से करने और ClusterControl का उपयोग करने के बीच अंतर दिखाया है, जो आपको विफलता की संभावना को कम करने में मदद करता है।