Mysql
 sql >> डेटाबेस >  >> RDS >> Mysql

MySQL मास्टर टू मास्टर प्रतिकृति

प्रतिकृति का उपयोग दो या दो से अधिक डेटाबेस को या तो निष्पादित DML/कथन या डेटा सेट परिवर्तनों को एक मास्टर सर्वर से एक या एक से अधिक स्लेव सर्वर में दोहराकर सिंक्रनाइज़ करने के लिए किया जाता है।

प्रतिकृति के लिए डेटा लॉग करने की तीन विधियाँ हैं:कथन-आधारित प्रतिकृति (SBR) डेटा को संशोधित करने वाले SQL कथनों की प्रतिकृति बनाती है। पंक्ति-आधारित प्रतिकृति (RBR) केवल बदली हुई पंक्तियों की प्रतिकृति बनाती है। मिश्रित-आधारित प्रतिकृति (एमबीआर) कथन-आधारित प्रतिकृति और पंक्ति-आधारित प्रतिकृति है। पूर्व में mysqld के सभी संस्करणों के लिए, कथन-आधारित प्रतिकृति डिफ़ॉल्ट विधि ऑफ़लॉगिंग है। लगभग सभी स्टोरेज इंजन डेटा लॉगिंग के तीनों तरीकों का समर्थन करते हैं।

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

सर्वरए को सर्वरबी के दास के रूप में स्थापित करके और सर्वरबी को सर्वरए के दास के रूप में स्थापित करके मास्टर/मास्टर प्रतिकृति प्राप्त की जाती है।

<लेबल वर्ग="पोस्ट-प्रारूप-आइकन पोस्ट-प्रारूप-छवि" के लिए="पोस्ट-प्रारूप-छवि">

धारणा: यह आलेख MySQL सर्वर की स्थापना के लिए कदम प्रदान नहीं करता है, मैं मान रहा हूं कि MySQL सर्वर (एकल उदाहरण) दोनों सर्वरों पर स्थापित किया गया है:

लिनक्स सर्वर पर प्रतिकृति मास्टर करने के लिए एक MySQL मास्टर को कॉन्फ़िगर करने के लिए हमें दो सर्वरों की आवश्यकता है, जानकारी निम्न की तरह है:

सर्वर ए :192.168.1.2

सर्वर B: 192.168.1.3

ओएस: आरएचएल 6.4 x86_64

MySQL सर्वर: 5.6.17 x86_64

पूर्व जांच:

दोनों सर्वरों पर फ़ायरवॉल अक्षम करें:

service iptables stop
chkconfig iptables off
service iptables status

दोनों सर्वरों को एक दूसरे के लिए सुलभ होना चाहिए, ताकि प्रत्येक सर्वर तक पहुंच की जांच की जा सके।

बाइंड-एड्रेस विशेषता पर टिप्पणी करें या दोनों सर्वरों पर my.sandbox.cnf या my.cnf फ़ाइल में इसे (बाइंड-एड्रेस =0.0.0.0) पर सेट करें। मैंने my.sandbox.cnf का उल्लेख किया है, यदि आप MySQL::Sandbox

का उपयोग कर रहे हैं तो इसके लिए

सबसे पहले, हम सर्वर B से A में प्रतिकृति सक्षम करेंगे

चरण 1:
सर्वर A पर:192.168.1.2

my.sandbox.cnf या my.cnf संपादित करें और नीचे दिए गए मान जोड़ें सर्वर-आईडी होना चाहिए> 0; यदि आप my.cnf फ़ाइल का स्थान नहीं जानते हैं तो इस कमांड का उपयोग ओएस शेल पर करें "mysql -help | grep my.cnf", आमतौर पर my.cnf /etc/ निर्देशिका में होता है

server-id=1
replicate-same-server-id=0
auto-increment-increment=2
auto-increment-offset=1
relay-log=serverA-relay-bin
relay-log-index=serverA-relay-bin.index
master-info-file=mysqk-master.info
relay-log-info-file=serverA-relay-log.info
log-bin=mysql-bin

सर्वर B पर:192.168.1.3

my.sandbox.cnf या my.cnf संपादित करें और नीचे दिए गए मान जोड़ें सर्वर-आईडी होना चाहिए> 0;

server-id=2
replicate-same-server-id=0
auto-increment-increment=2
auto-increment-offset=2
relay-log=serverB-relay-bin
relay-log-index=serverB-relay-bin.index
master-info-file=mysqk-master.info
relay-log-info-file=serverB-relay-log.info
log-bin=mysql-bin

चरण 2:
सर्वर A पर:192.168.1.2
create user 'syncstndby' identified by 'warsaw';
grant replication slave on *.* to 'syncstndby'@'192.168.1.3'  identified by 'warsaw';
flush privileges;
सर्वर B पर:192.168.1.3
create user 'syncstndby' identified by 'warsaw';
grant replication slave on *.* to 'syncstndby'@'192.168.1.2'  identified by 'warsaw';
flush privileges;
चरण 3:
सर्वर B पर:192.168.1.3
mysql > SHOW GLOBAL VARIABLES LIKE 'PORT';
+---------------+-------+
| Variable_name | Value |
+---------------+-------+
| port          | 5617 |
+---------------+-------+
1 row in set (0.00 sec)


mysql > show master status;
+------------------+----------+--------------+------------------+-------------------+
| File             | Position | Binlog_Do_DB | Binlog_Ignore_DB | Executed_Gtid_Set |
+------------------+----------+--------------+------------------+-------------------+
| mysql-bin.000002 |      423 | |             | |
+------------------+----------+--------------+------------------+-------------------+

सर्वर A पर:192.168.1.2
CHANGE MASTER TO 
MASTER_HOST='192.168.1.3',
MASTER_USER='syncstndby',
MASTER_PASSWORD='warsaw',
MASTER_PORT= 5617, 
MASTER_LOG_FILE='mysql-bin.000002',  
MASTER_LOG_POS=423; 

अब आप सोच रहे होंगे कि मैं इन विशेषताओं के लिए मान कहां से चुन रहा हूं, चिंता न करें मैं इसे समझा रहा हूं, उपरोक्त क्वेरी से MASTER_PORT  मान चुनें ('पोर्ट' की तरह वैश्विक चर दिखाएं) इस मामले में, हमारा पोर्ट 5617 है , उपरोक्त क्वेरी में कॉलम फ़ाइल से MASTER_LOG_FILE मान चुनें ("मास्टर स्थिति दिखाएं;") यानी  Mysql-bin.000002), उपरोक्त क्वेरी में कॉलम स्थिति से MASTER_LOG_POS मान चुनें जो कि 423 है)

चरण 4:

अब आप गुलाम शुरू कर सकते हैं

mysql>start salve:
mysql> show slave status \G;

अब B से A में प्रतिकृति सक्षम कर दी गई है

चरण 5 

इस चरण में हम सर्वर B से A में प्रतिकृति का परीक्षण करेंगे:

ऑन मास्टर (सर्वर बी):192.168.1.3
show schemas;
create database reptest;
create table reptest.simples (id int not null primary key) ;
insert into reptest.simples values (999),(1),(2),(3);
दास पर:192.168.1.2 (सर्वर A)
show schemas;
use reptest;
select * from reptest.simples;

अब हम सर्वर A से B में प्रतिकृति सक्षम करेंगे

चरण 6:
सर्वर A पर:192.168.1.2
mysql > SHOW GLOBAL VARIABLES LIKE 'PORT';
+---------------+-------+
| Variable_name | Value |
+---------------+-------+
| port          | 5617 |
+---------------+-------+
1 row in set (0.00 sec)

mysql > show master status;
+------------------+----------+--------------+------------------+-------------------+
| File             | Position | Binlog_Do_DB | Binlog_Ignore_DB | Executed_Gtid_Set |
+------------------+----------+--------------+------------------+-------------------+
| mysql-bin.000004 |      120 | |             | |
+------------------+----------+--------------+------------------+-------------------+
1 row in set (0.00 sec)

सर्वर B पर:192.168.1.3
CHANGE MASTER TO 
MASTER_HOST='192.168.1.2',
MASTER_USER='syncstndby',
MASTER_PASSWORD='warsaw',
MASTER_PORT= 5617, 
MASTER_LOG_FILE='mysql-bin.000004', 
MASTER_LOG_POS=120; 

उपरोक्त क्वेरी से MASTER_PORT  मान चुनें ('पोर्ट' की तरह वैश्विक चर दिखाएं) इस मामले में, हमारा पोर्ट 5617 है, उपरोक्त क्वेरी में कॉलम फ़ाइल से MASTER_LOG_FILE मान चुनें ("मास्टर स्थिति दिखाएं;") यानी माइस्क्ल-बिन .000004), उपरोक्त क्वेरी में कॉलम स्थिति से MASTER_LOG_POS मान चुनें जो कि 120 है)

अब आप गुलाम शुरू कर सकते हैं

mysql> show slave status \G;
mysql>start salve:
mysql> show slave status \G;

चरण 7

ठीक है तो हमारा वातावरण सेट हो गया है, अब हम परीक्षण करने जा रहे हैं कि हमारा पर्यावरण काम कर रहा है या नहीं।

192.168.1.2 को (सर्वर A)
insert into reptest.simples values (777),(41),(15),(61);

में डालें

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

192.168.1.3 को (सर्वर B)
use reptest;
select * from reptest.simples;

हुर्रे !! आप देख सकते हैं कि सब कुछ सेट है और हमारा मास्टर टू मास्टर प्रतिकृति सेट है।

चेतावनी: एक ही समय में दोनों सर्वरों पर आपके एप्लिकेशन को डीएमएल निष्पादित करना बुद्धिमानी नहीं है। एक ही समय में दोनों सर्वरों को लिखना उच्च उपलब्धता के लिए एक उचित टिकाऊ तेज़ विफलता बनाता है लेकिन इसका कोई प्रदर्शन लाभ नहीं होता है। दोनों सर्वरों को सभी डीएमएल का प्रदर्शन करना होता है, चाहे डीएमएल सीधे क्लाइंट से आए या प्रतिकृति के माध्यम से आए


  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. MySQL में Coalesce का उपयोग कैसे करें

  2. पहले अक्षर को कैपिटलाइज़ करें। माई एसक्यूएल

  3. MySQL तैयार वक्तव्य

  4. मैं उस तालिका के लिए एसक्यूएल कैसे लिख सकता हूं जो MySQL में संरक्षित कीवर्ड के समान नाम साझा करता है?

  5. OptimaData और VidaXL के साथ बैठक के लिए एम्स्टर्डम में हमसे जुड़ें