Computer >> कंप्यूटर >  >> प्रणाली >> Linux

मारियाडीबी मास्टर-मास्टर/स्लेव प्रतिकृति को कैसे कॉन्फ़िगर करें?

प्रतिकृति SQL डेटाबेस में स्रोत डेटाबेस से डेटा को दूसरे (या एकाधिक वाले) में कॉपी करने की प्रक्रिया है और इसके विपरीत। एक डेटाबेस सर्वर से डेटा लगातार एक या अधिक सर्वरों पर कॉपी किया जाता है। आप प्रतिकृति सर्वर के पूल में अनुरोधों को वितरित और संतुलित करने के लिए प्रतिकृति का उपयोग कर सकते हैं, विफलता प्रदान कर सकते हैं और मारियाडीबी डेटाबेस की उच्च उपलब्धता प्रदान कर सकते हैं। मारियाडीबी (और MySQL) दो प्रकार के डेटाबेस प्रतिकृति का उपयोग करने की अनुमति देता है:मास्टर-मास्टर और मास्टर-दास . इस लेख में हम विचार करेंगे कि Linux CentOS 7 पर दोनों प्रकार के MariaDB प्रतिकृति को कैसे कॉन्फ़िगर किया जाए।

मारियाडीबी स्थापित करना

इससे पहले हमने CentOS 7 पर मारियाडीबी इंस्टॉलेशन की प्रक्रिया का वर्णन करते हुए एक लेख प्रकाशित किया था। आप इसे लिंक के बाद पढ़ सकते हैं:https://woshub.com/mariadb-install-configure-tunning-centos। इसलिए हम स्वयं MariaDB स्थापना पर ध्यान केंद्रित नहीं करेंगे, बल्कि प्रतिकृति को कॉन्फ़िगर करने के तरीके पर आगे बढ़ेंगे।

MariaDB पर सरल मास्टर-मास्टर प्रतिकृति को कॉन्फ़िगर करना

मास्टर-मास्टर प्रतिकृति योजना में, किसी भी MariaDB/MySQL डेटाबेस सर्वर का उपयोग डेटा लिखने या पढ़ने दोनों के लिए किया जा सकता है। प्रतिकृति एक विशेष बिनलॉग फ़ाइल पर आधारित है, एक मास्टर सर्वर डेटाबेस के साथ सभी कार्यों को सहेजता है। एक स्लेव सर्वर मास्टर से जुड़ता है और अपने डेटाबेस में कमांड लागू करता है।

<एच3>1. मारियाडीबी:पहले मास्टर सर्वर का विन्यास (मास्टर-1)

निम्न पंक्तियों को my.cnf . में जोड़ें अपने पहले MariaDB सर्वर पर फ़ाइल करें:

#replicationserver_id =1report_host =Masterlog_bin =/var/lib/mysql/mariadb-binlog_bin_index =/var/lib/mysql/mariadb-bin.indexrelay_log =/var/lib/mysql/relay-binrelay_log_index =/var/lib/ mysql/relay-bin.index

मारियाडीबी मास्टर-मास्टर/स्लेव प्रतिकृति को कैसे कॉन्फ़िगर करें?

service mariadb restart

प्रतिकृति कॉन्फ़िगर करने के लिए एक उपयोगकर्ता बनाएं:

mysql
create user 'test_master'@'%' identified by 'test_master';
grant replication slave on *.* to 'test_master'@'%';

स्लेव जोड़ने के लिए, हमें मास्टर-1 सर्वर से bin_log डेटा प्राप्त करने की आवश्यकता है:

MariaDB [(none)]> show master status;

<पूर्व>+----------------------+----------+-------------- +------------------+| फ़ाइल | स्थिति | बिनलॉग_Do_DB | बिनलॉग_इग्नोर_डीबी |+--------------------------+----------+--------------+ -------------------+| मारियाडीबी-बिन.000002 | 664 | | |+--------------------+----------+--------------+- -----------------+1 पंक्ति सेट में (0.000 सेकंड)

मारियाडीबी मास्टर-मास्टर/स्लेव प्रतिकृति को कैसे कॉन्फ़िगर करें?

<एच3>2. मारियाडीबी:दूसरे मास्टर सर्वर का विन्यास (मास्टर-2)

दूसरे MariaDB सर्वर से कनेक्ट करें, my.cnf फ़ाइल खोलें और इसमें निम्न कॉन्फ़िगरेशन जोड़ें:

#replicationserver_id =2report_host =Master2log_bin =/var/lib/mysql/mariadb-binlog_bin_index =/var/lib/mysql/mariadb-bin.indexrelay_log =/var/lib/mysql/relay-binrelay_log_index =/var/lib/ mysql/relay-bin.index

मारियाडीबी मास्टर-मास्टर/स्लेव प्रतिकृति को कैसे कॉन्फ़िगर करें?

दूसरे सर्वर पर भी एक नया उपयोगकर्ता बनाएँ:

create user 'test_master2'@'%' identified by 'test_master2';
grant replication slave on *.* to 'test_master2'@'%';

Master-2 पर bin_log प्राप्त करें:

MariaDB [(none)]> show master status;

<पूर्व>+----------------------+----------+-------------- +------------------+| फ़ाइल | स्थिति | बिनलॉग_Do_DB | बिनलॉग_इग्नोर_डीबी |+--------------------------+----------+--------------+ -------------------+| मारियाडीबी-बिन.000001 | 667 | | |+--------------------+----------+--------------+- -----------------+1 पंक्ति सेट में (0.000 सेकंड)

आइए हमारे सॉफ़्टवेयर प्रतिकृति क्लस्टर में मारियाडीबी सर्वर के बीच कनेक्शन को कॉन्फ़िगर करें:

गुलाम बंद करो:

STOP SLAVE;

दूसरे सर्वर में मास्टर-1 जोड़ें:

CHANGE MASTER TO MASTER_HOST='IP_master1', MASTER_USER='test_master', MASTER_PASSWORD='test_master', MASTER_LOG_FILE='mariadb-bin.000002', MASTER_LOG_POS=664; में बदलें

प्रतिकृति प्रारंभ करें:

START SLAVE;

मारियाडीबी मास्टर-मास्टर/स्लेव प्रतिकृति को कैसे कॉन्फ़िगर करें?

मास्टर-1 से कनेक्ट करें और उन्हीं चरणों का पालन करें, लेकिन इसके बजाय दूसरे सर्वर के बारे में जानकारी निर्दिष्ट करें:

STOP SLAVE;
CHANGE MASTER TO MASTER_HOST='10.2.10.36', MASTER_USER='test_master2', MASTER_PASSWORD='test_master2', MASTER_LOG_FILE='mariadb-bin.000001', MASTER_LOG_POS=667;
START SLAVE;

दूसरे सर्वर की स्थिति जांचें:

show slave status \G

मारियाडीबी मास्टर-मास्टर/स्लेव प्रतिकृति को कैसे कॉन्फ़िगर करें?

जैसा कि आप स्क्रीनशॉट में देख सकते हैं, दो सर्वरों के बीच संबंध है, और कोई त्रुटि नहीं होती है।

<एच3>3. मारियाडीबी सर्वर के बीच प्रतिकृति की जांच कैसे करें?

फिर यह सुनिश्चित करने के लिए कि दो मारियाडीबी सर्वरों के बीच प्रतिकृति मास्टर+मास्टर में काम करती है, हम मास्टर-1 पर एक नया डेटाबेस बनाएंगे और उसमें एक टेबल बनाएंगे।

MariaDB [(none)]> create database master1;
MariaDB [(none)]> use master1;
MariaDB [master1]> CREATE TABLE hello (
-> AuthorID INT NOT NULL AUTO_INCREMENT,
-> AuthorName VARCHAR(100),
-> PRIMARY KEY(AuthorID)
-> );

मारियाडीबी मास्टर-मास्टर/स्लेव प्रतिकृति को कैसे कॉन्फ़िगर करें?

सुनिश्चित करें कि यह डेटाबेस स्वचालित रूप से दूसरे मास्टर पर दोहराया गया है और इसमें समान तालिका है:

MariaDB [(none)]> show databases;

<पूर्व>+----------------------+| डेटाबेस |+----------------------+| info_schema || मास्टर1 || mysql || परफ़ॉर्मेंस_स्कीमा |+----------------------+

MariaDB [(none)]> use master1;
MariaDB [master1]> show tables;

<पूर्व>+---------------------+| टेबल्स_इन_मास्टर1 |+---------------------+| हैलो |+---------------------+

डेटाबेस दूसरे मास्टर पर भी बनाया गया है। पूरे चक्र की जांच करने के लिए, दूसरे मास्टर सर्वर पर मास्टर1 डेटाबेस में एक तालिका बनाएं और जांचें कि क्या यह पहले सर्वर पर दिखाई देता है।

MariaDB [master1]> CREATE TABLE hello_master1 (
-> AuthorID INT NOT NULL AUTO_INCREMENT,
-> AuthorName VARCHAR(100),
-> PRIMARY KEY(AuthorID)
-> );

hello_master1 तालिका को पहले सर्वर पर दोहराया गया है:

MariaDB [master1]> show tables;

<पूर्व>+---------------------+| टेबल्स_इन_मास्टर1 |+---------------------+| नमस्ते || hello_master1 |+---------------------+

मारियाडीबी मास्टर-मास्टर/स्लेव प्रतिकृति को कैसे कॉन्फ़िगर करें?

जैसा कि आप देख सकते हैं, मास्टर-1 पर नई तालिका दिखाई दी है। प्रतिकृति काम करती है।

MariaDB में मास्टर-स्लेव प्रतिकृति कैसे सेट करें?

मास्टर-स्लेव मारियाडीबी प्रतिकृति मोड में, एक सर्वर दास के रूप में कार्य करता है, और मास्टर सर्वर से डेटा लगातार इसे लिखा जाता है। स्लेव सर्वर पर आपके द्वारा किए गए सभी परिवर्तन मास्टर सर्वर में स्थानांतरित नहीं होंगे। यह डेटाबेस प्रतिकृति प्रकार अधिक लचीला है और अधिक बार उपयोग किया जाता है। इस कॉन्फ़िगरेशन में, आपके पास हमेशा अप-टू-डेट डेटाबेस वाला बैकअप सर्वर होता है, और यदि कोई स्लेव सर्वर विफल हो जाता है, तो मास्टर कोई डेटा नहीं खोएगा। आप अपने प्रोजेक्ट के लिए डेटाबेस लोड भी वितरित कर सकते हैं ताकि ऐप्स आपके स्लेव सर्वर से डेटा पढ़ सकें और डेटा केवल मास्टर सर्वर को लिख सकें। इस प्रकार, आप डेटाबेस को जितनी जल्दी हो सके प्रतिक्रिया देते हैं।

मारियाडीबी डेटाबेस के मास्टर+स्लेव प्रतिकृति को कॉन्फ़िगर करते समय, मास्टर सर्वर (मास्टर1) को ऊपर वर्णित अनुसार कॉन्फ़िगर किया गया है।

दास सर्वर पर जाएं। दास my.cnf फ़ाइल में निम्न कॉन्फ़िगरेशन जोड़ें:

#replicationserver_id =2report_host =slave2log_bin =/var/lib/mysql/mariadb-binlog_bin_index =/var/lib/mysql/mariadb-bin.indexrelay_log =/var/lib/mysql/relay-binrelay_log_index =/var/lib/ mysql/relay-bin.index

मारियाडीबी सेवा को पुनरारंभ करें। पहले सर्वर से bin_log जानकारी प्राप्त करें:

MariaDB [(none)]> show master status;

<पूर्व>+----------------------+----------+-------------- +------------------+| फ़ाइल | स्थिति | बिनलॉग_Do_DB | बिनलॉग_इग्नोर_डीबी |+--------------------------+----------+--------------+ -------------------+| मारियाडीबी-बिन.000001 | 664 | | |+--------------------+----------+--------------+- -----------------+

इन आदेशों को दास सर्वर पर मारियाडब कंसोल में चलाएँ:

MariaDB [(none)]> STOP SLAVE;

MariaDB [(none)]> CHANGE MASTER TO MASTER_HOST='IP_master', MASTER_USER='test_master', MASTER_PASSWORD='test_master', MASTER_LOG_FILE='mariadb-bin.000001', MASTER_LOG_POS=664; में बदलें;
MariaDB [(none)]> START SLAVE;

जब आप मौजूदा मारियाडीबी डेटाबेस के लिए प्रतिकृति को कॉन्फ़िगर करते हैं, तो आपको प्रतिकृति शुरू करने से पहले डेटाबेस को केवल-पढ़ने के लिए मोड में रखना होगा ताकि बिन_लॉग नंबर अपडेट न हो।

SET GLOBAL read_only = ON;

आपको डेटाबेस मेमोरी डंप भी बनाना होगा और अपने दास सर्वर पर मारियाडीबी को डेटा के प्रारंभिक अपलोड के लिए इसका इस्तेमाल करना होगा।

गुलाम की स्थिति की जांच करने के लिए:SHOW SLAVE STATUS\G;

मास्टर पर डेटाबेस बनाने के लिए:

MariaDB [(none)]> create database master_hello;

सुनिश्चित करें कि डेटाबेस स्लेव सर्वर पर भी बनाया गया है:

MariaDB [(none)]> show databases;

<पूर्व>+----------------------+| डेटाबेस |+----------------------+| info_schema || मास्टर_हैलो || मास्टर_टेस्ट || mysql || प्रदर्शन_स्कीमा || परीक्षण |+----------------------+

मारियाडीबी मास्टर-मास्टर/स्लेव प्रतिकृति को कैसे कॉन्फ़िगर करें?

स्लेव सर्वर पर एक डेटाबेस बनाएं और जांचें कि क्या डेटाबेस मास्टर को दोहराया गया है।

मारियाडीबी मास्टर-मास्टर/स्लेव प्रतिकृति को कैसे कॉन्फ़िगर करें?

जैसा कि आप देख सकते हैं, हमने डेटाबेस बनाया है और यह स्लेव पर मौजूद है। आइए देखें कि क्या यह मास्टर पर दिखाई दिया है। हुआ नहीं है। डेटा को दास से मास्टर तक दोहराया नहीं जाता है।

मारियाडीबी मास्टर-मास्टर/स्लेव प्रतिकृति को कैसे कॉन्फ़िगर करें?

इसका मतलब है कि मारियाडीबी प्रतिकृति केवल एक दिशा में काम करती है। आइए एक और जाँच करें और master_hello . को हटा दें स्लेव सर्वर से डेटाबेस:

मारियाडीबी मास्टर-मास्टर/स्लेव प्रतिकृति को कैसे कॉन्फ़िगर करें?

जांचें कि क्या यह मास्टर सर्वर से हटा दिया गया है:

मारियाडीबी मास्टर-मास्टर/स्लेव प्रतिकृति को कैसे कॉन्फ़िगर करें?

जैसा कि आप देख सकते हैं, यह ठीक है और डेटाबेस मौजूद है।

पीएस:जब आप मारियाडब प्रतिकृति को कॉन्फ़िगर करते हैं, तो आप कुछ नुकसानों में आ सकते हैं, जिनमें से सबसे अधिक बार फ़ायरवॉल के साथ। डिफ़ॉल्ट रूप से, CentOS में फ़ायरवॉल स्थापित होता है, जो MariaDB प्रतिकृति पोर्ट (TCP 3396) को अवरुद्ध करता है। आप या तो iptables का उपयोग करके पोर्ट खोल सकते हैं, या अपने फ़ायरवॉल को अक्षम कर सकते हैं (सबसे अच्छा विकल्प नहीं)।

जिस आईपी पते पर डेटाबेस कनेक्शन की प्रतीक्षा कर रहा है, वह my.cnf में बाइंड-एड्रेस पैरामीटर में निर्दिष्ट है। स्थानीय और बाहरी कनेक्शन की अनुमति देने के लिए, आपको इस लाइन पर टिप्पणी करनी होगी और iptables नियम जोड़ना होगा जो मास्टर से कनेक्शन की अनुमति देता है। /गुलाम आईपी पता 3306 पोर्ट करने के लिए।

iptables -I INPUT -p tcp -s ip_address_slave_server --dport 3306 -j ACCEPT
iptables -I INPUT -p tcp --dport 3306 -j DROP

प्रारंभिक सेटअप के दौरान, मैं इस मुद्दे पर आया था, लेकिन यह आसानी से पता चला है। अगर आप स्लेव स्टेटस चलाते हैं तो SHOW SLAVE STATUS\G . चेक करें , आपको यह त्रुटि दिखाई देगी:

मारियाडीबी मास्टर-मास्टर/स्लेव प्रतिकृति को कैसे कॉन्फ़िगर करें?

आप #replication . में कुछ पैरामीटर जोड़ सकते हैं my.cnf फ़ाइल में ब्लॉक करें। नीचे मैं कुछ उदाहरण और उपयोगी मापदंडों का संक्षिप्त विवरण दूंगा। मैं अन्य कार्यों के कुछ उदाहरण दूंगा जो आपके मारियाडब डेटाबेस प्रतिकृति को कॉन्फ़िगर करते समय सहायक हो सकते हैं।

server_id = 1 - सर्वर आईडी निर्दिष्ट करें, आमतौर पर हम 1 से शुरू करते हैं, लेकिन आप किसी भी संख्या का उपयोग कर सकते हैं जो प्रतिकृति के लिए उपयोग किए गए अन्य सर्वरों से मेल नहीं खाती।

report_host = master — आमतौर पर आप सर्वर का होस्ट नाम निर्दिष्ट करते हैं, लेकिन आप इसके बजाय उसका आईपी पता दर्ज कर सकते हैं।

log_bin = /var/lib/mysql/mariadb-bin — अद्यतन लॉग (log_bin) का पथ है।

log_bin_index = /var/lib/mysql/mariadb-bin.index — आपको यह पता लगाने की अनुमति देता है कि वर्तमान में कौन सा लॉग सक्रिय है और कौन से लॉग पहले उपयोग किए गए थे।

relay_log = /var/lib/mysql/relay-bin

relay_log_index = /var/lib/mysql/relay-bin.index — प्रतिकृति लॉग हैं।

यदि आप किसी विशिष्ट डेटाबेस या चयनित डेटाबेस की प्रतिकृति को कॉन्फ़िगर करना चाहते हैं, तो निम्न मापदंडों का उपयोग करें:

replicate-do-db = dbname — यदि आपको एकाधिक डेटाबेस की आवश्यकता है, तो उनके नाम अल्पविराम से अलग करके निर्दिष्ट करें।

कुछ डेटाबेस को प्रतिकृति से बाहर करने के लिए (हमेशा की तरह, सेवा डेटाबेस को प्रतिकृति से बाहर रखा गया है:info_schema, mysql और performance_schema):

binlog-ignore-db = dbname

अपने bin_log के लिए लॉग इतिहास समय निर्धारित करने के लिए:

expire_logs_days = 10 — जहां 10 दिनों की संख्या है जहां लॉग संग्रहीत किए जाएंगे।

साथ ही, यदि आपके मास्टर सर्वर का डेटा किसी भिन्न नाम वाले डेटाबेस में लिखा गया है, तो आप इसे कॉन्फ़िग फ़ाइल में सेट कर सकते हैं:

replicate-rewrite-db=dbmastername->dbslavename

प्रतिकृति विन्यास पूरा हो गया है। मुझे लगता है कि इस लेख का उपयोग करके आप बिना किसी समस्या के मास्टर + मास्टर और मास्टर + स्लेव मोड में मारियाडीबी प्रतिकृति को कॉन्फ़िगर करने में सक्षम होंगे।


  1. कैसे करें:विंडोज 10 में सिस्टम रिस्टोर को कॉन्फ़िगर करें

    इस बात की प्रबल संभावना है कि आपका सिस्टम कुछ मौकों पर कुछ मैलवेयर, संक्रमित प्रोग्राम या डिवाइस ड्राइवरों के कारण विंडोज़ के संचालन के विरोध में क्रैश हो सकता है। तो, ठीक उसी समय, आप यह कहते हुए खुद को ताना मार रहे होंगे, “मैंने अपने विंडोज़ का बैकअप क्यों नहीं लिया”? यह तब और भी मुश्किल हो जाता है

  1. विंडोज 11 पर इंडेक्सिंग विकल्प कैसे कॉन्फ़िगर करें

    क्या करें जब आपको किसी फ़ाइल/फ़ोल्डर/एप्लिकेशन को एक्सेस करने की आवश्यकता हो, लेकिन अपने कंप्यूटर पर स्टोरेज के माध्यम से ब्राउज़ करने में बहुत आलस्य महसूस हो? बचाव के लिए विंडोज सर्च दर्ज करें। विंडोज सर्च इंडेक्स पूर्वनिर्धारित क्षेत्रों के भीतर से फाइल या ऐप या सेटिंग की तलाश करके जल्दी से खोज पर

  1. कैसे Outlook मेल को कॉन्फ़िगर करें?

    यह आलेख IMAP के माध्यम से Outlook पर Yahoo मेल को कॉन्फ़िगर करने के लिए चरण दर चरण उदाहरण देने का प्रयास करता है। लेकिन आउटलुक को कॉन्फ़िगर करने से पहले यहां कुछ बदलाव दिए गए हैं जो आपको अपने याहू मेल खाते में करने होंगे। आउटलुक पर Yahoo मेल को कॉन्फ़िगर करने के चरण अपने खाते में लॉग इन करें और सेट