एक MySQL स्रोत-प्रतिकृति उच्च उपलब्धता (HA) सेटअप में, स्रोत और प्रतिकृति सर्वर के स्वास्थ्य की निरंतर निगरानी करना महत्वपूर्ण है ताकि आप संभावित समस्याओं का पता लगा सकें और सुधारात्मक कार्रवाई कर सकें। . इस ब्लॉग पोस्ट में, हम कुछ बुनियादी स्वास्थ्य जांच की व्याख्या करते हैं जो आप अपने MySQL स्रोत और प्रतिकृति नोड्स पर कर सकते हैं ताकि यह सुनिश्चित हो सके कि आपका सेटअप स्वस्थ है। किसी भी स्वास्थ्य जांच के विफल होने की स्थिति में निगरानी कार्यक्रम या स्क्रिप्ट को उच्च उपलब्धता ढांचे को सचेत करना चाहिए, जिससे सेवा उपलब्धता सुनिश्चित करने के लिए उच्च उपलब्धता ढांचे को सुधारात्मक कार्रवाई करने में सक्षम बनाया जा सके।
MySQL Source Server Health Checks
हमने अनुशंसा की है कि आपका MySQL स्रोत निगरानी कार्यक्रम या स्क्रिप्ट लगातार अंतराल पर चलता रहे। यह मानते हुए कि मॉनिटरिंग स्क्रिप्ट आपके MySQL सर्वर के समान सर्वर पर चल रही है, आप निम्न की जांच कर सकते हैं:
-
सुनिश्चित करें कि MySQL सेवा चल रही है
यह एक साधारण कमांड का उपयोग करके किया जा सकता है जैसे:
> pgrep mysqld
या
>service mysqld status
-
सुनिश्चित करें कि आप MySQL से जुड़ सकते हैं और एक साधारण क्वेरी कर सकते हैं
हमने इन कमांड के लिए एक छोटा टाइमआउट रखने का सुझाव दिया है ताकि आप तुरंत पता लगा सकें कि MySQL अनुत्तरदायी है या नहीं। इसे कॉल से प्राप्त किया जा सकता है जैसे:
/usr/bin/timeout 5 mysql -u testuser -ptestpswd -e 'select * from mysql.test’
उपरोक्त कमांड के एग्जिट वैल्यू की जांच करना सुनिश्चित करें:
Exit value=0 सफलता
Exit value=1 ⇒ विफलता
Exit-value=124 टाइमआउट
यदि कमांड का समय समाप्त हो जाता है, तो इसका अर्थ है कि MySQL सेवा पर्याप्त रूप से उत्तरदायी नहीं है। हम आपको सलाह देते हैं कि आप कुछ समय बाद पुनः प्रयास करें ताकि झूठे नकारात्मक परिणामों से बचा जा सके। यदि निकास कोड विफलता का संकेत देता है, तो MySQL से वापसी कोड हमें विफलता का कारण बताएगा। विफलता का एक उदाहरण MySQL से 'बहुत अधिक कनेक्शन' त्रुटि है जो तब होता है जब सर्वर से कनेक्शन की संख्या आपके 'max_connections' कॉन्फ़िगरेशन मान से अधिक हो जाती है।
-
सुनिश्चित करें कि MySQL स्रोत रीड-राइट मोड में चल रहा है
आप निम्न कमांड का उपयोग यह सुनिश्चित करने के लिए कर सकते हैं कि MySQL स्रोत रीड-राइट मोड में चल रहा है:
/usr/bin/timeout 5 mysql -u testuser -ptestpswd -e "SELECT @@global.read_only"
स्रोत के हमेशा रीड-राइट मोड में चलने की उम्मीद है, और इसलिए, केवल read_only का मान 'बंद' होना चाहिए।
इस चरण को चरण 2 के साथ जोड़ना भी संभव है, और परीक्षण क्वेरी करने के बजाय 'mysql.test से * चुनें, हम केवल read_only प्राप्त करने के लिए क्वेरी कर सकते हैं मूल्य।
MySQL रेप्लिका सर्वर स्वास्थ्य जांच
आप अपने MySQL प्रतिकृतियों के लिए निगरानी को स्रोत की तुलना में कम आवृत्ति पर चला सकते हैं, क्योंकि वे डेटा लिखने को संभाल नहीं रहे हैं। आपकी प्रतिकृति स्वास्थ्य जांच के लिए पहले 3 चरण स्रोत के समान हो सकते हैं, सिवाय इसके कि हमें यह सुनिश्चित करने की आवश्यकता है कि प्रतिकृति केवल-पढ़ने के लिए चल रही है - चरण -3 में वेरिएबल read_only का मान 'चालू' होना चाहिए ।
इसके अलावा, हम यह सुनिश्चित करने के लिए प्रतिकृति पर अधिक जांच कर सकते हैं कि इसकी प्रतिकृति स्थिति स्वस्थ है, जैसे:
प्रतिलिपि को सही स्रोत से दोहराने के लिए कॉन्फ़िगर किया गया है।
प्रतिलिपि का स्रोत से कनेक्शन स्वस्थ है।
प्रतिकृति प्राप्त हुई स्रोत घटनाओं को लागू करने में सक्षम है।
‘शो रेप्लिका स्टेटस’ कमांड का उपयोग करके उपरोक्त सभी की जांच करना संभव है। उदाहरण के लिए:
mysql> show replica status \G; *************************** 1. row *************************** Replica_IO_State: Waiting for source to send event Source_Host: 172.31.17.43 Source_User: repl_user Source_Port: 3306 Connect_Retry: 10 Source_Log_File: mysql-bin.000001 Read_Source_Log_Pos: 7510 Relay_Log_File: relay-log.000006 Relay_Log_Pos: 414 Relay_Source_Log_File: mysql-bin.000001 Replica_IO_Running: Yes Replica_SQL_Running: Yes ******************Truncated*********************************
Source_Host मान इंगित करता है कि स्रोत सर्वर प्रतिकृति के लिए कॉन्फ़िगर किया गया है।
Replica_IO_Running मान के लिए, "हां" इंगित करता है कि प्रतिकृति स्रोत से कनेक्ट हो गई है और प्रतिकृति स्ट्रीम प्राप्त कर रही है।
Replica_SQL_Running मान के लिए, "हां" इंगित करता है कि रेप्लिका का एप्लायर चल रहा है और स्रोत से प्राप्त सभी ईवेंट को लागू करने में सक्षम है।
इस ब्लॉग पोस्ट में, हमने कुछ सरल जांचों पर चर्चा की है जो यह पता लगा सकते हैं कि आपके MySQL स्रोत और रेप्लिका सर्वर में बुनियादी समस्याएं हैं या नहीं। सामान्य तौर पर, उच्च उपलब्धता सेटअप में विफलता का पता लगाने वाला तंत्र एक जटिल विषय है और इसके लिए एक मजबूत उच्च उपलब्धता ढांचे की आवश्यकता होती है जिसके माध्यम से स्वास्थ्य जांच की निगरानी लागू की जानी चाहिए। आप हमारे उच्च उपलब्धता ढांचे के विवरण के बारे में हमारे MySQL उच्च उपलब्धता फ्रेमवर्क में विस्तार से जान सकते हैं - भाग I:परिचय ब्लॉग पोस्ट।