MySQL प्रतिकृति आपको डेटाबेस को एक सर्वर से दूसरे सर्वर पर आसानी से कॉपी करने की अनुमति देता है। MySQL विभिन्न प्रकार की प्रतिकृति का समर्थन करता है जैसे मास्टर-स्लेव, मास्टर-मास्टर और समूह प्रतिकृति। मारियाडीबी मल्टी-मास्टर प्रतिकृति का भी समर्थन करता है। इस लेख में, हम MySQL में मास्टर-स्लेव प्रतिकृति देखेंगे और सीखेंगे कि लिनक्स में MySQL डेटाबेस को कैसे दोहराया जाए। आप उबंटू, डेबियन, सेंटोस, फेडोरा, रेड हैट और अन्य प्रकार के लिनक्स में MySQL डेटाबेस को दोहराने के लिए इन चरणों का उपयोग कर सकते हैं।
MySQL डेटाबेस को कैसे रिपीट करें
यहाँ MySQL डेटाबेस को दोहराने के चरण दिए गए हैं। हमारे सेटअप के लिए, हमें एक मास्टर डेटाबेस (IP - 54.24.32.12) और एक स्लेव डेटाबेस (IP - 45.12.21.23) की आवश्यकता होगी। हम exampledb . नाम के डेटाबेस की प्रतिकृति बनाएंगे स्वामी से दास तक। हमने माना है कि आपने इन दोनों सर्वरों पर MySQL स्थापित किया है, और आपके पास इन दोनों के लिए रूट विशेषाधिकार हैं। अन्यथा आप निम्न आदेश के साथ MySQL स्थापित कर सकते हैं
$ sudo apt-get install mysql-server mysql-client
बोनस पढ़ें :शीर्ष MySQL कार्यक्षेत्र विकल्प
मास्टर डेटाबेस के सर्वर पर टर्मिनल खोलें और निम्न कमांड चलाएँ
$ sudo vi /etc/mysql/my.cnf
डिफ़ॉल्ट रूप से, MySQL में दूरस्थ कनेक्शन अक्षम हैं। हमें प्रतिकृति के लिए दास से मास्टर तक दूरस्थ कनेक्शन की अनुमति देने की आवश्यकता है। इसलिए हम निम्न दो पंक्तियों को दूरस्थ कनेक्शन की अनुमति देने के लिए, उनकी शुरुआत में # जोड़कर, जैसा कि नीचे दिखाया गया है, अनकम्मेंट करते हैं
#skip-networking #bind-address=127.0.0.1
निम्नलिखित की तरह दिखने के लिए [mysqld] ब्लॉक में निम्नलिखित पंक्तियों को जोड़ें या असंबद्ध करें।
[mysqld]
server-id=1
log-bin = /var/log/mysql/mysql-bin.log binlog-do-db=exampledb
आइए उपरोक्त प्रत्येक पंक्ति को देखें। पहली पंक्ति सर्वर-आईडी मास्टर के लिए एक अद्वितीय आईडी संख्या निर्दिष्ट करती है। यह 1 से 2^32 तक एक धनात्मक संख्या होनी चाहिए।
लॉग-बिन लॉग फ़ाइल स्थान निर्दिष्ट करता है जो प्रतिकृति के विवरण के साथ MySQL द्वारा पॉप्युलेट किया जाएगा।
बिनलॉग-डू-डीबी डेटाबेस का नाम इंगित करता है जिसे दोहराने की आवश्यकता है।
परिवर्तन लागू करने के लिए MySQL सर्वर को पुनरारंभ करें
$ sudo service mysql restart
रूट उपयोगकर्ता के रूप में MySQL में लॉग इन करें
$ sudo mysql -u root -p
और निम्न आदेश चलाएँ
mysql> SHOW MASTER STATUS; +------------------+----------+--------------+------------------+ | File | Position | Binlog_Do_DB | Binlog_Ignore_DB | +------------------+----------+--------------+------------------+ | mysql-bin.000001 | 107 | exampledb | | +------------------+----------+--------------+------------------+
कृपया उपरोक्त विवरणों पर ध्यान दें, हमें बाद में चरण #3 में उनकी आवश्यकता होगी।
बोनस पढ़ें :MySQL में SSL/TLS कैसे सक्षम करें
2. प्रतिकृति उपयोगकर्ता बनाएं
मास्टर पर MySQL सर्वर में लॉग इन करें।
$ sudo mysql -u root -p
आपको रूट पासवर्ड के लिए कहा जाएगा।
MySQL में लॉग इन करने के बाद, एक दूरस्थ उपयोगकर्ता बनाने के लिए निम्न कमांड चलाएँ slave_user , और इसे सभी डेटाबेस के लिए प्रतिकृति अनुमतियां प्रदान करें। कृपया नीचे 45.12.21.23 को अपने स्लेव सर्वर के आईपी से बदलें, और $password को अपनी आवश्यकता के अनुसार उपयुक्त पासवर्ड से बदलें।
mysql> CREATE USER slave_user@45.12.21.23; mysql> GRANT REPLICATION SLAVE ON *.* TO slave_user@45.12.21.23 IDENTIFIED BY '$password'; mysql> FLUSH PRIVILEGES;
कृपया पोर्ट 3306 के लिए एक इनबाउंड फ़ायरवॉल नियम जोड़ें और 45.12.21.23 को अनुमति दें। इस दूरस्थ उपयोगकर्ता को प्रतिकृति होने के लिए मास्टर डेटाबेस से कनेक्ट करने की आवश्यकता है।
बोनस पढ़ें :MySQL में सभी टेबल्स के कोलेशन को कैसे बदलें
3. स्लेव कॉन्फ़िगरेशन फ़ाइल संपादित करें
स्लेव डेटाबेस के सर्वर पर टर्मिनल खोलें और निम्न कमांड चलाएँ
$ sudo vi /etc/mysql/my.cnf
जैसा दिखने के लिए [mysqld] के अंतर्गत निम्न पंक्तियाँ जोड़ें
[mysqld] server-id = 2 relay-log = /var/log/mysql/mysql-relay-bin.log log_bin = /var/log/mysql/mysql-bin.log binlog_do_db = exampledb
पहली पंक्ति में, हम स्लेव सर्वर को 2 की सर्वर आईडी असाइन करते हैं। अगली दो पंक्तियाँ रिले लॉग और प्रतिकृति लॉग फ़ाइलों के स्थान निर्दिष्ट करती हैं। अंतिम पंक्ति डेटाबेस को दोहराने के लिए निर्दिष्ट करती है।
MySQL सर्वर को पुनरारंभ करें और MySQL में लॉग इन करें
$ sudo service mysql restart $ sudo mysql -u root -p
स्लेव पर एक खाली डेटाबेस बनाने के लिए निम्न कमांड चलाएँ।
mysql> CREATE DATABASE exampledb; mysql> USE exampledb;
स्लेव डेटाबेस को पॉप्युलेट करने के लिए मास्टर डेटाबेस से डेटा लोड करें
mysql> LOAD DATA FROM MASTER;
MySQL से बाहर निकलें।
बोनस पढ़ें :अनुसरण करने के लिए शीर्ष डेटाबेस ब्लॉग
4. प्रतिकृति प्रारंभ करें
जब आप MySQL में लॉग इन होते हैं, तो प्रतिकृति प्रक्रिया आरंभ करने के लिए निम्न कमांड चलाएँ। भागों को बोल्ड . में बदलें अपने मूल्यों के साथ।
mysql> SLAVE STOP; mysql> CHANGE MASTER TO MASTER_HOST='54.24.32.12', MASTER_USER='slave_user', MASTER_PASSWORD='<password>', MASTER_LOG_FILE='mysql-bin.000001', MASTER_LOG_POS=107;
MASTER_HOST - मास्टर का आईपी पता या होस्टनाम (54.24.32.12)।
MASTER_USER - दास उपयोगकर्ता जिसे हमने चरण # 2 में बनाया है।
MASTER_PASSWORD - दास उपयोगकर्ता का पासवर्ड जिसे हमने चरण #2 में रखा था।
MASTER_LOG_FILE - फ़ाइल MySQL ने चरण # 1 में वापस दी जब आप भागे
मास्टर स्थिति दिखाएं
MASTER_LOG_POS - चरण # 1 में SHOW MASTER STATUS चलाने पर MySQL ने वापस दी स्थिति
अंत में, हम दास को MySQL डेटाबेस की प्रतिकृति शुरू करने के लिए शुरू करते हैं।
mysql> START SLAVE;
उम्मीद है, यह लेख आपको MySQL डेटाबेस को दोहराने में मदद करेगा।