<टेम्पलेट x-if=visible><टेम्पलेट x-if=$isMobile()> <टेम्पलेट x-if=!$isMobile()> <टेम्पलेट x-if=खुला>टेम्पलेट> टेम्पलेट>
MySQL मास्टर-मास्टर प्रतिकृति क्या है?
MySQL मास्टर-मास्टर प्रतिकृति सक्रिय वेबसाइटों के लिए गति और अतिरेक जोड़ता है। प्रतिकृति के साथ, दो अलग MySQL सर्वर क्लस्टर के रूप में कार्य करते हैं। डेटाबेस क्लस्टरिंग उच्च उपलब्धता वेबसाइट कॉन्फ़िगरेशन के लिए विशेष रूप से उपयोगी है। डेटाबेस प्रतिकृति को कॉन्फ़िगर करने के लिए दो अलग-अलग लाइनोड का उपयोग करें, प्रत्येक निजी IPv4 पतों के साथ।
ध्यान देंयह मार्गदर्शिका गैर-रूट उपयोक्ता के लिए लिखी गई है। जिन आदेशों के लिए उन्नत विशेषाधिकारों की आवश्यकता होती है, उनके आगे
sudo
. लगा होता है . अगर आपsudo
. से परिचित नहीं हैं आदेश, आप हमारे उपयोगकर्ता और समूह मार्गदर्शिका देख सकते हैं।यह गाइड डेबियन 9, उबंटू 18.04 और उबंटू 20.04 के लिए लिखा गया है।
यदि आप सुनिश्चित नहीं हैं कि नीचे दिए गए चरणों का पालन करते हुए आपके सिस्टम पर MySQL का कौन सा संस्करण स्थापित किया गया है, तो निम्न कमांड दर्ज करें:
mysql --version
MySQL इंस्टॉल करें
-
प्रत्येक लाइनोड पर MySQL स्थापित करने के लिए निम्न कमांड का उपयोग करें:
sudo apt-get update sudo apt-get upgrade -y sudo apt-get install mysql-server mysql-client
-
MySQL सुरक्षित इंस्टॉलेशन कमांड चलाएँ। आपको रूट पासवर्ड बनाने के लिए कहा जाएगा। यह अनुशंसा की जाती है कि आप सभी प्रश्नों के लिए हाँ चुनें:
mysql_secure_installation
MySQL के कॉन्फ़िगरेशन को संपादित करें
-
/etc/mysql/my.cnf
संपादित करें प्रत्येक लाइनोड पर फ़ाइल। निम्नलिखित मान जोड़ें या संशोधित करें:सर्वर 1:
- फाइल:/ आदि/mysql/my.cnf
1 2 3 4 5 6 7 8 9 10 11
[mysqld] server_id = 1 log_bin = /var/log/mysql/mysql-bin.log log_bin_index = /var/log/mysql/mysql-bin.log.index relay_log = /var/log/mysql/mysql-relay-bin relay_log_index = /var/log/mysql/mysql-relay-bin.index expire_logs_days = 10 max_binlog_size = 100M log_replica_updates = 1 auto-increment-increment = 2 auto-increment-offset = 1
ध्यान दें यदि MySQL 8.0.25 या इससे पहले का उपयोग कर रहे हैं, तो
log_replica_updates
. को बदलेंlog_slave_updates
. के साथ (सर्वर 1 और 2 दोनों के भीतर)। विवरण के लिए MySQL दस्तावेज़ देखें।सर्वर 2:
- फाइल:/ आदि/mysql/my.cnf
1 2 3 4 5 6 7 8 9 10 11
[mysqld] server_id = 2 log_bin = /var/log/mysql/mysql-bin.log log_bin_index = /var/log/mysql/mysql-bin.log.index relay_log = /var/log/mysql/mysql-relay-bin relay_log_index = /var/log/mysql/mysql-relay-bin.index expire_logs_days = 10 max_binlog_size = 100M log_replica_updates = 1 auto-increment-increment = 2 auto-increment-offset = 2
ध्यान दें यदि MySQL 8.0.25 या इससे पहले का उपयोग कर रहे हैं, तो
log_replica_updates
. को बदलेंlog_slave_updates
. के साथ (सर्वर 1 और 2 दोनों के भीतर)। विवरण के लिए MySQL दस्तावेज़ देखें। -
bind-address
संपादित करें प्रत्येक लाइनोड के लिए निजी आईपी पते का उपयोग करने के लिए कॉन्फ़िगरेशन।- फाइल:/ आदि/mysql/my.cnf
1
bind-address = x.x.x.x
-
एक बार पूरा हो जाने पर, MySQL एप्लिकेशन को पुनरारंभ करें:
sudo systemctl restart mysql
प्रतिकृति उपयोगकर्ता बनाएं
-
प्रत्येक लाइनोड पर MySQL में लॉग इन करें:
mysql -u root -p
-
प्रत्येक लिनोड पर प्रतिकृति उपयोगकर्ताओं को कॉन्फ़िगर करें। बदलें
x.x.x.x
विरोधी लिनोड के निजी आईपी पते के साथ, औरpassword
एक मजबूत पासवर्ड के साथ:MySQL8 और इसके बाद के संस्करण
CREATE USER 'replication'@'x.x.x.x' IDENTIFIED BY 'password'; GRANT REPLICATION SLAVE ON *.* TO 'replication'@'x.x.x.x';
MySQL8 के नीचे
GRANT REPLICATION SLAVE ON *.* TO 'replication'@'x.x.x.x' IDENTIFIED BY 'password';
-
कॉन्फ़िगरेशन का परीक्षण करने के लिए निम्न आदेश चलाएँ। विरोधी लाइनोड के निजी आईपी पते का प्रयोग करें:
mysql -u replication -p -h x.x.x.x -P 3306
यह कमांड आपको रिमोट सर्वर के MySQL इंस्टेंस से कनेक्ट करना चाहिए।
डेटाबेस प्रतिकृति कॉन्फ़िगर करें
-
सर्वर 1 पर MySQL में लॉग इन करते समय, मास्टर स्थिति को क्वेरी करें:
SHOW MASTER STATUS;
प्रदर्शित होने वाली फ़ाइल और स्थिति मानों पर ध्यान दें:
mysql> SHOW MASTER STATUS; +------------------+----------+--------------+------------------+ | File | Position | Binlog_Do_DB | Binlog_Ignore_DB | +------------------+----------+--------------+------------------+ | mysql-bin.000001 | 277 | | | +------------------+----------+--------------+------------------+ 1 row in set (0.00 sec)
-
सर्वर 2 पर MySQL प्रॉम्प्ट पर, उस डेटाबेस के लिए प्रतिकृति कार्यक्षमता सेट करें। बदलें
x.x.x.x
पहले सर्वर से निजी आईपी के साथ।source_log_file
. के लिए मान भी बदलें पिछले चरण के फ़ाइल मान औरsource_log_pos
. के मान के साथ स्थिति मान के साथ।MySQL 8.0.22 या इसके बाद के संस्करण:
STOP REPLICA; CHANGE REPLICATION SOURCE TO source_host='x.x.x.x', source_port=3306, source_user='replication', source_password='password', source_log_file='mysql-bin.000001', source_log_pos=106; START REPLICA;
MySQL 8.0.22 या इससे पहले:
STOP SLAVE; CHANGE MASTER TO master_host='x.x.x.x', master_port=3306, master_user='replication', master_password='password', master_log_file='mysql-bin.000001', master_log_pos=106; START SLAVE;
-
सर्वर 2 पर, मास्टर स्थिति को क्वेरी करें। फ़ाइल और स्थिति मानों को फिर से नोट करें।
SHOW MASTER STATUS;
-
चरण 2 में समान कमांड का उपयोग करते हुए सर्वर 1 पर प्रतिकृति डेटाबेस स्थिति सेट करें। कमांड दर्ज करते समय, सर्वर 2 के आईपी पते और पिछले चरण में आपके द्वारा अभी एकत्र की गई फ़ाइल और स्थिति मानों का उपयोग करें।
-
डेटाबेस बनाकर और एक पंक्ति सम्मिलित करके परीक्षण करें:
सर्वर 1:
create database test; create table test.flowers (`id` varchar(10));
सर्वर 2:
show tables in test;
पूछे जाने पर, आपको सर्वर 2 पर दोहराए गए सर्वर 1 से तालिकाएँ देखनी चाहिए। बधाई हो, अब आपके पास एक MySQL मास्टर-मास्टर क्लस्टर है!
अधिक जानकारी
आप इस विषय पर अतिरिक्त जानकारी के लिए निम्नलिखित संसाधनों से परामर्श करना चाह सकते हैं। हालांकि ये इस उम्मीद में प्रदान किए जाते हैं कि वे उपयोगी होंगे, कृपया ध्यान दें कि हम बाहरी रूप से होस्ट की गई सामग्री की सटीकता या समयबद्धता की पुष्टि नहीं कर सकते।
- MySQL संदर्भ नियमावली