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

बेंचमार्किंग मैनुअल डेटाबेस परिनियोजन बनाम स्वचालित परिनियोजन

डेटाबेस को परिनियोजित करने के कई तरीके हैं। आप इसे हाथ से स्थापित कर सकते हैं, आप व्यापक रूप से उपलब्ध बुनियादी ढांचे के ऑर्केस्ट्रेशन टूल जैसे कि Ansible, Chef, Puppet या Salt पर भरोसा कर सकते हैं। वे उपकरण बहुत लोकप्रिय हैं और स्क्रिप्ट, रेसिपी, प्लेबुक ढूंढना काफी आसान है, आप इसे नाम दें, जो आपको डेटाबेस क्लस्टर की स्थापना को स्वचालित करने में मदद करेगा। क्लस्टरकंट्रोल जैसे अधिक विशिष्ट डेटाबेस ऑटोमेशन प्लेटफ़ॉर्म भी हैं, जिनका उपयोग स्वचालित परिनियोजन के लिए भी किया जा सकता है। अपने क्लस्टर को परिनियोजित करने का सबसे अच्छा तरीका क्या होगा? वास्तव में इसे परिनियोजित करने के लिए आपको कितने समय की आवश्यकता होगी?

सबसे पहले, आइए स्पष्ट करें कि हम क्या करना चाहते हैं। मान लेते हैं कि हम Percona XtraDB क्लस्टर 5.7 की तैनाती करेंगे। इसमें तीन नोड होंगे और इसके लिए हम तीन वैग्रांट वर्चुअल मशीनों का उपयोग करेंगे जो उबंटू 16.04 (बेंटो/उबंटू-16.04 इमेज) चला रहे हैं। हम एक क्लस्टर को मैन्युअल रूप से तैनात करने का प्रयास करेंगे, फिर Ansible और ClusterControl का उपयोग करेंगे। आइए देखें कि परिणाम कैसा दिखेगा।

मैन्युअल परिनियोजन

रिपॉजिटरी सेटअप - 1 मिनट, 45 सेकंड।

सबसे पहले, हमें सभी उबंटू नोड्स पर पेरकोना रिपॉजिटरी को कॉन्फ़िगर करना होगा। त्वरित Google खोज, वर्चुअल मशीन में ssh और आवश्यक कमांड चलाने में 1m45s लगते हैं

हमें निर्देशों के साथ निम्न पृष्ठ मिला:
https://www.percona.com/doc/percona-repo-config/percona-release.html

और हमने “DEB-आधारित GNU/LINUX वितरण” खंड में वर्णित चरणों को निष्पादित किया। उपयुक्त कैश को रीफ्रेश करने के लिए हमने उपयुक्त अपडेट भी चलाया।

पीएक्ससी नोड्स स्थापित करना - 2 मिनट 45 सेकंड

इस चरण में मूल रूप से निष्पादन शामिल है:

[email protected]:~# apt install percona-xtradb-cluster-5.7

बाकी ज्यादातर आपके इंटरनेट कनेक्शन की गति पर निर्भर है क्योंकि पैकेज डाउनलोड किए जा रहे हैं। आपके इनपुट की भी आवश्यकता होगी (आप सुपरयूज़र के लिए एक पासवर्ड पास कर रहे होंगे) इसलिए यह अनअटेंडेड इंस्टॉलेशन नहीं है। जब सब कुछ हो जाता है, तो आप तीन चल रहे Percona XtraDB क्लस्टर नोड्स के साथ समाप्त हो जाएंगे:

root     15488  0.0  0.2   4504  1788 ?        S    10:12   0:00 /bin/sh /usr/bin/mysqld_safe
mysql    15847  0.3 28.3 1339576 215084 ?      Sl   10:12   0:00  \_ /usr/sbin/mysqld --basedir=/usr --datadir=/var/lib/mysql --plugin-dir=/usr/lib/mysql/plugin --user=mysql --wsrep-provider=/usr/lib/galera3/libgalera_smm.so --log-error=/var/log/mysqld.log --pid-file=/var/run/mysqld/mysqld.pid --socket=/var/run/mysqld/mysqld.sock --wsrep_start_position=00000000-0000-0000-0000-000000000000:-1

पीएक्ससी नोड्स को कॉन्फ़िगर करना - 3 मिनट, 25 सेकंड

यहाँ मुश्किल हिस्सा शुरू होता है। अनुभव को मापना वास्तव में कठिन है और वास्तव में यह समझने में कितना समय लगेगा कि क्या करने की आवश्यकता है। क्या अच्छा है, Google खोज "पेरकोना xtrabdb क्लस्टर कैसे स्थापित करें" पेरकोना के दस्तावेज़ीकरण की ओर इशारा करता है, जो बताता है कि प्रक्रिया कैसी दिखनी चाहिए। आप सामान्य रूप से पीएक्ससी और गैलेरा से कितने परिचित हैं, इस पर निर्भर करते हुए इसमें अभी भी कम या ज्यादा समय लग सकता है। सबसे खराब स्थिति में आपको किसी भी अतिरिक्त आवश्यक कार्रवाई के बारे में पता नहीं होगा और आप अपने पीएक्ससी से जुड़ जाएंगे और इसके साथ काम करना शुरू कर देंगे, यह महसूस किए बिना कि, वास्तव में, आपके पास तीन नोड हैं, प्रत्येक का अपना एक क्लस्टर है।

आइए मान लें कि हम पेरकोना की सिफारिश का पालन करते हैं और केवल उन चरणों को निष्पादित करने के लिए समय देते हैं। संक्षेप में, हमने Percona वेबसाइट के निर्देशों के अनुसार कॉन्फ़िगरेशन फ़ाइलों को संशोधित किया, हमने पहले नोड को बूटस्ट्रैप करने का भी प्रयास किया:

[email protected]:~# /etc/init.d/mysql bootstrap-pxc
mysqld: [ERROR] Found option without preceding group in config file /etc/mysql/my.cnf at line 10!
mysqld: [ERROR] Fatal error in defaults handling. Program aborted!
mysqld: [ERROR] Found option without preceding group in config file /etc/mysql/my.cnf at line 10!
mysqld: [ERROR] Fatal error in defaults handling. Program aborted!
mysqld: [ERROR] Found option without preceding group in config file /etc/mysql/my.cnf at line 10!
mysqld: [ERROR] Fatal error in defaults handling. Program aborted!
mysqld: [ERROR] Found option without preceding group in config file /etc/mysql/my.cnf at line 10!
mysqld: [ERROR] Fatal error in defaults handling. Program aborted!
 * Bootstrapping Percona XtraDB Cluster database server mysqld                                                                                                                                                                                                                     ^C

यह सही नहीं लगा। दुर्भाग्य से, निर्देश स्पष्ट नहीं थे। दोबारा, यदि आप नहीं जानते कि क्या हो रहा है, तो आप यह समझने में अधिक समय व्यतीत करेंगे कि क्या हुआ। सौभाग्य से, stackoverflow.com बहुत मददगार आता है (हालाँकि हमें मिली सूची में पहली प्रतिक्रिया नहीं है) और आपको यह महसूस करना चाहिए कि आप अपनी /etc/mysql/my.cnf फ़ाइल में [mysqld] अनुभाग शीर्षलेख को याद करते हैं। इसे सभी नोड्स पर जोड़ने और बूटस्ट्रैप प्रक्रिया को दोहराने से समस्या हल हो गई। कुल मिलाकर हमने 3 मिनट और 25 सेकंड बिताए (त्रुटि के लिए गुगलिंग शामिल नहीं है क्योंकि हमने तुरंत देखा कि समस्या क्या थी)।

SST के लिए कॉन्फ़िगर करना, अन्य नोड्स को क्लस्टर में लाना - 8 मिनट से अनंत तक शुरू करना

Percona वेब साइट पर निर्देश काफी स्पष्ट हैं। एक बार जब आपके पास एक नोड ऊपर और चल रहा हो, तो बस शेष नोड्स शुरू करें और आप ठीक हो जाएंगे। हमने यह कोशिश की और हम क्लस्टर में शामिल होने वाले अधिक नोड्स को देखने में असमर्थ रहे। यह वह जगह है जहां यह बताना लगभग असंभव है कि इस मुद्दे का निदान करने में कितना समय लगेगा। हमें 6-7 मिनट लगे लेकिन इसे जल्दी से करने में सक्षम होने के लिए आपको:

  1. PXC कॉन्फ़िगरेशन की संरचना से परिचित हों:
    [email protected]:~# tree  /etc/mysql/
    /etc/mysql/
    ├── conf.d
    │   ├── mysql.cnf
    │   └── mysqldump.cnf
    ├── my.cnf -> /etc/alternatives/my.cnf
    ├── my.cnf.fallback
    ├── my.cnf.old
    ├── percona-xtradb-cluster.cnf
    └── percona-xtradb-cluster.conf.d
        ├── client.cnf
        ├── mysqld.cnf
        ├── mysqld_safe.cnf
        └── wsrep.cnf
  2. जानें कि MySQL कॉन्फ़िगरेशन फ़ाइलों में !include और !includedir निर्देश कैसे काम करते हैं
  3. जानें कि MySQL एकाधिक फ़ाइलों में शामिल समान चरों को कैसे संभालता है
  4. जानें कि क्या देखना है और कॉन्फ़िगरेशन के बारे में जागरूक रहें जिसके परिणामस्वरूप नोड अपने आप एक क्लस्टर बनाने के लिए बूटस्ट्रैपिंग करेगा

समस्या इस तथ्य से संबंधित थी कि निर्देशों में /etc/mysql/my.cnf को छोड़कर किसी भी फाइल का उल्लेख नहीं था, वास्तव में, हमें /etc/mysql/percona-xtradb-cluster.conf.d/wsrep को संशोधित करना चाहिए था। सीएनएफ उस फ़ाइल में खाली चर है:

wsrep_cluster_address=gcomm://

और ऐसा कॉन्फ़िगरेशन नोड को बूटस्ट्रैप के लिए बाध्य करता है क्योंकि इसमें शामिल होने के लिए अन्य नोड्स के बारे में जानकारी नहीं है। हमने उस चर को /etc/mysql/my.cnf में सेट किया था लेकिन बाद में wsrep.cnf फ़ाइल को शामिल किया गया, हमारे सेटअप को अधिलेखित कर दिया।

यह समस्या उन लोगों के लिए एक गंभीर अवरोधक हो सकती है जो वास्तव में इस बात से परिचित नहीं हैं कि MySQL और Galera कैसे काम करता है, जिसके परिणामस्वरूप डिबगिंग के अधिक नहीं होने पर भी घंटों लग जाते हैं।

कुल इंस्टालेशन समय - 16 मिनट (यदि आप मेरे जैसे MySQL DBA हैं)

हम 16 मिनट में Percona XtraDB क्लस्टर स्थापित करने में कामयाब रहे। आपको कुछ बातों का ध्यान रखना होगा - हमने कॉन्फ़िगरेशन को ट्यून नहीं किया है। यह कुछ ऐसा है जिसके लिए अधिक समय और ज्ञान की आवश्यकता होगी। पीएक्ससी नोड कुछ सरल विन्यास के साथ आता है, जो ज्यादातर बाइनरी लॉगिंग और गैलेरा राइटसेट प्रतिकृति से संबंधित है। कोई InnoDB ट्यूनिंग नहीं है। यदि आप MySQL इंटर्नल से परिचित नहीं हैं, तो यह पढ़ने और आंतरिक तंत्र से परिचित होने के दिन नहीं तो घंटे हैं। एक और महत्वपूर्ण बात यह है कि यह एक ऐसी प्रक्रिया है जिसे आपको अपने द्वारा परिनियोजित प्रत्येक क्लस्टर के लिए फिर से लागू करना होगा। अंत में, हम Percona XtraDB Cluster और MySQL के साथ सामान्य रूप से अपने अनुभव के कारण इस मुद्दे की पहचान करने और इसे बहुत तेजी से हल करने में कामयाब रहे। क्या हो रहा है और क्यों हो रहा है, यह समझने की कोशिश में आकस्मिक उपयोगकर्ता सबसे अधिक समय व्यतीत करेगा।

उत्तरदायी प्लेबुक

अब, Ansible के साथ ऑटोमेशन पर। आइए एक उत्तरदायी प्लेबुक को खोजने और उसका उपयोग करने का प्रयास करें, जिसे हम आगे की सभी तैनाती के लिए पुन:उपयोग कर सकते हैं। देखते हैं कि ऐसा करने में कितना समय लगेगा।

SSH कनेक्टिविटी को कॉन्फ़िगर करना - 1 मिनट

Ansible को कनेक्ट करने और उन्हें कॉन्फ़िगर करने के लिए सभी नोड्स में SSH कनेक्टिविटी की आवश्यकता होती है। हमने एक SSH कुंजी जेनरेट की और इसे मैन्युअल रूप से सभी नोड्स में वितरित किया।

जिम्मेदार प्लेबुक ढूँढना - 2 मिनट 15 सेकंड

यहां मुख्य मुद्दा यह है कि वहां इतनी सारी प्लेबुक उपलब्ध हैं कि यह तय करना असंभव है कि सबसे अच्छा क्या है। जैसे, हमने शीर्ष 3 Google परिणामों के साथ जाने का निर्णय लिया और एक को चुनने का प्रयास किया। हमने https://github.com/cdelgehier/ansible-role-XtraDB-Cluster पर फैसला किया क्योंकि यह बाकी की तुलना में अधिक विन्यास योग्य लगता है।

क्लोनिंग रिपोजिटरी और इंस्टॉलिंग Ansible - 30 सेकंड

यह तेज़ है, हमें बस इतना करना था

apt install ansible git
git clone https://github.com/cdelgehier/ansible-role-XtraDB-Cluster.git

इन्वेंट्री फ़ाइल तैयार करना - 1 मिनट 10 सेकंड

यह चरण भी बहुत सरल था, हमने दस्तावेज़ीकरण से उदाहरण का उपयोग करके एक इन्वेंट्री फ़ाइल बनाई। हमने अपने परिवेश में कॉन्फ़िगर किए गए नोड्स के IP पतों को अभी-अभी प्रतिस्थापित किया है।

प्लेबुक तैयार करना - 1 मिनट 45 सेकंड

हमने प्रलेखन से सबसे व्यापक उदाहरण का उपयोग करने का निर्णय लिया, जिसमें थोड़ा सा कॉन्फ़िगरेशन ट्यूनिंग भी शामिल है। हमने Ansible के लिए एक सही संरचना तैयार की है (दस्तावेज़ीकरण में ऐसी कोई जानकारी नहीं थी):

/root/pxcansible/
├── inventory
├── pxcplay.yml
└── roles
    └── ansible-role-XtraDB-Cluster

फिर हमने इसे चलाया लेकिन तुरंत हमें एक त्रुटि मिली:

[email protected]:~/pxcansible# ansible-playbook pxcplay.yml
 [WARNING]: provided hosts list is empty, only localhost is available

ERROR! no action detected in task

The error appears to have been in '/root/pxcansible/roles/ansible-role-XtraDB-Cluster/tasks/main.yml': line 28, column 3, but may
be elsewhere in the file depending on the exact syntax problem.

The offending line appears to be:


- name: "Include {{ ansible_distribution }} tasks"
  ^ here
We could be wrong, but this one looks like it might be an issue with
missing quotes.  Always quote template expression brackets when they
start a value. For instance:

    with_items:
      - {{ foo }}

Should be written as:

    with_items:
      - "{{ foo }}"

इसमें 1 मिनट 45 सेकंड का समय लगा।

प्लेबुक सिंटैक्स समस्या को ठीक करना - 3 मिनट 25 सेकंड

त्रुटि भ्रामक थी लेकिन अंगूठे का सामान्य नियम अधिक हाल के Ansible संस्करण का प्रयास करना है, जो हमने किया। हमने गुगल किया और Ansible वेबसाइट पर अच्छे निर्देश पाए। प्लेबुक चलाने का अगला प्रयास भी विफल रहा:

TASK [ansible-role-XtraDB-Cluster : Delete anonymous connections] *****************************************************************************************************************************************************************************************************************
fatal: [node2]: FAILED! => {"changed": false, "msg": "The PyMySQL (Python 2.7 and Python 3.X) or MySQL-python (Python 2.X) module is required."}
fatal: [node3]: FAILED! => {"changed": false, "msg": "The PyMySQL (Python 2.7 and Python 3.X) or MySQL-python (Python 2.X) module is required."}
fatal: [node1]: FAILED! => {"changed": false, "msg": "The PyMySQL (Python 2.7 and Python 3.X) or MySQL-python (Python 2.X) module is required."}

नया Ansible संस्करण सेट करना और प्लेबुक को इस त्रुटि तक चलाने में 3 मिनट 25 सेकंड का समय लगा।

गुम पायथन मॉड्यूल को ठीक करना - 3 मिनट 20 सेकंड

जाहिरा तौर पर, हमने जिस भूमिका का इस्तेमाल किया, उसने इसकी पूर्वापेक्षाओं का ध्यान नहीं रखा और गैलेरा क्लस्टर से जुड़ने और सुरक्षित करने के लिए एक पायथन मॉड्यूल गायब था। हमने पहले पाइप के माध्यम से MySQL-python को स्थापित करने का प्रयास किया लेकिन यह स्पष्ट हो गया कि इसमें अधिक समय लगेगा क्योंकि इसके लिए mysql_config की आवश्यकता है:

[email protected]:~# pip install MySQL-python
Collecting MySQL-python
  Downloading https://files.pythonhosted.org/packages/a5/e9/51b544da85a36a68debe7a7091f068d802fc515a3a202652828c73453cad/MySQL-python-1.2.5.zip (108kB)
    100% |████████████████████████████████| 112kB 278kB/s
    Complete output from command python setup.py egg_info:
    sh: 1: mysql_config: not found
    Traceback (most recent call last):
      File "<string>", line 1, in <module>
      File "/tmp/pip-build-zzwUtq/MySQL-python/setup.py", line 17, in <module>
        metadata, options = get_config()
      File "/tmp/pip-build-zzwUtq/MySQL-python/setup_posix.py", line 43, in get_config
        libs = mysql_config("libs_r")
      File "/tmp/pip-build-zzwUtq/MySQL-python/setup_posix.py", line 25, in mysql_config
        raise EnvironmentError("%s not found" % (mysql_config.path,))
    EnvironmentError: mysql_config not found

    ----------------------------------------
Command "python setup.py egg_info" failed with error code 1 in /tmp/pip-build-zzwUtq/MySQL-python/

यह MySQL विकास पुस्तकालयों द्वारा प्रदान किया गया है, इसलिए हमें उन्हें मैन्युअल रूप से स्थापित करना होगा, जो कि बहुत अधिक व्यर्थ था। हमने PyMySQL के साथ जाने का फैसला किया, जिसे स्थापित करने के लिए अन्य पैकेजों की आवश्यकता नहीं थी। यह हमें एक और मुद्दे पर ले आया:

TASK [ansible-role-XtraDB-Cluster : Delete anonymous connections] *****************************************************************************************************************************************************************************************************************
fatal: [node3]: FAILED! => {"changed": false, "msg": "unable to connect to database, check login_user and login_password are correct or /root/.my.cnf has the credentials. Exception message: (1698, u\"Access denied for user 'root'@'localhost'\")"}
fatal: [node2]: FAILED! => {"changed": false, "msg": "unable to connect to database, check login_user and login_password are correct or /root/.my.cnf has the credentials. Exception message: (1698, u\"Access denied for user 'root'@'localhost'\")"}
fatal: [node1]: FAILED! => {"changed": false, "msg": "unable to connect to database, check login_user and login_password are correct or /root/.my.cnf has the credentials. Exception message: (1698, u\"Access denied for user 'root'@'localhost'\")"}
    to retry, use: --limit @/root/pxcansible/pxcplay.retry

अब तक हमने 3 मिनट 20 सेकंड बिताए हैं।

"पहुंच से वंचित" त्रुटि को ठीक करना - 18 मिनट 55 सेकंड

त्रुटि के अनुसार, हमने सुनिश्चित किया कि MySQL कॉन्फिगरेशन सही तरीके से तैयार किया गया है और इसमें डेटाबेस से कनेक्ट करने के लिए सही यूजर और पासवर्ड शामिल है। यह, दुर्भाग्य से, अपेक्षा के अनुरूप काम नहीं किया। हमने आगे की जांच की और पाया कि भूमिका ने रूट उपयोगकर्ता को ठीक से नहीं बनाया, भले ही उसने चरण को पूर्ण के रूप में चिह्नित किया हो। हमने एक छोटी जांच की लेकिन प्लेबुक को डिबग करने की कोशिश करने के बजाय मैन्युअल रूप से ठीक करने का फैसला किया, जो हमारे द्वारा किए गए कदमों की तुलना में अधिक समय लेगा। हमने सही पासवर्ड के साथ मैन्युअल रूप से उपयोगकर्ता [email protected] और [email protected] बनाए हैं। इसने हमें इस चरण को पारित करने और दूसरी त्रुटि पर जाने की अनुमति दी:

TASK [ansible-role-XtraDB-Cluster : Start the master node] ************************************************************************************************************************************************************************************************************************
skipping: [node1]
skipping: [node2]
skipping: [node3]

TASK [ansible-role-XtraDB-Cluster : Start the master node] ************************************************************************************************************************************************************************************************************************
skipping: [node1]
skipping: [node2]
skipping: [node3]

TASK [ansible-role-XtraDB-Cluster : Create SST user] ******************************************************************************************************************************************************************************************************************************
skipping: [node1]
skipping: [node2]
skipping: [node3]

TASK [ansible-role-XtraDB-Cluster : Start the slave nodes] ************************************************************************************************************************************************************************************************************************
fatal: [node3]: FAILED! => {"changed": false, "msg": "Unable to start service mysql: Job for mysql.service failed because the control process exited with error code. See \"systemctl status mysql.service\" and \"journalctl -xe\" for details.\n"}
fatal: [node2]: FAILED! => {"changed": false, "msg": "Unable to start service mysql: Job for mysql.service failed because the control process exited with error code. See \"systemctl status mysql.service\" and \"journalctl -xe\" for details.\n"}
fatal: [node1]: FAILED! => {"changed": false, "msg": "Unable to start service mysql: Job for mysql.service failed because the control process exited with error code. See \"systemctl status mysql.service\" and \"journalctl -xe\" for details.\n"}
    to retry, use: --limit @/root/pxcansible/pxcplay.retry

इस खंड के लिए हमने 18 मिनट और 55 सेकंड बिताए।

“स्लेव नोड्स प्रारंभ करें” समस्या को ठीक करना (भाग 1) - 7 मिनट 40 सेकंड

हमने इस समस्या को हल करने के लिए कुछ चीजों की कोशिश की। हमने इसके नाम का उपयोग करके नोड निर्दिष्ट करने का प्रयास किया, हमने समूह के नाम बदलने की कोशिश की, कुछ भी समस्या हल नहीं हुई। हमने प्रलेखन में प्रदान की गई स्क्रिप्ट का उपयोग करके पर्यावरण को साफ करने और शुरुआत से शुरू करने का निर्णय लिया। इसने इसे साफ नहीं किया बल्कि चीजों को और भी खराब कर दिया। 7 मिनट और 40 सेकंड के बाद हमने वर्चुअल मशीनों को मिटाने, पर्यावरण को फिर से बनाने और नए सिरे से शुरू करने का फैसला किया, यह उम्मीद करते हुए कि जब हम पायथन निर्भरता जोड़ते हैं, तो यह हमारी समस्या का समाधान करेगा।

"स्लेव नोड प्रारंभ करें" समस्या को ठीक करना (भाग 2) - 13 मिनट 15 सेकंड

दुर्भाग्य से, पायथन पूर्वापेक्षाएँ स्थापित करने से बिल्कुल भी मदद नहीं मिली। हमने प्रक्रिया को मैन्युअल रूप से समाप्त करने का निर्णय लिया, पहले नोड को बूटस्ट्रैप किया और फिर एसएसटी उपयोगकर्ता को कॉन्फ़िगर किया और शेष दासों को शुरू किया। इसने "स्वचालित" सेटअप को पूरा किया और हमें डिबग करने में 13 मिनट और 15 सेकंड का समय लगा और फिर अंत में स्वीकार किया कि यह अपेक्षित प्लेबुक डिज़ाइनर की तरह काम नहीं करेगा।

आगे डिबगिंग - 10 मिनट 45 सेकंड

हम यहीं नहीं रुके और फैसला किया कि हम एक और कोशिश करेंगे। Ansible वेरिएबल्स पर भरोसा करने के बजाय हम सिर्फ एक नोड के IP को मास्टर नोड के रूप में रखते हैं। इससे समस्या का वह हिस्सा हल हो गया और हम समाप्त हो गए:

TASK [ansible-role-XtraDB-Cluster : Create SST user] ******************************************************************************************************************************************************************************************************************************
skipping: [node2]
skipping: [node3]
fatal: [node1]: FAILED! => {"changed": false, "msg": "unable to connect to database, check login_user and login_password are correct or /root/.my.cnf has the credentials. Exception message: (1045, u\"Access denied for user 'root'@'::1' (using password: YES)\")"}

यह हमारे प्रयासों का अंत था - हमने इस उपयोगकर्ता को जोड़ने का प्रयास किया लेकिन यह उत्तरदायी प्लेबुक के माध्यम से सही ढंग से काम नहीं करता था, जबकि हम MySQL क्लाइंट का उपयोग करते समय कनेक्ट करने के लिए IPv6 लोकलहोस्ट पते का उपयोग कर सकते थे।

कुल स्थापना समय - अज्ञात (स्वचालित स्थापना विफल)

कुल मिलाकर हमने 64 मिनट बिताए और हम अभी भी चीजों को अपने आप ठीक नहीं कर पाए हैं। शेष समस्याएं रूट पासवर्ड निर्माण हैं जो काम नहीं करती हैं और फिर गैलेरा क्लस्टर शुरू हो रही है (एसएसटी उपयोगकर्ता समस्या)। यह बताना मुश्किल है कि इसे और डिबग करने में कितना समय लगेगा। यह निश्चित रूप से संभव है - इसे मापना कठिन है क्योंकि यह वास्तव में Ansible और MySQL के अनुभव पर निर्भर करता है। यह निश्चित रूप से ऐसा कुछ नहीं है जिसे कोई भी केवल डाउनलोड, कॉन्फ़िगर और चला सकता है। खैर, शायद एक और प्लेबुक अलग तरह से काम करती? यह संभव है, लेकिन इसके परिणामस्वरूप विभिन्न समस्याएं भी हो सकती हैं। ठीक है, तो चढ़ाई करने और डिबगिंग करने के लिए सीखने की अवस्था है, लेकिन फिर, जब आप पूरी तरह से तैयार हो जाएंगे, तो आप बस एक स्क्रिप्ट चलाएंगे। खैर, यह सच है। जब तक अनुरक्षक द्वारा शुरू किए गए परिवर्तन उस चीज़ को नहीं तोड़ेंगे जिस पर आप निर्भर हैं या नया Ansible संस्करण प्लेबुक को तोड़ देगा या अनुरक्षक केवल परियोजना के बारे में भूल जाएगा और इसे विकसित करना बंद कर देगा (जिस भूमिका के लिए हमने उपयोग किया है वह काफी उपयोगी पुल अनुरोध प्रतीक्षा कर रहा है पहले से ही लगभग एक वर्ष के लिए, जो पाइथन निर्भरता मुद्दे को हल करने में सक्षम हो सकता है - इसे विलय नहीं किया गया है)। जब तक आप स्वीकार नहीं करते कि आपको इस कोड को बनाए रखना होगा, आप वास्तव में इस पर भरोसा नहीं कर सकते कि यह 100% सटीक है और आपके वातावरण में काम कर रहा है, विशेष रूप से यह देखते हुए कि मूल डेवलपर के पास कोड को अद्यतित रखने के लिए कोई प्रोत्साहन नहीं है। इसके अलावा, अन्य संस्करणों के बारे में क्या? आप इस विशेष प्लेबुक का उपयोग पीएक्ससी 5.6 या किसी मारियाडीबी संस्करण को स्थापित करने के लिए नहीं कर सकते। निश्चित रूप से, आप अन्य प्लेबुक पा सकते हैं। क्या वे बेहतर काम करेंगे या हो सकता है कि आप उन्हें काम पर लाने के लिए घंटों का एक और गुच्छा खर्च करेंगे?

आपके संपूर्ण डेटाबेस इन्फ्रास्ट्रक्चर के लिए ClusterControlSingle कंसोल पता करें कि ClusterControl में और क्या नया है, ClusterControl को निःशुल्क स्थापित करें

ClusterControl

अंत में, आइए देखें कि Percona XtraDB क्लस्टर को परिनियोजित करने के लिए ClusterControl का उपयोग कैसे किया जा सकता है।

SSH कनेक्टिविटी को कॉन्फ़िगर करना - 1 मिनट

ClusterControl को कनेक्ट करने और कॉन्फ़िगर करने के लिए सभी नोड्स में SSH कनेक्टिविटी की आवश्यकता होती है। हमने एक SSH कुंजी जेनरेट की और इसे मैन्युअल रूप से सभी नोड्स में वितरित किया।

ClusterControl सेट करना - 3 मिनट 15 सेकंड

त्वरित खोज "ClusterControl install" ने हमें प्रासंगिक ClusterControl दस्तावेज़ीकरण पृष्ठ पर इंगित किया। हम "ClusterControl स्थापित करने का एक आसान तरीका" ढूंढ रहे थे इसलिए हमने लिंक का अनुसरण किया और निम्नलिखित निर्देश पाए।

स्क्रिप्ट को डाउनलोड करने और इसे चलाने में 3 मिनट 15 सेकंड का समय लगा, इंस्टॉलेशन के आगे बढ़ने पर हमें कुछ कार्रवाई करनी पड़ी, इसलिए यह अनअटेंडेड इंस्टॉलेशन नहीं है।

यूआई में लॉग इन करना और परिनियोजन प्रारंभ - 1 मिनट 10 सेकंड

हमने अपने ब्राउज़र को ClusterControl नोड के IP की ओर इंगित किया है।

हमने आवश्यक संपर्क जानकारी पास की और हमें स्वागत स्क्रीन के साथ प्रस्तुत किया गया:

अगला चरण - हमने परिनियोजन विकल्प चुना है।

हमें SSH कनेक्टिविटी विवरण पास करना था।

हमने उपयोग करने के लिए विक्रेता, संस्करण, पासवर्ड और होस्ट पर भी निर्णय लिया। इस पूरी प्रक्रिया में 1 मिनट 10 सेकंड का समय लगा।

Percona XtraDB क्लस्टर परिनियोजन - 12 मिनट 5 सेकंड

केवल एक चीज बची थी, वह थी परिनियोजन समाप्त करने के लिए ClusterControl की प्रतीक्षा करना। 12 मिनट और 5 सेकंड के बाद क्लस्टर तैयार हो गया:

कुल स्थापना समय - 17 मिनट 30 सेकंड

संबंधित संसाधन MySQL के लिए क्लस्टरकंट्रोल मारियाडीबी के लिए क्लस्टरकंट्रोल गैलेरा क्लस्टर के लिए क्लस्टरकंट्रोल

हम 17 मिनट और 30 सेकंड में ClusterControl का उपयोग करके ClusterControl और फिर PXC क्लस्टर को तैनात करने में कामयाब रहे। PXC परिनियोजन में 12 मिनट और 5 सेकंड का समय लगा . अंत में हमारे पास एक कार्यशील क्लस्टर है, जिसे सर्वोत्तम प्रथाओं के अनुसार तैनात किया गया है। ClusterControl यह भी सुनिश्चित करता है कि क्लस्टर का कॉन्फ़िगरेशन समझ में आता है। संक्षेप में, भले ही आप वास्तव में MySQL या गैलेरा क्लस्टर के बारे में कुछ भी नहीं जानते हों, आप कुछ ही मिनटों में उत्पादन के लिए तैयार क्लस्टर तैयार कर सकते हैं। ClusterControl केवल एक परिनियोजन उपकरण नहीं है, यह प्रबंधन प्लेटफ़ॉर्म भी है - प्रदर्शन समस्याओं (सलाहकारों के माध्यम से) की पहचान करने के लिए MySQL और Galera के साथ अनुभव नहीं किए गए लोगों के लिए चीजों को और भी आसान बनाता है (क्लस्टर को ऊपर और नीचे स्केल करना, बैकअप चलाना, बनाना) गैलेरा के अतुल्यकालिक दास)। क्या महत्वपूर्ण है, ClusterControl को हमेशा बनाए रखा जाएगा और इसका उपयोग सभी MySQL फ्लेवर को तैनात करने के लिए किया जा सकता है (और न केवल MySQL/MariaDB, यह TimeScaleDB, PostgreSQL और MongoDB का भी समर्थन करता है)। इसने लीक से हटकर भी काम किया, कुछ ऐसा जो हमारे द्वारा परीक्षण किए गए अन्य तरीकों के बारे में नहीं कहा जा सकता है।

यदि आप इसका अनुभव करना चाहते हैं, तो आप ClusterControl को निःशुल्क डाउनलोड कर सकते हैं। हमें बताएं कि आपको यह कैसा लगा।


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

  2. रिले नोड का उपयोग करके MySQL गैलेरा क्लस्टर के साथ शून्य डाउनटाइम नेटवर्क माइग्रेशन

  3. CentOS के लिए मारियाडीबी क्लस्टर ऑफ़लाइन स्थापना

  4. मारियाडीबी दिनांक और समय इकाइयाँ

  5. प्रॉक्सीएसक्यूएल और एडब्ल्यूएस ऑरोरा के साथ डेटाबेस लोड संतुलन