MariaDB
 sql >> डेटाबेस >  >> RDS >> MariaDB

MariaDB क्लस्टर के लिए MaxCtrl का उपयोग करते हुए MaxScale बेसिक मैनेजमेंट

पिछली ब्लॉग पोस्ट में, हमने MaxCtrl कमांड-लाइन क्लाइंट का उपयोग करके MaxScale इंस्टालेशन, अपग्रेड और परिनियोजन के लिए कुछ परिचय शामिल किए हैं। इस ब्लॉग पोस्ट में, हम अपने MariaDB क्लस्टर के लिए MaxScale प्रबंधन पहलुओं को कवर करने जा रहे हैं।

ऐसे कई MaxScale घटक हैं जिन्हें हम MaxCtrl के साथ प्रबंधित कर सकते हैं, अर्थात्:

  1. सर्वर प्रबंधन
  2. सेवा प्रबंधन
  3. प्रबंधन की निगरानी करें
  4. श्रोता प्रबंधन
  5. फ़िल्टर प्रबंधन
  6. MaxScale प्रबंधन
  7. लॉगिंग प्रबंधन

इस ब्लॉग पोस्ट में, हम पहले 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.


  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. मारियाडीबी में SEC_TO_TIME () कैसे काम करता है

  2. मारियाडीबी में TIMESTAMPADD () कैसे काम करता है

  3. अपने MySQL और MariaDB बैकअप को कैसे एन्क्रिप्ट करें

  4. डेबियन जेसी में मारियाडीबी 10.1 स्थापित करना और विभिन्न मारियाडीबी क्वेरी चलाना

  5. मारियाडीबी में एक तिथि से वर्ष वापस करने के लिए 4 कार्य