Percona XtraDB क्लस्टर 8.0, MySQL 8.0 के लिए Percona सर्वर पर आधारित है, जो Galera राइटसेट प्रतिकृति API और Galera प्रतिकृति लाइब्रेरी के साथ एम्बेडेड है, MySQL-आधारित डेटाबेस सर्वर के लिए एक अत्यधिक उपलब्ध मल्टी-मास्टर प्रतिकृति बनाने के लिए। Percona XtraDB क्लस्टर XtraDB स्टोरेज इंजन (InnoDB का एक ड्रॉप-इन रिप्लेसमेंट) के साथ आता है और इस बिल्ड के लिए कुछ अतिरिक्त चर और विशिष्ट स्थिति के साथ, Oracle MySQL रिलीज़ का बहुत बारीकी से अनुसरण करता है (इसमें सभी बग फिक्स सहित)।>
इस ब्लॉग पोस्ट में, हम यह देखने जा रहे हैं कि मैन्युअल और स्वचालित तरीके से उच्च उपलब्धता के लिए Percona XtraDB क्लस्टर 8.0 को कैसे परिनियोजित किया जाए।
उल्लेखनीय विशेषताएं
इससे पहले कि हम परिनियोजन चरणों के साथ आगे बढ़ें, यह इस प्रमुख संस्करण में उल्लेखनीय विशेषताओं और महत्वपूर्ण सुधारों का उल्लेख करने योग्य है जो MySQL 8.0 (समूह प्रतिकृति प्लगइन के बिना) और गैलेरा 4 के लिए Percona सर्वर पर आधारित है:
- स्ट्रीमिंग प्रतिकृति - यह छोटे, अधिक प्रबंधनीय टुकड़ों में बड़े डेटा लेनदेन को संसाधित करने के लिए राइटसेट प्रतिकृति की अनुमति देता है, डेटा संघर्ष को कम करता है।
- सिंक्रनाइज़ेशन MySQL क्रिया समन्वय के लिए कार्य करता है (wsrep_last_seen_gtid, wsrep_last_write_gtid, wsrep_sync_wait_upto_gtid)।
- नई गैलेरा सिस्टम टेबल, जो "mysql" स्कीमा के तहत क्लस्टर की स्थिति की निगरानी करने में मदद करेगी - wsrep_cluster, wsrep_cluster_members और wsrep_streaming_log।
- Gcache एन्क्रिप्शन.
- गैलेरा 4 का wsrep इंफ्रास्ट्रक्चर गैलेरा 3 की तुलना में अधिक मजबूत है। इसमें बेहतर स्टेट हैंडलिंग, बेहतर प्रेडिक्टेबलिटी और एरर हैंडलिंग के साथ कोड का तेजी से निष्पादन होता है।
परिवर्तनों की पूरी सूची के लिए, रिलीज़ नोट देखें।
Percona XtraDB क्लस्टर 8.0 का मैन्युअल परिनियोजन
स्थापना चरण
Percona XtraDB क्लस्टर के लिए, हमें कम से कम तीन नोड्स चाहिए:
- db1 (192.168.20.61)
- db2 (192.168.20.62)
- db3 (192.168.20.63)
इस खंड में वर्णित चरणों को CentOS 8 पर चलने वाले सभी डेटाबेस नोड्स (db1, db2 और db3) पर किया जाना चाहिए। सबसे पहले, SELinux को अक्षम करें (अन्यथा IST प्रक्रिया विफल हो जाएगी):
$ setenforce 0
$ sed -i 's/^SELINUX=.*/SELINUX=disabled/g' /etc/sysconfig/selinux
पेरकोना रिपोजिटरी पैकेज स्थापित करें:
$ yum -y install https://repo.percona.com/yum/percona-release-latest.noarch.rpm
इस बिंदु पर नवीनतम स्थिर संस्करण Percona XtraDB क्लस्टर 8.0 है, लेकिन डिफ़ॉल्ट रूप से, रिपॉजिटरी पैकेज संस्करण 5.7 तक कॉन्फ़िगर किया गया है। पेरकोना-रिलीज़ पैकेज में एक स्क्रिप्ट है जो नए उत्पादों के लिए अतिरिक्त रिपॉजिटरी को सक्षम कर सकती है। आइए उस स्क्रिप्ट को चलाते हैं और pxc80 विशिष्ट रिपॉजिटरी को सक्षम करते हैं:
$ percona-release setup pxc80
* Disabling all Percona Repositories
On RedHat 8 systems it is needed to disable dnf mysql module to install Percona-Server
Do you want to disable it? [y/N]
mysql DNF मॉड्यूल को अक्षम करने के लिए "y" चुनें। MySQL-संबंधित पैकेजों के लिए Percona रिपॉजिटरी को प्राथमिकता देने के लिए यह आवश्यक है।
फिर, नवीनतम Percona XtraDB क्लस्टर और Percona Xtrabackup स्थापित करें:
$ dnf -y install percona-xtradb-cluster percona-xtrabackup-80
इस समय, आपको एक Percona XtraDB क्लस्टर 8.0.0-11.3 स्थापित करवाना चाहिए। सभी निर्भरता पैकेज साझा-संगत, साझा और क्लाइंट पैकेज की तरह स्थापित किए जाएंगे। फिर हम प्रारंभिक कॉन्फ़िगरेशन के लिए MySQL सेवा शुरू कर सकते हैं:
$ systemctl start mysql
पहले स्टार्टअप के दौरान एक नया रूट पासवर्ड जेनरेट होगा। हमें पहले रूट पासवर्ड जानकारी को MySQL त्रुटि लॉग से प्राप्त करने की आवश्यकता है (RHEL-आधारित सिस्टम में डिफ़ॉल्ट /var/log/mysqld.log है):
$ cat /var/log/mysqld.log | grep 'temporary password'
2020-11-27T06:53:05.929661Z 6 [Note] [MY-010454] [Server] A temporary password is generated for [email protected]: <eqo+jXNw2lk
जैसा कि आप देख सकते हैं कि जनरेट किया गया पासवर्ड "
उत्पन्न रूट पासवर्ड पहले रूट लॉगिन पर तुरंत समाप्त हो जाएगा। उपरोक्त सहायक स्क्रिप्ट हमें एक नया MySQL रूट पासवर्ड कॉन्फ़िगर करने, पासवर्ड सत्यापन नीति सेट करने, रूट के लिए दूरस्थ लॉगिन अक्षम करने, परीक्षण डेटाबेस और अनाम उपयोगकर्ताओं को हटाने और विशेषाधिकार तालिका को पुनः लोड करने में मदद करती है।
डिफ़ॉल्ट कॉन्फ़िगरेशन फ़ाइल (/etc/my.cnf) को एक खाली gcomm:// कनेक्शन स्ट्रिंग के साथ wsrep_cluster_address चर के तहत कॉन्फ़िगर किया गया है, जैसा कि नीचे दिखाया गया है: उपरोक्त पंक्ति को क्लस्टर में भाग लेने वाले सभी नोड्स के आईपी पते की सूची के साथ सेट किया जाना चाहिए। यदि आप इस चरण से चूक गए हैं, तो प्रत्येक नोड पर सेवा शुरू होने के बाद प्रत्येक नोड (3 अलग 1-नोड क्लस्टर) पर एक नया गैलेरा क्लस्टर बनाया जाएगा। इसलिए, [mysqld] अनुभाग के तहत निम्नलिखित पंक्तियों को तदनुसार संशोधित किया जाना चाहिए: सभी डेटाबेस होस्ट में wsrep_cluster_address के समान होने की अपेक्षा करें, जबकि wsrep_node_address और wsrep_node_name प्रत्येक डेटाबेस होस्ट पर अलग-अलग होने चाहिए। अंतिम पंक्ति pxc-encrypt-cluster-traffic=OFF का अर्थ है कि हम क्लस्टर ट्रैफ़िक के लिए एन्क्रिप्शन को अक्षम करना चाहते हैं। ध्यान दें कि यह जानबूझकर हमारे परिनियोजन चरणों को सरल बनाने के लिए है, या अन्यथा हमें कुंजी/प्रमाणित प्रबंधन चरणों का पालन करना होगा। यदि आप एन्क्रिप्शन सक्षम करना चाहते हैं, तो यह लेख देखें।
क्लस्टर बूटस्ट्रैप करने के लिए आगे बढ़ने से पहले शेष डेटाबेस नोड्स के लिए उपरोक्त चरणों को दोहराएं।
गैलेरा के लिए आवश्यक है कि शेष नोड्स क्लस्टर में शामिल होने और बनाने में सक्षम होने से पहले आपको एक क्लस्टर में एक संदर्भ बिंदु के रूप में एक नोड शुरू करना होगा। इस प्रक्रिया को क्लस्टर बूटस्ट्रैप के रूप में जाना जाता है। बूटस्ट्रैपिंग डेटाबेस नोड को प्राथमिक घटक के रूप में पेश करने का एक प्रारंभिक चरण है, इससे पहले कि अन्य इसे डेटा सिंक करने के लिए संदर्भ बिंदु के रूप में देखें।
इस उदाहरण में, हम db1 को संदर्भ नोड के रूप में उपयोग करने जा रहे हैं और इसे बूटस्ट्रैप कमांड से शुरू करते हैं (आप अन्य नोड्स भी चुन सकते हैं क्योंकि यह एक नया क्लस्टर है जिसमें कोई डेटा नहीं है): एक बार शुरू करने के बाद, हम अन्य नोड्स (db2 और db3) को मानक स्टार्ट कमांड (एक समय में एक नोड) के साथ शुरू कर सकते हैं: आप /var/log/mysqld.log के अंदर निम्न पंक्ति से सत्यापित कर सकते हैं: इस बिंदु पर, हमारी Percona XtraDB क्लस्टर सेवा शुरू हो गई है और मैन्युअल परिनियोजन अब पूरा हो गया है। Percona XtraDB क्लस्टर बूटस्ट्रैपिंग प्रक्रिया के बारे में अधिक जानकारी के लिए, इस ब्लॉग पोस्ट को देखें कि MySQL या MariaDB गैलेरा क्लस्टर को कैसे बूटस्ट्रैप करें।
ClusterControl का उपयोग करके आप Percona XtraDB Cluster 8.0 को दो तरीकों से परिनियोजित कर सकते हैं। आप ClusterControl UI (वेब-आधारित GUI) या ClusterControl CLI का उपयोग कर सकते हैं जिसे s9s कहा जाता है। हम आपको इस खंड में दोनों तरीके दिखाएंगे। ClusterControl को आपके डेटाबेस क्लस्टर से दूर एक अलग होस्ट पर रहना चाहिए। इसलिए, हमारी वास्तुकला को इस तरह चित्रित किया जा सकता है:
SSH को ClusterControl सर्वर में डालें और निम्नलिखित कमांड के साथ ClusterControl स्थापित करें: इंस्टॉलेशन विजार्ड को तब तक फॉलो करें जब तक कि इंस्टॉलेशन खत्म न हो जाए। स्थापना पूर्ण होने के बाद, वेब ब्राउज़र खोलें और http://192.168.20.19/clustercontrol पर जाएं। एक व्यवस्थापक उपयोगकर्ता बनाएं और लाइसेंस स्वचालित रूप से स्थापित हो जाएगा। सभी नए इंस्टॉलेशन 30 दिनों के लिए एंटरप्राइज़ संस्करण के लिए परीक्षण लाइसेंस के साथ आते हैं। एक बार जब यह परीक्षण लाइसेंस समाप्त हो जाता है, तो यह समुदाय संस्करण में डिफ़ॉल्ट रूप से वापस आ जाएगा जो हमेशा के लिए मुफ़्त है।
ClusterControl को ClusterControl सर्वर से सभी प्रबंधित नोड्स में पासवर्ड रहित SSH सेट करने की आवश्यकता है। इसे प्राप्त करने के लिए, हमें पहले ClusterControl सर्वर पर एक SSH कुंजी उत्पन्न करनी होगी। SSH उपयोगकर्ता के पास एक सुपर-उपयोगकर्ता विशेषाधिकार (sudo या root) होना चाहिए। इस मामले में, हम रूट उपयोगकर्ता का उपयोग करने जा रहे हैं: अब उपयोगकर्ता रूट के लिए एक SSH कुंजी जेनरेट करें: अगला, सार्वजनिक कुंजी को उन सभी डेटाबेस नोड्स में कॉपी करें जिन्हें हम तैनात और प्रबंधित करने जा रहे हैं। इस मामले में, सभी 3 गैलेरा नोड्स: संकेत दिए जाने पर संबंधित होस्ट का रूट पासवर्ड दर्ज करें।
निम्नलिखित कमांड के साथ इसका परीक्षण करें और सुनिश्चित करें कि आपको सही प्रतिक्रिया मिले: अब हम ClusterControl UI या CLI का उपयोग करके अपने क्लस्टर को परिनियोजित करने के लिए तैयार हैं, जैसा कि अगले अनुभागों में दिखाया गया है।
ClusterControl के साथ Percona XtraDB क्लस्टर को तैनात करना व्यावहारिक रूप से आसान है, और डिफ़ॉल्ट रूप से, ClusterControl क्लस्टर को गैलेरा एन्क्रिप्शन सक्षम के साथ कॉन्फ़िगर करेगा। पासवर्ड रहित SSH को कॉन्फ़िगर करने के बाद, ClusterControl -> Deploy -> MySQL Galera पर जाएं और नीचे दिए गए आवश्यक विवरण निर्दिष्ट करें: फिर, अगले चरण पर जाने के लिए "जारी रखें" पर क्लिक करें जहां हम कॉन्फ़िगर करते हैं MySQL विनिर्देश: वेंडर के लिए "पेरकोना" और संस्करण के रूप में 8.0 चुनें। बाकी को डिफ़ॉल्ट के रूप में रखें और MySQL रूट पासवर्ड दर्ज करें। डेटाबेस होस्ट का IP पता या होस्टनाम एक-एक करके निर्दिष्ट करें और सुनिश्चित करें कि आपको प्रत्येक प्रविष्टि के बाद हरे रंग का टिक आइकन मिलता है। यह इंगित करता है कि ClusterControl प्रदान किए गए SSH उपयोगकर्ता और चरण 1 में परिभाषित कुंजी के साथ पासवर्ड रहित SSH के माध्यम से संबंधित होस्ट तक पहुंचने में सक्षम है। परिनियोजन प्रारंभ करने के लिए "तैनाती" बटन पर क्लिक करें।
ClusterControl फिर एक परिनियोजन कार्य को ट्रिगर करता है जहाँ आप ClusterControl पर जाकर परिनियोजन प्रगति की निगरानी कर सकते हैं -> गतिविधि -> नौकरियां -> क्लस्टर बनाएँ -> पूर्ण कार्य विवरण, जैसा कि निम्नलिखित स्क्रीनशॉट में दिखाया गया है: एक बार प्रक्रिया पूरी हो जाने के बाद, आप देखेंगे कि क्लस्टर डैशबोर्ड में सूचीबद्ध है : बस। परिनियोजन अब पूर्ण हो गया है।
यदि आप कमांड-लाइन का उपयोग करके क्लस्टर को तैनात करना पसंद करते हैं, तो हम बस "s9s" नामक ClusterControl कमांड-लाइन क्लाइंट टूल का उपयोग कर सकते हैं। यह उपकरण ClusterControl नियंत्रक को एक परिनियोजन कार्य भेजेगा और यह क्लस्टर को परिनियोजित करने के लिए सभी आवश्यक कदम उठाएगा।
ClusterControl सर्वर पर निम्न कमांड चलाएँ:
आप देखेंगे कि नौकरी के संदेश दिखाई देंगे और आप वहां तैनाती की प्रगति की निगरानी कर सकते हैं और आप ClusterControl UI -> गतिविधि -> नौकरियां से नौकरी की प्रगति की निगरानी भी कर सकते हैं। . 15-20 मिनट तक प्रतीक्षा करें (इंटरनेट कनेक्शन के आधार पर) जब तक आप कार्य पूर्ण होने की सूचना नहीं देखते। हमारा Percona XtraDB क्लस्टर 8.0 अब परिनियोजित है और आप इसे ClusterControl UI में सूचीबद्ध देख सकते हैं।$ mysql_secure_installation
Securing the MySQL server deployment.
Enter password for user root:
The existing password for the user account root has expired. Please set a new password.
New password:
Re-enter new password:
VALIDATE PASSWORD COMPONENT can be used to test passwords
and improve security. It checks the strength of password
and allows the users to set only those passwords which are
secure enough. Would you like to setup VALIDATE PASSWORD component?
Press y|Y for Yes, any other key for No: y
There are three levels of password validation policy:
LOW Length >= 8
MEDIUM Length >= 8, numeric, mixed case, and special characters
STRONG Length >= 8, numeric, mixed case, special characters and dictionary file
Please enter 0 = LOW, 1 = MEDIUM and 2 = STRONG: 2
Using existing password for root.
Estimated strength of the password: 100
Change the password for root ? ((Press y|Y for Yes, any other key for No) : y
New password:
Re-enter new password:
Estimated strength of the password: 100
Do you wish to continue with the password provided?(Press y|Y for Yes, any other key for No) : y
By default, a MySQL installation has an anonymous user,
allowing anyone to log into MySQL without having to have
a user account created for them. This is intended only for
testing, and to make the installation go a bit smoother.
You should remove them before moving into a production
environment.
Remove anonymous users? (Press y|Y for Yes, any other key for No) : y
Success.
Normally, root should only be allowed to connect from
'localhost'. This ensures that someone cannot guess at
the root password from the network.
Disallow root login remotely? (Press y|Y for Yes, any other key for No) : y
Success.
By default, MySQL comes with a database named 'test' that
anyone can access. This is also intended only for testing,
and should be removed before moving into a production
environment.
Remove test database and access to it? (Press y|Y for Yes, any other key for No) : y
- Dropping test database...
Success.
- Removing privileges on test database...
Success.
Reloading the privilege tables will ensure that all changes
made so far will take effect immediately.
Reload privilege tables now? (Press y|Y for Yes, any other key for No) : y
Success.
All done!
wsrep_cluster_address=gcomm://
wsrep_cluster_address=gcomm://192.168.20.51,192.168.20.52,192.168.20.53
wsrep_node_address=192.168.20.51 # IP address of this DB host
wsrep_node_name=db1 # any name to identify this DB host
pxc-encrypt-cluster-traffic=OFF
क्लस्टर बूटस्ट्रैपिंग
$ systemctl stop mysql
$ systemctl start [email protected]
$ systemctl status [email protected]
$ systemctl stop mysql
$ systemctl start mysql
2020-11-27T08:09:01.964152Z 2 [Note] [MY-000000] [WSREP] Synchronized with group, ready for connections
ClusterControl के साथ स्वचालित परिनियोजन
ClusterControl स्थापित करना
$ wget http://severalnines.com/downloads/cmon/install-cc
$ chmod 744 install-cc
$ ./install-cc
पासवर्ड रहित SSH
$ whoami
root
$ ssh-keygen -t rsa # press Enter on all prompts
$ ssh-copy-id [email protected]
$ ssh-copy-id [email protected]
$ ssh-copy-id [email protected]
$ ssh [email protected] "ls /root"
ClusterControl UI का उपयोग करके PXC परिनियोजन
ClusterControl CLI का उपयोग करके PXC परिनियोजन
$ s9s cluster --create \
--cluster-type=galera \
--nodes="192.168.20.51;192.168.20.52;192.168.20.53" \
--vendor=percona \
--provider-version=8.0 \
--db-admin-passwd='P4ssw0rdSecr3t' \
--os-user=root \
--os-key-file=/root/.ssh/id_rsa \
--cluster-name='My Percona XtraDB Cluster 8.0' \
--log