पिछली ब्लॉग पोस्ट में, हमने MaxCtrl कमांड-लाइन क्लाइंट का उपयोग करके MaxScale इंस्टालेशन, अपग्रेड और परिनियोजन के लिए कुछ परिचय शामिल किए हैं। इस ब्लॉग पोस्ट में, हम अपने MariaDB क्लस्टर के लिए MaxScale प्रबंधन पहलुओं को कवर करने जा रहे हैं।
ऐसे कई MaxScale घटक हैं जिन्हें हम MaxCtrl के साथ प्रबंधित कर सकते हैं, अर्थात्:
- सर्वर प्रबंधन
- सेवा प्रबंधन
- प्रबंधन की निगरानी करें
- श्रोता प्रबंधन
- फ़िल्टर प्रबंधन
- MaxScale प्रबंधन
- लॉगिंग प्रबंधन
इस ब्लॉग पोस्ट में, हम पहले 4 घटकों को कवर करने जा रहे हैं जो आमतौर पर मारियाडीबी क्लस्टर में उपयोग किए जाते हैं। इस ब्लॉग पोस्ट के सभी आदेश MaxScale 2.4.11 पर आधारित हैं।
सर्वर प्रबंधन
सर्वर की सूची/दिखाएं
MaxScale में सभी सर्वरों का सारांश सूचीबद्ध करें:
maxctrl: list servers
┌────────────────┬────────────────┬──────┬─────────────┬─────────────────────────┬─────────────┐
│ Server │ Address │ Port │ Connections │ State │ GTID │
├────────────────┼────────────────┼──────┼─────────────┼─────────────────────────┼─────────────┤
│ mariadbgalera1 │ 192.168.10.201 │ 3306 │ 0 │ Slave, Synced, Running │ 100-100-203 │
├────────────────┼────────────────┼──────┼─────────────┼─────────────────────────┼─────────────┤
│ mariadbgalera2 │ 192.168.10.202 │ 3306 │ 0 │ Slave, Synced, Running │ 100-100-203 │
├────────────────┼────────────────┼──────┼─────────────┼─────────────────────────┼─────────────┤
│ mariadbgalera3 │ 192.168.10.203 │ 3306 │ 0 │ Master, Synced, Running │ 100-100-203 │
└────────────────┴────────────────┴──────┴─────────────┴─────────────────────────┴─────────────┘
MariaDB क्लस्टर के लिए, सर्वर सूची अपने MariaDB GTID के साथ नोड और क्लस्टर स्थिति को सारांशित करती है, केवल तभी जब क्लस्टर को मानक MariaDB प्रतिकृति के माध्यम से किसी अन्य क्लस्टर से दोहराने के लिए सेट किया गया हो। रूटिंग एल्गोरिथम के व्यवहार को नियंत्रित करने के लिए मैक्सस्केल द्वारा राज्य का उपयोग किया जाता है:
- मास्टर - क्लस्टर के लिए, इसे राइट-मास्टर माना जाता है।
- दास - यदि सभी दास नीचे हैं, लेकिन मास्टर अभी भी उपलब्ध है, तो राउटर मास्टर का उपयोग करेगा।
- समन्वयित - एक क्लस्टर नोड जो क्लस्टर के साथ समन्वयित स्थिति में है।
- चल रहा है - एक सर्वर जो ऊपर और चल रहा है। सभी सर्वर जिन्हें MariaDB MaxScale कनेक्ट कर सकता है, उन्हें रनिंग के रूप में लेबल किया जाता है।
हालांकि मारियाडीबी क्लस्टर मल्टी-मास्टर प्रतिकृति को संभालने में सक्षम है, मैक्सस्केल हमेशा मास्टर भूमिका निभाने के लिए एक नोड चुनेगा जो रीडराइटस्प्लिट रूटिंग के लिए सभी लेखन प्राप्त करेगा। डिफ़ॉल्ट रूप से, गैलेरा मॉनिटर मास्टर के रूप में सबसे कम wsrep_local_index मान वाले नोड का चयन करेगा। इसका मतलब यह होगा कि विभिन्न सर्वरों पर चलने वाले दो मैक्सस्केल मास्टर के समान सर्वर का चयन करेंगे।
सभी सर्वरों को अधिक विस्तार से दिखाएं:
maxctrl: show servers
सर्वर बनाएं
मैक्सस्केल को लोड बैलेंसर के रूप में सेट करते समय यह आमतौर पर पहली चीज है जो आपको करने की आवश्यकता होती है। सभी MariaDB क्लस्टर नोड्स को MaxScale में जोड़ना और इसे ऑब्जेक्ट नाम से लेबल करना आम बात है। इस उदाहरण में, हम गैलेरा नोड्स को "mariadbgalera#" प्रारूप में लेबल करते हैं:
maxctrl: create server mariadbgalera1 192.168.0.221 3306
maxctrl: create server mariadbgalera2 192.168.0.222 3306
maxctrl: create server mariadbgalera3 192.168.0.222 3306
निगरानी मॉड्यूल को सक्रिय करने के बाद ही सर्वर स्थिति को सही ढंग से रिपोर्ट किया जाएगा, जैसा कि मॉनिटर प्रबंधन अनुभाग के तहत और नीचे दिखाया गया है।
एक सर्वर हटाएं
किसी सर्वर को हटाने के लिए, किसी को पहले से किसी भी सेवा या मॉनिटर से सर्वर को अनलिंक करना होगा। उदाहरण के तौर पर, निम्न सर्वर सूची में, हम MaxScale से mariadbgalera3 को हटाना चाहेंगे:
maxctrl: list servers
┌────────────────┬────────────────┬──────┬─────────────┬─────────────────────────┬─────────────┐
│ Server │ Address │ Port │ Connections │ State │ GTID │
├────────────────┼────────────────┼──────┼─────────────┼─────────────────────────┼─────────────┤
│ mariadbgalera1 │ 192.168.10.201 │ 3306 │ 0 │ Slave, Synced, Running │ 100-100-203 │
├────────────────┼────────────────┼──────┼─────────────┼─────────────────────────┼─────────────┤
│ mariadbgalera2 │ 192.168.10.202 │ 3306 │ 0 │ Slave, Synced, Running │ 100-100-203 │
├────────────────┼────────────────┼──────┼─────────────┼─────────────────────────┼─────────────┤
│ mariadbgalera3 │ 192.168.10.203 │ 3306 │ 0 │ Master, Synced, Running │ 100-100-203 │
└────────────────┴────────────────┴──────┴─────────────┴─────────────────────────┴─────────────┘
सभी मॉनिटरों को सूचीबद्ध करें और देखें कि क्या सर्वर किसी मॉनिटर मॉड्यूल का हिस्सा है:
maxctrl: list monitors
┌─────────────────┬─────────┬────────────────────────────────────────────────┐
│ Monitor │ State │ Servers │
├─────────────────┼─────────┼────────────────────────────────────────────────┤
│ MariaDB-Monitor │ Running │ mariadbgalera1, mariadbgalera2, mariadbgalera3 │
└─────────────────┴─────────┴────────────────────────────────────────────────┘
ऐसा लगता है कि mariadbgalera3 मारियाडीबी-मॉनिटर का हिस्सा है, इसलिए हमें पहले "अनलिंक मॉनिटर" कमांड का उपयोग करके इसे हटाना होगा:
maxctrl: unlink monitor MariaDB-Monitor mariadbgalera3
OK
इसके बाद, यह जांचने के लिए सभी सेवाओं की सूची बनाएं कि क्या संबंधित सर्वर किसी MaxScale सेवाओं का हिस्सा है:
maxctrl: list services
┌─────────────────────┬────────────────┬─────────────┬───────────────────┬────────────────────────────────────────────────┐
│ Service │ Router │ Connections │ Total Connections │ Servers │
├─────────────────────┼────────────────┼─────────────┼───────────────────┼────────────────────────────────────────────────┤
│ Read-Write-Service │ readwritesplit │ 1 │ 1 │ mariadbgalera1, mariadbgalera2, mariadbgalera3 │
├─────────────────────┼────────────────┼─────────────┼───────────────────┼────────────────────────────────────────────────┤
│ Round-Robin-Service │ readconnroute │ 1 │ 1 │ mariadbgalera1, mariadbgalera2, mariadbgalera3 │
├─────────────────────┼────────────────┼─────────────┼───────────────────┼────────────────────────────────────────────────┤
│ Replication-Service │ binlogrouter │ 1 │ 1 │ │
└─────────────────────┴────────────────┴─────────────┴───────────────────┴────────────────────────────────────────────────┘
जैसा कि आप देख सकते हैं, mariadbgalera3 रीड-राइट-सर्विस और राउंड-रॉबिन-सर्विस का हिस्सा है। "अनलिंक सर्विस" कमांड का उपयोग करके सर्वर को उन सेवाओं से निकालें:
maxctrl: unlink service Read-Write-Service mariadbgalera3
OK
maxctrl: unlink service Round-Robin-Service mariadbgalera3
OK
आखिरकार, हम "सर्वर को नष्ट करें" कमांड का उपयोग करके सर्वर को मैक्सस्केल से हटा सकते हैं:
maxctrl: destroy server mariadbgalera3
OK
"सूची सर्वर" का उपयोग करके सत्यापित करें कि हमने MaxScale से mariadbgalera3 को हटा दिया है:
maxctrl: list servers
┌────────────────┬────────────────┬──────┬─────────────┬─────────────────────────┬──────┐
│ Server │ Address │ Port │ Connections │ State │ GTID │
├────────────────┼────────────────┼──────┼─────────────┼─────────────────────────┼──────┤
│ mariadbgalera1 │ 192.168.10.201 │ 3306 │ 0 │ Master, Synced, Running │ │
├────────────────┼────────────────┼──────┼─────────────┼─────────────────────────┼──────┤
│ mariadbgalera2 │ 192.168.10.202 │ 3306 │ 0 │ Slave, Synced, Running │ │
└────────────────┴────────────────┴──────┴─────────────┴─────────────────────────┴──────┘
सर्वर का पैरामीटर संशोधित करें
सर्वर के पैरामीटर को संशोधित करने के लिए, कोई "सर्वर बदलें" कमांड का उपयोग कर सकता है जो एक समय में केवल एक कुंजी/मान पैरामीटर लेता है। उदाहरण के लिए:
maxctrl: alter server mariadbgalera3 priority 10
OK
"सर्वर दिखाएं" कमांड का उपयोग करें और "सर्वर" ऑब्जेक्ट के लिए बदले जा सकने वाले पैरामीटर की सूची के लिए पैरामीटर अनुभाग देखें:
maxctrl: show server mariadbgalera3
...
│ Parameters │ { │
│ │ "address": "192.168.10.203", │
│ │ "protocol": "mariadbbackend", │
│ │ "port": 3306, │
│ │ "extra_port": 0, │
│ │ "authenticator": null, │
│ │ "monitoruser": null, │
│ │ "monitorpw": null, │
│ │ "persistpoolmax": 0, │
│ │ "persistmaxtime": 0, │
│ │ "proxy_protocol": false, │
│ │ "ssl": "false", │
│ │ "ssl_cert": null, │
│ │ "ssl_key": null, │
│ │ "ssl_ca_cert": null, │
│ │ "ssl_version": "MAX", │
│ │ "ssl_cert_verify_depth": 9, │
│ │ "ssl_verify_peer_certificate": false, │
│ │ "disk_space_threshold": null, │
│ │ "priority": "10" │
│ │ }
ध्यान दें कि परिवर्तन कमांड प्रभाव तत्काल है और रनटाइम में पैरामीटर के मान को संशोधित किया जाएगा और साथ ही साथ इसकी व्यक्तिगत MaxScale कॉन्फ़िगरेशन फ़ाइल में मान को /var/lib/maxscale/maxscale.cnf.d/ के अंदर पुनः आरंभ करने के लिए दृढ़ता के लिए संशोधित किया जाएगा।
सर्वर स्थिति सेट करें
मैक्सस्केल बैकएंड गैलेरा सर्वर को रखरखाव मोड को सक्रिय करके लोड संतुलन सेट से अस्थायी रूप से बाहर करने की अनुमति देता है। हम इसे "सेट सर्वर" कमांड का उपयोग करके प्राप्त कर सकते हैं:
maxctrl: set server mariadbgalera3 maintenance
OK
सर्वर की स्थिति को देखते समय, हमें यह देखना चाहिए:
maxctrl: show server mariadbgalera3
...
│ State │ Maintenance, Running
...
जब कोई सर्वर रखरखाव मोड में होता है, तो उससे कोई कनेक्शन नहीं बनाया जाएगा और मौजूदा कनेक्शन बंद कर दिए जाएंगे। होस्ट से रखरखाव की स्थिति को साफ़ करने के लिए, "क्लियर सर्वर" कमांड का उपयोग करें:
maxctrl: clear server mariadbgalera3 maintenance
OK
"शो सर्वर" से सत्यापित करें:
maxctrl: show server mariadbgalera3
...
│ State │ Slave, Synced, Running │
...
प्रबंधन की निगरानी करें
मॉनिटर बनाएं
मारियाडीबी क्लस्टर के लिए मैक्सस्केल मॉनिटर मॉड्यूल को गैलेरमोन कहा जाता है। एक सही निगरानी मॉड्यूल को परिभाषित करना आवश्यक है ताकि मैक्सस्केल नोड्स की स्थिति के आधार पर प्रश्नों के लिए सर्वोत्तम रूटिंग निर्धारित कर सके। उदाहरण के लिए, यदि एक गैलेरा नोड एक योजक नोड के लिए दाता के रूप में कार्य कर रहा है, तो क्या यह स्वस्थ नोड्स का हिस्सा होना चाहिए? कुछ मामलों में जैसे जहां डेटाबेस का आकार इतना छोटा है, डोनर नोड को स्वस्थ के रूप में चिह्नित करना (मैक्सस्केल में उपलब्ध_जब_डोनर =ट्रू पैरामीटर सेट करके) एक खराब योजना नहीं है और कभी-कभी क्वेरी रूटिंग प्रदर्शन में सुधार करता है।
एक सेवा (राउटर) बनाने के लिए, मारियाडीबी सर्वर के बैकएंड पर एक निगरानी उपयोगकर्ता बनाना होगा। आमतौर पर, कोई उसी निगरानी उपयोगकर्ता का उपयोग करेगा जिसे हमने मॉनिटर मॉड्यूल के लिए परिभाषित किया है। गैलेरा क्लस्टर के लिए, यदि निगरानी उपयोगकर्ता मौजूद नहीं है, तो इसे निम्न विशेषाधिकारों के साथ किसी एक नोड पर बनाएं:
MariaDB> CREATE USER [email protected]'192.168.0.220' IDENTIFIED BY 'MaXSc4LeP4ss';
MariaDB> GRANT SELECT ON mysql.* TO 'maxscale_monitor'@'192.168.0.220';
MariaDB> GRANT SHOW DATABASES ON *.* TO 'maxscale_monitor'@'192.168.0.220';
"मॉनिटर बनाएं" कमांड का उपयोग करें और मॉनिटर मॉड्यूल के रूप में गैलेरमोन के साथ एक नाम निर्दिष्ट करें:
maxctrl: create monitor MariaDB-Monitor galeramon servers=mariadbgalera1,mariadbgalera2,mariadbgalera3 user=maxscale_monitor password=MaXSc4LeP4ss
OK
ध्यान दें कि हमने MaxScale सीक्रेट को कॉन्फ़िगर नहीं किया है, जिसका अर्थ है कि हम यूजर पासवर्ड को प्लेन टेक्स्ट फॉर्मेट में स्टोर करते हैं। एन्क्रिप्शन को सक्षम करने के लिए, इस ब्लॉग पोस्ट में उदाहरण देखें, मैक्सस्केल प्रशासन का परिचय मैक्सस्केल अनुभाग में निगरानी जोड़ने के तहत मारियाडीबी क्लस्टर के लिए maxctrl का उपयोग करना।
सूची/मॉनीटर दिखाएं
सभी मॉनीटरों को सूचीबद्ध करने के लिए:
maxctrl: list monitors
┌─────────────────┬─────────┬────────────────────────────────────────────────┐
│ Monitor │ State │ Servers │
├─────────────────┼─────────┼────────────────────────────────────────────────┤
│ MariaDB-Monitor │ Running │ mariadbgalera1, mariadbgalera2, mariadbgalera3 │
└─────────────────┴─────────┴────────────────────────────────────────────────┘
मॉनिटर पर अधिक विस्तृत नज़र पाने के लिए, "शो मॉनिटर" कमांड का उपयोग करें:
maxctrl: show monitor MariaDB-Monitor
┌─────────────────────┬───────────────────────────────────────────┐
│ Monitor │ MariaDB-Monitor │
├─────────────────────┼───────────────────────────────────────────┤
│ State │ Running │
├─────────────────────┼───────────────────────────────────────────┤
│ Servers │ mariadbgalera1 │
│ │ mariadbgalera2 │
│ │ mariadbgalera3 │
├─────────────────────┼───────────────────────────────────────────┤
│ Parameters │ { │
│ │ "user": "maxscale_monitor", │
│ │ "password": "*****", │
│ │ "passwd": null, │
│ │ "monitor_interval": 2000, │
│ │ "backend_connect_timeout": 3, │
│ │ "backend_read_timeout": 1, │
│ │ "backend_write_timeout": 2, │
│ │ "backend_connect_attempts": 1, │
│ │ "journal_max_age": 28800, │
│ │ "disk_space_threshold": null, │
│ │ "disk_space_check_interval": 0, │
│ │ "script": null, │
│ │ "script_timeout": 90, │
│ │ "events": "all", │
│ │ "disable_master_failback": false, │
│ │ "available_when_donor": true, │
│ │ "disable_master_role_setting": false, │
│ │ "root_node_as_master": false, │
│ │ "use_priority": false, │
│ │ "set_donor_nodes": false │
│ │ } │
├─────────────────────┼───────────────────────────────────────────┤
│ Monitor Diagnostics │ { │
│ │ "disable_master_failback": false, │
│ │ "disable_master_role_setting": false, │
│ │ "root_node_as_master": false, │
│ │ "use_priority": false, │
│ │ "set_donor_nodes": false │
│ │ } │
└─────────────────────┴───────────────────────────────────────────┘
स्टॉप/स्टार्ट मॉनिटर
मॉनिटर को रोकने से सर्वर की निगरानी रुक जाएगी। यह आमतौर पर सर्वर राज्यों को मैन्युअल रूप से नियंत्रित करने के लिए "सेट सर्वर" कमांड के संयोजन के साथ प्रयोग किया जाता है। मॉनिटरिंग सेवा को रोकने के लिए "स्टॉप मॉनिटर" कमांड का उपयोग करें:
maxctrl: stop monitor MariaDB-Monitor
OK
"शो मॉनिटर" से राज्य की पुष्टि करें:
maxctrl: show monitors MariaDB-Monitor
┌─────────────────────┬───────────────────────────────────────────┐
│ Monitor │ MariaDB-Monitor │
├─────────────────────┼───────────────────────────────────────────┤
│ State │ Stopped │
...
इसे फिर से शुरू करने के लिए, "स्टार्ट मॉनिटर" का उपयोग करें:
maxctrl: start monitor MariaDB-Monitor
OK
मॉनिटर के पैरामीटर को संशोधित करें
इस मॉनीटर के लिए एक पैरामीटर बदलने के लिए, "मॉनीटर बदलें" कमांड का उपयोग करें और पैरामीटर कुंजी/मान को नीचे बताए अनुसार निर्दिष्ट करें:
maxctrl: alter monitor MariaDB-Monitor available_when_donor true
OK
"शो मॉनिटर" कमांड का उपयोग करें और पैरामीटर्स अनुभाग में देखें, उन पैरामीटर्स की सूची के लिए जिन्हें गैलेरामोन मॉड्यूल के लिए बदला जा सकता है:
maxctrl: show server mariadbgalera3
...
│ Parameters │ { │
│ │ "user": "maxscale_monitor", │
│ │ "password": "*****", │
│ │ "monitor_interval": 2000, │
│ │ "backend_connect_timeout": 3, │
│ │ "backend_read_timeout": 1, │
│ │ "backend_write_timeout": 2, │
│ │ "backend_connect_attempts": 1, │
│ │ "journal_max_age": 28800, │
│ │ "disk_space_threshold": null, │
│ │ "disk_space_check_interval": 0, │
│ │ "script": null, │
│ │ "script_timeout": 90, │
│ │ "events": "all", │
│ │ "disable_master_failback": false, │
│ │ "available_when_donor": true, │
│ │ "disable_master_role_setting": false, │
│ │ "root_node_as_master": false, │
│ │ "use_priority": false, │
│ │ "set_donor_nodes": false │
│ │ } │
एक मॉनिटर हटाएं
मॉनिटर को डिलीट करने के लिए सबसे पहले मॉनिटर से जुड़े सभी सर्वर को हटाना होगा। उदाहरण के लिए, मैक्सस्केल में निम्नलिखित मॉनिटर पर विचार करें:
maxctrl: list monitors
┌─────────────────┬─────────┬────────────────────────────────────────────────┐
│ Monitor │ State │ Servers │
├─────────────────┼─────────┼────────────────────────────────────────────────┤
│ MariaDB-Monitor │ Running │ mariadbgalera1, mariadbgalera2, mariadbgalera3 │
└─────────────────┴─────────┴────────────────────────────────────────────────┘
उस विशेष सेवा से सभी सर्वर निकालें:
maxctrl: unlink monitor MariaDB-Monitor mariadbgalera1 mariadbgalera2 mariadbgalera3
OK
हमारा मॉनिटर अब इस तरह दिख रहा है:
maxctrl: list monitors
┌─────────────────┬─────────┬─────────┐
│ Monitor │ State │ Servers │
├─────────────────┼─────────┼─────────┤
│ MariaDB-Monitor │ Running │ │
└─────────────────┴─────────┴─────────┘
तभी हम मॉनिटर को हटा सकते हैं:
maxctrl: destroy monitor MariaDB-Monitor
OK
सर्वर को मॉनिटर में जोड़ें/निकालें
मॉनिटर बनाने के बाद, हम गैलेरा सर्वर को मॉनिटर में जोड़ने के लिए "लिंक मॉनिटर" कमांड का उपयोग कर सकते हैं। सर्वर बनाएं अनुभाग के अंतर्गत बनाए गए सर्वर के नाम का उपयोग करें:
maxctrl: link monitor MariaDB-Monitor mariadbgalera1 mariadbgalera2 mariadbgalera3
OK
इसी तरह, सर्वर को सेवा से हटाने के लिए, बस "अनलिंक मॉनिटर" कमांड का उपयोग करें:
maxctrl: unlink monitor MariaDB-Monitor mariadbgalera3
OK
"सूची मॉनिटर" या "शो मॉनिटर" कमांड के साथ सत्यापित करें।
सेवा प्रबंधन
एक सेवा बनाएं
एक सेवा (राउटर) बनाने के लिए, मारियाडीबी सर्वर के बैकएंड पर एक निगरानी उपयोगकर्ता बनाना होगा। आमतौर पर, कोई उसी निगरानी उपयोगकर्ता का उपयोग करेगा जिसे हमने मॉनिटर मॉड्यूल के लिए परिभाषित किया है। गैलेरा क्लस्टर के लिए, यदि निगरानी उपयोगकर्ता मौजूद नहीं है, तो इसे निम्न विशेषाधिकारों के साथ किसी एक नोड पर बनाएं:
MariaDB> CREATE USER [email protected]'192.168.0.220' IDENTIFIED BY 'MaXSc4LeP4ss';
MariaDB> GRANT SELECT ON mysql.* TO 'maxscale_monitor'@'192.168.0.220';
MariaDB> GRANT SHOW DATABASES ON *.* TO 'maxscale_monitor'@'192.168.0.220';
जहाँ 192.168.0.220 MaxScale होस्ट का IP पता है।
फिर, सेवा का नाम निर्दिष्ट करें, बैकएंड सर्वर से कनेक्ट करने के लिए MaxScale के लिए निगरानी उपयोगकर्ता के साथ रूटिंग प्रकार:
maxctrl: create service Round-Robin-Service readconnroute user=maxscale_monitor password=******
OK
साथ ही, आप सेवा बनाते समय अतिरिक्त पैरामीटर निर्दिष्ट कर सकते हैं। इस उदाहरण में, हम चाहते हैं कि "मास्टर" नोड को हमारे मारियाडीबी गैलेरा क्लस्टर के लिए राउंड-रॉबिन बैलेंसिंग सेट में शामिल किया जाए:
maxctrl: create service Round-Robin-Service readconnroute user=maxscale_monitor password=****** router_options=master,slave
OK
समर्थित पैरामीटर देखने के लिए "शो सर्विस" कमांड का उपयोग करें। राउंड-रॉबिन राउटर के लिए, सूची इस प्रकार है:
maxctrl: show service Round-Robin-Service
...
│ Parameters │ { │
│ │ "router_options": null, │
│ │ "user": "maxscale_monitor", │
│ │ "password": "*****", │
│ │ "passwd": null, │
│ │ "enable_root_user": false, │
│ │ "max_retry_interval": 3600, │
│ │ "max_connections": 0, │
│ │ "connection_timeout": 0, │
│ │ "auth_all_servers": false, │
│ │ "strip_db_esc": true, │
│ │ "localhost_match_wildcard_host": true, │
│ │ "version_string": null, │
│ │ "weightby": null, │
│ │ "log_auth_warnings": true, │
│ │ "retry_on_failure": true, │
│ │ "session_track_trx_state": false, │
│ │ "retain_last_statements": -1, │
│ │ "session_trace": 0
रीड-राइट स्प्लिट राउटर के लिए समर्थित पैरामीटर हैं:
maxctrl: show service Read-Write-Service
...
│ Parameters │ { │
│ │ "router_options": null, │
│ │ "user": "maxscale_monitor", │
│ │ "password": "*****", │
│ │ "passwd": null, │
│ │ "enable_root_user": false, │
│ │ "max_retry_interval": 3600, │
│ │ "max_connections": 0, │
│ │ "connection_timeout": 0, │
│ │ "auth_all_servers": false, │
│ │ "strip_db_esc": true, │
│ │ "localhost_match_wildcard_host": true, │
│ │ "version_string": null, │
│ │ "weightby": null, │
│ │ "log_auth_warnings": true, │
│ │ "retry_on_failure": true, │
│ │ "session_track_trx_state": false, │
│ │ "retain_last_statements": -1, │
│ │ "session_trace": 0, │
│ │ "use_sql_variables_in": "all", │
│ │ "slave_selection_criteria": "LEAST_CURRENT_OPERATIONS", │
│ │ "master_failure_mode": "fail_instantly", │
│ │ "max_slave_replication_lag": -1, │
│ │ "max_slave_connections": "255", │
│ │ "retry_failed_reads": true, │
│ │ "prune_sescmd_history": false, │
│ │ "disable_sescmd_history": false, │
│ │ "max_sescmd_history": 50, │
│ │ "strict_multi_stmt": false, │
│ │ "strict_sp_calls": false, │
│ │ "master_accept_reads": false, │
│ │ "connection_keepalive": 300, │
│ │ "causal_reads": false, │
│ │ "causal_reads_timeout": "10", │
│ │ "master_reconnection": false, │
│ │ "delayed_retry": false, │
│ │ "delayed_retry_timeout": 10, │
│ │ "transaction_replay": false, │
│ │ "transaction_replay_max_size": "1Mi", │
│ │ "optimistic_trx": false │
│ │ }
List/Show Services
To list out all created services (routers), use the "list services" command:
maxctrl: list services
┌─────────────────────┬────────────────┬─────────────┬───────────────────┬────────────────────────────────────────────────┐
│ Service │ Router │ Connections │ Total Connections │ Servers │
├─────────────────────┼────────────────┼─────────────┼───────────────────┼────────────────────────────────────────────────┤
│ Read-Write-Service │ readwritesplit │ 1 │ 1 │ mariadbgalera1, mariadbgalera2, mariadbgalera3 │
├─────────────────────┼────────────────┼─────────────┼───────────────────┼────────────────────────────────────────────────┤
│ Round-Robin-Service │ readconnroute │ 1 │ 1 │ mariadbgalera1, mariadbgalera2, mariadbgalera3 │
├─────────────────────┼────────────────┼─────────────┼───────────────────┼────────────────────────────────────────────────┤
│ Binlog-Repl-Service │ binlogrouter │ 1 │ 1 │ │
└─────────────────────┴────────────────┴─────────────┴───────────────────┴────────────────────────────────────────────────┘
In the above examples, we have created 3 services, with 3 different routers. However, the Binlog-Repl-Service for our binlog server is not linked with any servers yet.
To show all services in details:
maxctrl: show services
Or if you want to show a particular service:
maxctrl: show service Round-Robin-Service
Stop/Start Services
Stopping a service will prevent all the listeners for that service from accepting new connections. Existing connections will still be handled normally until they are closed. To stop and start all services, use the "stop services":
maxctrl: stop services
maxctrl: show services
maxctrl: start services
maxctrl: show services
Or we can use the "stop service" to stop only one particular service:
maxctrl: stop services Round-Robin-Service
Delete a Service
In order to delete a service, one has to remove all servers and destroy the listeners associated with the service first. For example, consider the following services in MaxScale:
maxctrl: list services
┌─────────────────────┬────────────────┬─────────────┬───────────────────┬────────────────────────────────────────────────┐
│ Service │ Router │ Connections │ Total Connections │ Servers │
├─────────────────────┼────────────────┼─────────────┼───────────────────┼────────────────────────────────────────────────┤
│ Read-Write-Service │ readwritesplit │ 1 │ 1 │ mariadbgalera1, mariadbgalera2, mariadbgalera3 │
├─────────────────────┼────────────────┼─────────────┼───────────────────┼────────────────────────────────────────────────┤
│ Round-Robin-Service │ readconnroute │ 1 │ 1 │ mariadbgalera1, mariadbgalera2, mariadbgalera3 │
├─────────────────────┼────────────────┼─────────────┼───────────────────┼────────────────────────────────────────────────┤
│ Replication-Service │ binlogrouter │ 1 │ 1 │ │
└─────────────────────┴────────────────┴─────────────┴───────────────────┴────────────────────────────────────────────────┘
Let's remove Round-Robin-Service from the setup. Remove all servers from this particular service:
maxctrl: unlink service Round-Robin-Service mariadbgalera1 mariadbgalera2 mariadbgalera3
OK
Our services are now looking like this:
maxctrl: list services
┌─────────────────────┬────────────────┬─────────────┬───────────────────┬────────────────────────────────────────────────┐
│ Service │ Router │ Connections │ Total Connections │ Servers │
├─────────────────────┼────────────────┼─────────────┼───────────────────┼────────────────────────────────────────────────┤
│ Read-Write-Service │ readwritesplit │ 1 │ 1 │ mariadbgalera1, mariadbgalera2, mariadbgalera3 │
├─────────────────────┼────────────────┼─────────────┼───────────────────┼────────────────────────────────────────────────┤
│ Round-Robin-Service │ readconnroute │ 1 │ 1 │ │
├─────────────────────┼────────────────┼─────────────┼───────────────────┼────────────────────────────────────────────────┤
│ Replication-Service │ binlogrouter │ 1 │ 1 │ │
└─────────────────────┴────────────────┴─────────────┴───────────────────┴────────────────────────────────────────────────┘
If the service is tied with a listener, we have to remove it as well. Use "list listeners" and specify the service name to look for it:
maxctrl: list listeners Round-Robin-Service
┌──────────────────────┬──────┬─────────┬─────────┐
│ Name │ Port │ Host │ State │
├──────────────────────┼──────┼─────────┼─────────┤
│ Round-Robin-Listener │ 3307 │ 0.0.0.0 │ Running │
└──────────────────────┴──────┴─────────┴─────────┘
And then remove the listener:
maxctrl: destroy listener Round-Robin-Service Round-Robin-Listener
OK
Finally, we can remove the service:
maxctrl: destroy service Round-Robin-Service
OK
Modify Service's Parameter
Similar to the other object, one can modify a service parameter by using the "alter service" command:
maxctrl: alter service Read-Write-Service master_accept_reads true
OK
Some routers support runtime configuration changes to all parameters. Currently all readconnroute, readwritesplit and schemarouter parameters can be changed at runtime. In addition to module specific parameters, the following list of common service parameters can be altered at runtime:
- user
- passwd
- enable_root_user
- max_connections
- connection_timeout
- auth_all_servers
- optimize_wildcard
- strip_db_esc
- localhost_match_wildcard_host
- max_slave_connections
- max_slave_replication_lag
- retain_last_statements
Note that alter command effect is immediate and the parameter's value in the runtime will be modified as well as the value in its individual MaxScale configuration file inside /var/lib/maxscale/maxscale.cnf.d/ for persistence across restart.
Add/Remove Servers into Service
After creating a service, we can use the link command to add our servers into the service. Use the server's name as created under Create Servers section:
maxctrl: link service Round-Robin-Service mariadbgalera1 mariadbgalera2 mariadbgalera3
OK
Similarly, to remove a server from the service, just use "unlink service" command:
maxctrl: unlink service Round-Robin-Service mariadbgalera3
OK
We can only remove one server from a service at a time, so repeat it for other nodes to delete them. Verify with "list services" or "show services" command.
Listener Management
List Listeners
To list all listeners, we need to know the service name in advanced:
maxctrl: list services
┌──────────────────────┬────────────────┬─────────────┬───────────────────┬────────────────────────────────────────────────┐
│ Service │ Router │ Connections │ Total Connections │ Servers │
├──────────────────────┼────────────────┼─────────────┼───────────────────┼────────────────────────────────────────────────┤
│ Read-Write-Service │ readwritesplit │ 0 │ 0 │ mariadbgalera1, mariadbgalera2, mariadbgalera3 │
├──────────────────────┼────────────────┼─────────────┼───────────────────┼────────────────────────────────────────────────┤
│ Round-Robin-Service │ readconnroute │ 0 │ 0 │ mariadbgalera1, mariadbgalera2, mariadbgalera3 │
├──────────────────────┼────────────────┼─────────────┼───────────────────┼────────────────────────────────────────────────┤
In the above example, we have two services, Read-Write-Service and Round-Robin-Service. Then, we can list out the listener for that particular service. For Read-Write-Service:
maxctrl: list listeners Read-Write-Service
┌─────────────────────┬──────┬─────────┬─────────┐
│ Name │ Port │ Host │ State │
├─────────────────────┼──────┼─────────┼─────────┤
│ Read-Write-Listener │ 3306 │ 0.0.0.0 │ Running │
└─────────────────────┴──────┴─────────┴─────────┘
And for Round-Robin-Service:
maxctrl: list listeners Round-Robin-Service
┌──────────────────────┬──────┬─────────┬─────────┐
│ Name │ Port │ Host │ State │
├──────────────────────┼──────┼─────────┼─────────┤
│ Round-Robin-Listener │ 3307 │ 0.0.0.0 │ Running │
└──────────────────────┴──────┴─────────┴─────────┘
Unlike other objects in MaxScale, the listener does not have a "show" and "alter" commands since it is a fairly simple object.
Create a Listener
Make sure a service has been created. In this example, taken from the Create Service section above, we will create a listener so MaxScale will listen on port 3307 to process the MariaDB connections in a round-robin fashion:
maxctrl: create listener Round-Robin-Service Round-Robin-Listener 3307
OK
Delete a Listener
To delete a listener, use the "destroy listener" command with the respective service name and listener name:
maxctrl: destroy listener Round-Robin-Service Round-Robin-Listener
OK
This concludes this episode of basic MaxScale management tasks for MariaDB Cluster. In the next series, we are going to cover the MaxScale advanced management tasks like service filters, MaxScale user management and so on.