RHEL, Rocky और AlmaLinux में MySQL प्रतिकृति को कैसे सेटअप करें?


डेटा प्रतिकृति डेटा उपलब्धता में सुधार और किसी एप्लिकेशन की विश्वसनीयता और प्रदर्शन को बढ़ाने के लिए आपके डेटा को कई सर्वरों पर कॉपी करने की प्रक्रिया है। MySQL प्रतिकृति में, डेटा की निरंतरता सुनिश्चित करने के लिए और बैकअप और अतिरेक प्रदान करने के लिए डेटा को वास्तविक समय में मास्टर सर्वर से डेटाबेस से अन्य नोड्स में कॉपी किया जाता है।

इस गाइड में, हम प्रदर्शित करते हैं कि आप आरएचईएल-आधारित वितरण जैसे सेंटोस, फेडोरा, रॉकी लिनक्स और अल्मालिनक्स में MySQL (मास्टर-स्लेव) प्रतिकृति कैसे सेट कर सकते हैं।

तो, यहाँ हमारा MySQL प्रतिकृति लैब सेटअप है।

MySQL Master - 10.128.0.14
MySQL Slave - 10.128.15.211

आएँ शुरू करें…

चरण 1: मास्टर और स्लेव सर्वर पर MySQL स्थापित करें

हम मास्टर और स्लेव सर्वर दोनों पर MySQL डेटाबेस स्थापित करके शुरू करेंगे।

$ sudo dnf install @mysql

एक बार इंस्टॉलेशन पूरा हो जाने के बाद, डेटाबेस सर्वर को शुरू करने के लिए एक बिंदु बनाएं।

$ sudo systemctl start mysqld

फिर इसे सिस्टम स्टार्टअप या रिबूट पर शुरू करने के लिए सक्षम करें।

$ sudo systemctl enable mysqld

इसके बाद, पुष्टि करें कि MySQL डेटाबेस सर्वर दिखाए गए अनुसार चल रहा है:

$ sudo systemctl status mysqld

चरण 2: मास्टर और स्लेव सर्वर पर MySQL को सुरक्षित करें

अगला कदम मास्टर और स्लेव सर्वर दोनों पर MySQL डेटाबेस को सुरक्षित करना है। ऐसा इसलिए है क्योंकि डिफ़ॉल्ट सेटिंग्स असुरक्षित हैं और कुछ खामियां पेश करती हैं जिनका आसानी से हैकर्स द्वारा फायदा उठाया जा सकता है।

तो, MySQL को सख्त करने के लिए, कमांड चलाएँ:

$ sudo mysql_secure_installation

सबसे पहले, आपको MySQL रूट पासवर्ड सेट करना होगा। एक मजबूत रूट पासवर्ड प्रदान करना सुनिश्चित करें, अधिमानतः 8 से अधिक वर्णों के साथ जो अपरकेस, लोअरकेस, विशेष और संख्यात्मक वर्णों का मिश्रण हैं।

शेष संकेतों के लिए, डेटाबेस सर्वर को अनुशंसित सेटिंग्स में बदलने के लिए Y टाइप करें।

एक बार जब आप मास्टर और स्लेव नोड पर MySQL को स्थापित और सख्त करना समाप्त कर लेते हैं, तो अगला मास्टर नोड को कॉन्फ़िगर करना है।

चरण 3: मास्टर नोड (सर्वर) को कॉन्फ़िगर करें

अगला कदम मास्टर नोड को कॉन्फ़िगर करना और दास नोड को उस तक पहुंच प्रदान करना है। सबसे पहले, हमें mysql-server.cnf कॉन्फ़िगरेशन फ़ाइल को संपादित करने की आवश्यकता है।

$ sudo vim /etc/my.cnf.d/mysql-server.cnf

[mysqld] अनुभाग के अंतर्गत निम्न पंक्तियाँ जोड़ें।

bind-address	 = 10.128.0.14
server-id 	 = 1
log_bin		 = mysql-bin

एक बार हो जाने के बाद, परिवर्तनों को सहेजें और बाहर निकलें। फिर MySQL सर्वर को पुनरारंभ करें।

$ sudo sysemctl restart mysqld

इसके बाद, MySQL शेल में लॉग इन करें।

$ sudo mysql -u root -p

डेटाबेस उपयोगकर्ता बनाने के लिए निम्न कमांड निष्पादित करें जिसका उपयोग प्रतिकृति के लिए मास्टर और दास को बाध्य करने के लिए किया जाएगा।

mysql> CREATE USER 'replica'@'10.128.15.211' IDENTIFIED BY '[email ';
mysql> GRANT REPLICATION SLAVE ON *.*TO 'replica'@'10.128.15.211';

परिवर्तन लागू करें और MySQL सर्वर से बाहर निकलें।

mysql> FLUSH PRIVILEGES;
mysql> EXIT;

मास्टर की स्थिति सत्यापित करें।

mysql> SHOW MASTER STATUS\G

फ़ाइल नाम और स्थिति पर ध्यान दें। प्रतिकृति के लिए दास की स्थापना करते समय आपको बाद में इसकी आवश्यकता होगी। हमारे मामले में, हमारे पास फ़ाइल नाम mysql-bin.000001 और स्थिति 1232 है।

चरण 4: स्लेव नोड (सर्वर) को कॉन्फ़िगर करें

अब, स्लेव नोड पर वापस जाएँ। एक बार फिर, mysql-server.cnf कॉन्फ़िगरेशन फ़ाइल को संपादित करें।

$ sudo vim /etc/my.cnf.d/mysql-server.cnf

पहले की तरह, इन पंक्तियों को [mysqld] अनुभाग के अंतर्गत चिपकाएं। दास के आईपी के अनुरूप आईपी पता बदलें। साथ ही, एक अलग सर्वर-आईडी असाइन करें। यहां हमने इसे 2 का मान दिया है।

bind-address	 = 10.128.15.211
server-id	 = 2
log_bin 	 = mysql-bin

परिवर्तनों को सहेजें और फ़ाइल से बाहर निकलें। फिर डेटाबेस सर्वर को पुनरारंभ करें।

$ sudo systemctl restart mysqld

मास्टर नोड से दोहराने के लिए स्लेव नोड को कॉन्फ़िगर करने के लिए, स्लेव के MySQL सर्वर में लॉग इन करें।

$ sudo mysql -u root -p

सबसे पहले और सबसे महत्वपूर्ण, प्रतिकृति धागे को रोकें:

mysql> STOP SLAVE;

फिर मास्टर से डेटाबेस को दोहराने के लिए दास नोड को कॉन्फ़िगर करने के लिए निम्न आदेश निष्पादित करें।

mysql> CHANGE MASTER TO
     MASTER_HOST='10.128.0.14' ,
     MASTER_USER='replica' ,
     MASTER_PASSWORD='[email ' ,
     MASTER_LOG_FILE='mysql-bin.000001' ,
     MASTER_LOG_POS=1232;

ध्यान दें कि MASTER_LOG_FILE और MASTER_LOG_POS फ़्लैग चरण 1 के अंत में मास्टर नोड से फ़ाइल और स्थिति मानों के अनुरूप हैं।

MASTER_HOST, MASTER_USER, और MASTER_PASSWORD क्रमशः मास्टर आईपी पते, प्रतिकृति उपयोगकर्ता और प्रतिकृति उपयोगकर्ता के पासवर्ड से मेल खाते हैं।

फिर दास प्रतिकृति धागे शुरू करें:

mysql> START SLAVE;

चरण 4: MySQL मास्टर-स्लेव प्रतिकृति का परीक्षण

अब, यह जांचने के लिए कि क्या मास्टर और स्लेव नोड के बीच प्रतिकृति काम कर रही है, मास्टर नोड पर MySQL डेटाबेस सर्वर में लॉग इन करें:

$ sudo mysql -u root -p

एक परीक्षण डेटाबेस बनाएँ। यहां, हमारे परीक्षण डेटाबेस को प्रतिकृति_डीबी कहा जाता है।

mysql> CREATE DATABASE replication_db;
Verify the existence of the database.
mysql> SHOW DATABASES;

अब, स्लेव नोड पर जाएं, MySQL सर्वर में लॉग इन करें और पुष्टि करें कि प्रतिकृति_डीबी डेटाबेस मौजूद है। नीचे दिए गए आउटपुट से, हम देख सकते हैं कि डेटाबेस मौजूद है। यह पुष्टि करता है कि प्रतिकृति मास्टर से दास नोड तक हुई है।

mysql> SHOW DATABASES;

और बस इतना ही, हमने सफलतापूर्वक प्रदर्शित किया है कि आप एक MySQL मास्टर-स्लेव प्रतिकृति मॉडल कैसे सेट कर सकते हैं जो डेटाबेस को मास्टर नोड से स्लेव नोड तक दोहरा सकता है।