वर्तमान समय में अधिकतर संगठन के सामने सबसे बड़ी चुनौती में से एक नेटवर्क के जटिल सेट पर डाटा की उपलब्धता और पहुंच सुनिश्चित करना है। बहुत पूर्ण व्यवस्था एक इनटिटर तक 24 घंटे और रियल टाइम पहुंच होने से संगठन को प्रक्रियाओं को निर्बाध रूप से पूरा करने और एक स्थिर राजस्व प्रभाव बनाए रखने में मदद मिलती है। इस प्रकार से देखा जाए तो संगठनों को अपने सिस्टम को स्केल करने और डाटा को निर्बाध रूप से एक्सेस करने के लिए सहायता प्रदान करने की बड़ी आवश्यकता है। आज के हमारे इस लेख में हम बात करेंगे कि हम किस तरह से MySQL Database को Replicate कर सकते हैं। How to Replicate MySQL database Hindi
MySQL बड़े संगठनों द्वारा अपनी व्यावसायिक गतिविधियों को चलाने के लिए व्यापक रूप से उपयोग किया जाने वाला डेटाबेस है। डेटा प्रतिकृति एक ऐसी तकनीक है जो उपयोगकर्ताओं को वास्तविक समय में सर्वर, साइट आदि जैसे कई स्रोतों से डेटा तक पहुंचने की अनुमति देती है। उच्च डेटा उपलब्धता बनाए रखने की चुनौती से निपटने के लिए कंपनियां MySQL डेटाबेस को दोहराती हैं।
इस लेख का उद्देश्य आपको MySQL डेटाबेस को मूल रूप से दोहराने में मदद करने के लिए एक व्यापक चरण-दर-चरण मार्गदर्शिका प्रदान करना है। सामग्री के पूर्ण पूर्वाभ्यास पर, आपको MySQL का गहन ज्ञान होगा, यह कैसे प्रतिकृति को संभालता है और आप अपने डेटा को आसानी से बैकअप / स्थानांतरित करने के लिए MySQL डेटाबेस को दोहराने (Replicate) में सक्षम होंगे!
MySQL क्या है? – What is MySQL?
MySQL सबसे लोकप्रिय, व्यापक रूप से उपयोग किए जाने वाले और मजबूत ओपन-सोर्स RDBMS (रिलेशनल डेटाबेस मैनेजमेंट सिस्टम) में से एक है, जिसे GNU पब्लिक लाइसेंस के तहत मुफ्त में उपलब्ध कराया गया है, जिसे प्रीमियम मालिकाना संस्करण के रूप में भी जाना जाता है। यह उपयोगकर्ताओं को अपने वांछित डेटाबेस से डेटा तक पहुंचने, जोड़ने और हटाने के लिए SQL (स्ट्रक्चर्ड क्वेरी लैंग्वेज) आधारित प्रश्नों का लाभ उठाने की अनुमति देता है।
माइकल विडेनियस ने मूल रूप से MySQL AB को एक स्वीडिश-आधारित कंपनी MySQL AB में विकसित किया, जिसे बाद में Sun Microsystems द्वारा और फिर Oracle द्वारा अधिग्रहित किया गया। फेसबुक, यूट्यूब, फ़्लिकर इत्यादि जैसे कई प्रमुख संगठन अपनी डेटा जरूरतों को प्रबंधित करने के लिए MySQL का उपयोग करते हैं।
MySQL की मुख्य विशेषताएं
- सुरक्षित: MySQL उपयोगकर्ताओं को एंटरप्राइज़-ग्रेड सुरक्षा कार्यक्षमता प्रदान करता है, केवल अधिकृत कर्मियों को डेटा तक पहुंचने की इजाजत देता है।
- संगत : MySQL हाउस सभी महत्वपूर्ण आधुनिक प्लेटफॉर्म और ऑपरेटिंग सिस्टम जैसे विंडोज, लिनक्स, यूनिक्स आदि के लिए समर्थन करते हैं।
- स्केलेबल : इसमें अत्यधिक स्केलेबल और मजबूत आर्किटेक्चर है जो जटिल प्रश्नों और बड़ी मात्रा में डेटा के साथ काम करते हुए भी उच्च प्रदर्शन सुनिश्चित करता है।
- सहज अनुभव: MySQL आसानी से डाउनलोड, इंस्टॉल, उपयोग में आसान है, और यह मुफ़्त भी उपलब्ध है।
MySQL में प्रतिकृति (Replication) क्या है?
डेटा प्रतिकृति उच्च डेटा उपलब्धता और पहुंच सुनिश्चित करने के लिए डेटा को एक सर्वर से दूसरे सर्वर पर कॉपी करने की प्रक्रिया को संदर्भित करता है, जिससे सिस्टम दोष-सहिष्णु हो जाता है। MySQL प्रतिकृति प्राप्त करने के लिए मास्टर-स्लेव तंत्र का लाभ उठाता है, जिससे उपयोगकर्ता अपने MySQL डेटाबेस (मास्टर-सर्वर) से डेटा को एक या अधिक MySQL डेटाबेस (स्लेव-सर्वर) में कॉपी कर सकते हैं।
डेटा प्रतिकृति के साथ, MySQL कई डेटाबेस पर लोड वितरित करता है और डेटा को मूल रूप से एक्सेस और विश्लेषण करने में मदद करता है, जिससे सिस्टम दोष-सहिष्णु हो जाता है।
प्रतिकृति के मास्टर-स्लेव तंत्र में, डेटा प्रतिकृति एक-तरफ़ा प्रक्रिया के रूप में होती है, और इसलिए यह उपयोगकर्ताओं को केवल मास्टर सर्वर से डेटा कॉपी करने और इसे स्लेव-सर्वर में संग्रहीत करने की अनुमति देता है। यहां, मास्टर सर्वर लेखन कार्यों को करने के लिए जिम्मेदार है, जबकि Slave रीड ऑपरेशन को संभालता है।
MySQL डेटाबेस को दोहराने के लिए मास्टर-स्लेव दृष्टिकोण का उपयोग करना
आप निम्न चरणों का उपयोग करके MySQL डेटाबेस को दोहराने के लिए मास्टर-स्लेव तंत्र का उपयोग कर सकते हैं:
- चरण 1: अपने स्रोत सर्वर के फ़ायरवॉल को समायोजित करना
- चरण 2: मास्टर सर्वर को कॉन्फ़िगर करना
- चरण 3: एक प्रतिकृति उपयोगकर्ता बनाना
- चरण 4: स्लेव सर्वर को कॉन्फ़िगर करना
अपने स्रोत सर्वर के फ़ायरवॉल को समायोजित करना
आरंभ करने से पहले, आपको UFW के साथ अपने दोनों सर्वरों पर फ़ायरवॉल कॉन्फ़िगर करने की आवश्यकता है। हालांकि, स्रोत का फ़ायरवॉल MySQL प्रतिकृति उदाहरणों से कनेक्शन प्रयासों को अवरुद्ध कर देगा। इसलिए, आपको स्रोत के फ़ायरवॉल के माध्यम से अपनी प्रतिकृति से कनेक्शन की अनुमति देने की आवश्यकता है। आप अपने स्रोत सर्वर पर UFW नियम शामिल करके ऐसा कर सकते हैं।
इस विशेष कमांड को चलाने से प्रतिकृति सर्वर के आईपी पते से उत्पन्न होने वाले किसी भी कनेक्शन की अनुमति मिलती है – जिसे replica_server_ip
– MySQL के डिफ़ॉल्ट पोर्ट नंबर द्वारा दर्शाया जाता है 3306
:
sudo ufw allow from replica_server_ip to any port 3306
replica_server_ip
आपको अपने प्रतिकृति सर्वर के वास्तविक आईपी पते से प्रतिस्थापित करने की आवश्यकता है । सफल जोड़ पर, आप निम्न आउटपुट देखेंगे
Rule added
मास्टर सर्वर को कॉन्फ़िगर करना
MySQL डेटाबेस को प्रभावी ढंग से दोहराने के लिए, आपको सबसे पहले मास्टर सर्वर या प्राथमिक डेटाबेस को कॉन्फ़िगर करना होगा। ऐसा करने के लिए, मास्टर सर्वर में लॉग इन करें और कॉन्फ़िगरेशन फ़ाइल खोलें, जो आमतौर पर निम्न पथ पर पाई जाती है:
/etc/mysql/my.cnf
एक बार फ़ाइल खोलने के बाद, मास्टर सर्वर के वास्तविक आईपी पते के मान को बदलकर मास्टर सर्वर के बाइंड-एड्रेस को संशोधित करें
bind-address = 127.0.0.1 to bind-address = 198.1.12.123
मास्टर सर्वर के बारे में MySQL को सूचित करने के लिए “mysqld” अनुभाग को अपडेट करें और लॉग-आधारित और अन्य पैरामीटर निर्दिष्ट करें। ऐसा करने के लिए, कॉन्फ़िगरेशन की फ़ाइल खोलें और निम्न पंक्ति कोड जोड़कर इसे अपडेट करें:
यहाँ, new_database वह डेटाबेस है जिसे हम दोहराना चाहते हैं।
एक बार जब आप सभी आवश्यक परिवर्तन कर लेते हैं, तो परिवर्तनों को प्रभावी बनाने के लिए आपको MySQL सर्वर को पुनरारंभ करना होगा। आप कोड की निम्न पंक्तियों का उपयोग करके ऐसा कर सकते हैं:
sudo service restart mysql
Create Replication Database
परिवर्तनों के प्रभावी होने के साथ, आपको प्रतिकृति विशेषाधिकारों के साथ एक नया उपयोगकर्ता बनाने की आवश्यकता है, जिससे यह प्रतिकृति करने की अनुमति देता है। ऐसा करने के लिए, MySQL शेल खोलें और कोड की निम्नलिखित पंक्तियों को निष्पादित करें:
mysql -u root -p
Enter password:
अब, अपने MySQL डेटाबेस के लिए एक स्लेव यूजर बनाएं और इसे पहचानने में मदद के लिए एक पासवर्ड जोड़ें। ऐसा करने के लिए, आप कोड की निम्न पंक्तियों का उपयोग कर सकते हैं:
mysql> CREATE USER ‘slaveuser’@’%’ IDENTIFIED BY ‘PASSWORD’;
अपने दास उपयोगकर्ता के साथ अब सेट अप, कोड की निम्न पंक्ति का उपयोग करके इसे आवश्यक विशेषाधिकार प्रदान करें:
mysql> GRANT REPLICATION SLAVE ON *.* TO 'slaveuser'@'%';
परिवर्तनों को प्रभावी बनाने के लिए, कोड की निम्न पंक्ति का उपयोग करके विशेषाधिकारों को फ्लश करें:
mysql> FLUSH PRIVILEGES;
अपने डेटाबेस की स्थिति जांचें और फिर तालिकाओं को लॉक करने के लिए ग्लोबल रीड लॉक का उपयोग करें और लॉग स्थिति कैप्चर और बैकअप होने पर किसी भी लेखन संचालन को होने से रोकें। ऐसा करने के लिए, आप कोड की निम्न पंक्तियों का उपयोग कर सकते हैं:
mysql> USE new_database;
mysql> FLUSH TABLES WITH READ LOCK;
mysql> SHOW MASTER STATUS;
एक बार जब आप कमांड निष्पादित कर लेते हैं, तो आप अपनी स्क्रीन पर निम्न आउटपुट देख पाएंगे:
अब आप पूरे मास्टर डेटाबेस को स्लेव सर्वर पर दोहराने के लिए mysqldump कमांड का उपयोग कर सकते हैं । ऐसा करने के लिए, आप कोड की निम्न पंक्तियों का उपयोग कर सकते हैं:
mysqldump -u root -p new_database> new_database.sql
Enter password:
एक बार जब आप mysqldump कमांड निष्पादित कर लेते हैं, तो एक नई बैकअप फ़ाइल, जिसे “new_database.sql” के रूप में जाना जाता है। बैकअप प्रक्रिया को पूरा करने के लिए इस फ़ाइल का स्लेव सर्वर में अनुवाद करें।
आपकी बैक अप फ़ाइल अब तैयार होने के साथ, अब आप कोड की निम्न पंक्तियों का उपयोग करके तालिकाओं को अनलॉक कर सकते हैं:
इस प्रकार आप अपने मास्टर सर्वर को MySQL डेटाबेस को दोहराने के लिए कॉन्फ़िगर कर सकते हैं।
स्लेव सर्वर को कॉन्फ़िगर करना – Configure Slave Server
आपका मास्टर सर्वर अब तैयार और कॉन्फ़िगर हो गया है, अब आपको MySQL डेटाबेस को सफलतापूर्वक दोहराने के लिए स्लेव सर्वर को कॉन्फ़िगर करने की आवश्यकता है। ऐसा करने के लिए, अपने क्रेडेंशियल जैसे उपयोगकर्ता नाम और पासवर्ड का उपयोग करके स्लेव सर्वर में लॉगिन करें, और फिर कोड की निम्नलिखित पंक्तियों का उपयोग करके मास्टर सर्वर के डेटा को संग्रहीत करने के लिए एक नया डेटाबेस बनाएं:
mysql -u root -p
Enter password:
mysql> CREATE DATABASE new_database;
mysql> quit;
मास्टर सर्वर से डेटा स्थानांतरित करने के लिए, बैकअप SQL फ़ाइल को स्लेव सर्वर में आयात करें। आप कोड की निम्न पंक्तियों का उपयोग करके ऐसा कर सकते हैं:
mysql -u root -p new_database < /PATH_TO_new_database.sql
Enter password:
एक बार जब आप SQL फ़ाइल आयात कर लेते हैं, तो अब आपको सर्वर विवरण, लॉग फ़ाइल पथ, आदि प्रदान करके स्लेव सर्वर को कॉन्फ़िगर करने की आवश्यकता है। ऐसा करने के लिए, कॉन्फ़िगरेशन फ़ाइल खोलें और निम्नलिखित मापदंडों को अपडेट करें:
server-id = 2
log_bin = /data/mysql/mysql-bin.log
binlog_do_db = new_database
एक बार जब आप सभी आवश्यक परिवर्तन कर लेते हैं, तो परिवर्तनों को प्रभावी बनाने के लिए अब स्लेव सर्वर को पुनरारंभ करें। ऐसा करने के लिए, आप कोड की निम्न पंक्तियों का उपयोग कर सकते हैं:
sudo service mysql restart
MySQL प्रतिकृति प्रक्रिया को पूरा करने के लिए, एक नया टर्मिनल खोलें और मास्टर-स्लेव कॉन्फ़िगरेशन को निम्नानुसार अपडेट करें:
इस तरह आप स्लेव सर्वर को कॉन्फ़िगर कर सकते हैं और MySQL डेटाबेस को सफलतापूर्वक दोहरा सकते हैं।