ClusterControl 1.6 या बाद के संस्करण की आवश्यकता है। MySQL आधारित इंस्टेंस/क्लस्टर पर लागू होता है।
कुछ अवसरों पर, आप एक ही मशीन पर MySQL के कई उदाहरण चलाना चाह सकते हैं। हो सकता है कि आप अलग-अलग उपयोगकर्ताओं को अपने स्वयं के MySQL सर्वर तक पहुंच प्रदान करना चाहें जो वे स्वयं प्रबंधित करते हैं, या आप मौजूदा उत्पादन सेटअप को बिना किसी बाधा के रखते हुए एक नई MySQL रिलीज का परीक्षण करना चाहेंगे।
प्रति उदाहरण एक अलग MySQL सर्वर बाइनरी का उपयोग करना संभव है, या कई उदाहरणों (या दो दृष्टिकोणों के संयोजन) के लिए एक ही बाइनरी का उपयोग करना संभव है। उदाहरण के लिए, आप एक सर्वर को MySQL 5.6 से और एक MySQL 5.7 से चला सकते हैं, यह देखने के लिए कि विभिन्न संस्करण एक निश्चित कार्यभार को कैसे संभालते हैं। या आप नवीनतम MySQL संस्करण के कई उदाहरण चला सकते हैं, प्रत्येक डेटाबेस के एक अलग सेट का प्रबंधन कर सकते हैं।
आप अलग-अलग सर्वर बायनेरिज़ का उपयोग करते हैं या नहीं, आपके द्वारा चलाए जाने वाले प्रत्येक इंस्टेंस को कई ऑपरेटिंग पैरामीटर के लिए अद्वितीय मानों के साथ कॉन्फ़िगर किया जाना चाहिए। यह उदाहरणों के बीच संघर्ष की संभावना को समाप्त करता है। आप कई MySQL इंस्टेंस बनाने के लिए MySQL सैंडबॉक्स का उपयोग कर सकते हैं। या आप MySQL में उपलब्ध mysqld_multi का उपयोग अलग-अलग TCP/IP पोर्ट और UNIX सॉकेट्स पर चलने वाली अलग-अलग mysqld प्रक्रियाओं को शुरू या बंद करने के लिए कर सकते हैं।
इस ब्लॉग पोस्ट में, हम आपको दिखाएंगे कि एक होस्ट पर चल रहे कई MySQL इंस्टेंस की निगरानी के लिए ClusterControl को कैसे कॉन्फ़िगर करें।
क्लस्टर नियंत्रण सीमा
लेखन के समय, ClusterControl एक होस्ट प्रति क्लस्टर/सर्वर समूह पर कई उदाहरणों की निगरानी का समर्थन नहीं करता है। यह निम्नलिखित सर्वोत्तम प्रथाओं को मानता है:
- प्रति होस्ट केवल एक MySQL उदाहरण (भौतिक सर्वर या वर्चुअल मशीन)।
- MySQL डेटा अतिरेक को N+1 सर्वर पर कॉन्फ़िगर किया जाना चाहिए।
- सभी MySQL इंस्टेंसेस क्लस्टर/सर्वर ग्रुप में एकसमान कॉन्फ़िगरेशन के साथ चल रहे हैं, उदाहरण के लिए, लिसनिंग पोर्ट, एरर लॉग, डेटादिर, बेसिर, सॉकेट समान हैं।
ऊपर वर्णित बिंदुओं के संबंध में, ClusterControl मानता है कि एक क्लस्टर/सर्वर समूह में:
- MySQL इंस्टेंसेस को एक क्लस्टर में समान रूप से कॉन्फ़िगर किया गया है; एक ही बंदरगाह, लॉग का एक ही स्थान, आधार/डेटा निर्देशिका और अन्य महत्वपूर्ण विन्यास।
- यह प्रति होस्ट केवल एक MySQL इंस्टेंस की निगरानी, प्रबंधन और तैनाती करता है।
- MySQL क्लाइंट को होस्ट पर इंस्टॉल किया जाना चाहिए और संबंधित OS उपयोगकर्ता के लिए निष्पादन योग्य पथ पर उपलब्ध होना चाहिए।
- MySQL एक IP पते से जुड़ा है जिस तक ClusterControl नोड पहुंच सकता है।
- यह प्रत्येक MySQL इंस्टेंस के लिए होस्ट आंकड़ों जैसे सीपीयू/रैम/डिस्क/नेटवर्क की व्यक्तिगत रूप से निगरानी करता रहता है। प्रति होस्ट कई उदाहरणों वाले वातावरण में, आपको अनावश्यक होस्ट आंकड़ों की अपेक्षा करनी चाहिए क्योंकि यह एक ही होस्ट को कई बार मॉनिटर करता है।
उपरोक्त मान्यताओं के साथ, निम्नलिखित क्लस्टरकंट्रोल सुविधाएँ एक से अधिक इंस्टेंस वाले होस्ट के लिए काम नहीं करती हैं:
बैकअप - Percona Xtrabackup प्रति होस्ट कई उदाहरणों का समर्थन नहीं करता है और ClusterControl द्वारा निष्पादित mysqldump केवल डिफ़ॉल्ट सॉकेट से कनेक्ट होता है।
प्रक्रिया प्रबंधन - क्लस्टर कंट्रोल मानक 'pgrep -f mysqld_safe' का उपयोग यह जांचने के लिए करता है कि MySQL उस होस्ट पर चल रहा है या नहीं। कई MySQL उदाहरणों के साथ, यह एक गलत सकारात्मक दृष्टिकोण है। जैसे, नोड/क्लस्टर के लिए स्वचालित पुनर्प्राप्ति काम नहीं करेगी।
कॉन्फ़िगरेशन प्रबंधन - ClusterControl मानक MySQL कॉन्फ़िगरेशन निर्देशिका का प्रावधान करता है। यह आमतौर पर /etc/ और /etc/mysql के अंतर्गत रहता है।
समाधान
एक साधारण वर्कअराउंड के साथ ClusterControl के साथ मशीन पर कई MySQL इंस्टेंस की निगरानी करना अभी भी संभव है। प्रत्येक MySQL इंस्टेंस को प्रति सर्वर समूह एकल इकाई के रूप में माना जाना चाहिए।
इस उदाहरण में, हमारे पास MySQL सैंडबॉक्स के साथ बनाए गए एकल होस्ट पर 3 MySQL इंस्टेंस हैं:
ClusterControl एक ही होस्ट पर कई इंस्टेंस की निगरानीहमने निम्नलिखित कमांड का उपयोग करके अपने MySQL उदाहरण बनाए:
$ su - sandbox
$ make_multiple_sandbox mysql-5.7.23-linux-glibc2.12-x86_64.tar.gz
डिफ़ॉल्ट रूप से, MySQL सैंडबॉक्स 127.0.0.1 को सुनने वाले mysql इंस्टेंस बनाता है। प्रत्येक नोड को सभी उपलब्ध आईपी पतों को सुनने के लिए उचित रूप से कॉन्फ़िगर करना आवश्यक है। होस्ट में हमारे MySQL इंस्टेंस का सारांश यहां दिया गया है:
[[email protected] multi_msb_mysql-5_7_23]$ cat default_connection.json
{
"node1":
{
"host": "master",
"port": "15024",
"socket": "/tmp/mysql_sandbox15024.sock",
"username": "[email protected]%",
"password": "msandbox"
}
,
"node2":
{
"host": "master",
"port": "15025",
"socket": "/tmp/mysql_sandbox15025.sock",
"username": "[email protected]%",
"password": "msandbox"
}
,
"node3":
{
"host": "master",
"port": "15026",
"socket": "/tmp/mysql_sandbox15026.sock",
"username": "[email protected]%",
"password": "msandbox"
}
}
अगला कदम नव निर्मित इंस्टेंस के कॉन्फ़िगरेशन को संशोधित करना है। उनमें से प्रत्येक के लिए my.cnf पर जाएं और हैश बाइंड_एड्रेस वैरिएबल:
[[email protected] multi_msb_mysql-5_7_23]$ ps -ef | grep mysqld_safe
sandbox 13086 1 0 08:58 pts/0 00:00:00 /bin/sh bin/mysqld_safe --defaults-file=/home/sandbox/sandboxes/multi_msb_mysql-5_7_23/node1/my.sandbox.cnf
sandbox 13805 1 0 08:58 pts/0 00:00:00 /bin/sh bin/mysqld_safe --defaults-file=/home/sandbox/sandboxes/multi_msb_mysql-5_7_23/node2/my.sandbox.cnf
sandbox 14065 1 0 08:58 pts/0 00:00:00 /bin/sh bin/mysqld_safe --defaults-file=/home/sandbox/sandboxes/multi_msb_mysql-5_7_23/node3/my.sandbox.cnf
[[email protected] multi_msb_mysql-5_7_23]$ vi my.cnf
#bind_address = 127.0.0.1
फिर mysql को अपने मास्टर नोड पर स्थापित करें और पुनरारंभ_ऑल स्क्रिप्ट का उपयोग करके सभी इंस्टेंस को पुनरारंभ करें।
[[email protected] multi_msb_mysql-5_7_23]$ yum install mysql
[[email protected] multi_msb_mysql-5_7_23]$ ./restart_all
# executing "stop" on /home/sandbox/sandboxes/multi_msb_mysql-5_7_23
executing "stop" on node 1
executing "stop" on node 2
executing "stop" on node 3
# executing "start" on /home/sandbox/sandboxes/multi_msb_mysql-5_7_23
executing "start" on node 1
. sandbox server started
executing "start" on node 2
. sandbox server started
executing "start" on node 3
. sandbox server started
ClusterControl से, हमें प्रत्येक उदाहरण के लिए 'आयात' करने की आवश्यकता है क्योंकि हमें इसे काम करने के लिए एक अलग समूह में अलग करने की आवश्यकता है।
ClusterControl मौजूदा सर्वर को आयात करेंनोड 1 के लिए, ClusterControl> आयात में निम्न जानकारी दर्ज करें:
ClusterControl मौजूदा सर्वर को आयात करेंउचित पोर्ट (विभिन्न उदाहरणों के लिए अलग) और होस्ट (सभी उदाहरणों के लिए समान) रखना सुनिश्चित करें।
आप शीर्ष मेनू में गतिविधि/नौकरी आइकन पर क्लिक करके प्रगति की निगरानी कर सकते हैं।
ClusterControl मौजूदा सर्वर विवरण आयात करेंClusterControl काम पूरा करने के बाद आपको UI में node1 दिखाई देगा। पोर्ट 15025 और 15026 के साथ अन्य दो नोड्स जोड़ने के लिए समान चरणों को दोहराएं। एक बार उन्हें जोड़ने के बाद आपको नीचे जैसा कुछ देखना चाहिए:
ClusterControl डैशबोर्डतुम वहाँ जाओ। हमने निगरानी के लिए अपने मौजूदा MySQL इंस्टेंस को ClusterControl में जोड़ा है। हैप्पी मॉनिटरिंग!
पुनश्च:ClusterControl के साथ आरंभ करने के लिए, यहां क्लिक करें!