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

मास्टर-मास्टर MySQL डेटाबेस प्रतिकृति कॉन्फ़िगर करें

<टेम्पलेट 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 इंस्टॉल करें

  1. प्रत्येक लाइनोड पर MySQL स्थापित करने के लिए निम्न कमांड का उपयोग करें:

    sudo apt-get update
    sudo apt-get upgrade -y
    sudo apt-get install mysql-server mysql-client
    
  2. MySQL सुरक्षित इंस्टॉलेशन कमांड चलाएँ। आपको रूट पासवर्ड बनाने के लिए कहा जाएगा। यह अनुशंसा की जाती है कि आप सभी प्रश्नों के लिए हाँ चुनें:

    mysql_secure_installation
    

MySQL के कॉन्फ़िगरेशन को संपादित करें

  1. /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 दस्तावेज़ देखें।
  2. bind-address संपादित करें प्रत्येक लाइनोड के लिए निजी आईपी पते का उपयोग करने के लिए कॉन्फ़िगरेशन।

    फाइल:/ आदि/mysql/my.cnf
    1
    
    bind-address    = x.x.x.x
  3. एक बार पूरा हो जाने पर, MySQL एप्लिकेशन को पुनरारंभ करें:

    sudo systemctl restart mysql
    

प्रतिकृति उपयोगकर्ता बनाएं

  1. प्रत्येक लाइनोड पर MySQL में लॉग इन करें:

    mysql -u root -p
    
  2. प्रत्येक लिनोड पर प्रतिकृति उपयोगकर्ताओं को कॉन्फ़िगर करें। बदलें 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';
    
  3. कॉन्फ़िगरेशन का परीक्षण करने के लिए निम्न आदेश चलाएँ। विरोधी लाइनोड के निजी आईपी पते का प्रयोग करें:

    mysql -u replication -p -h x.x.x.x -P 3306
    

    यह कमांड आपको रिमोट सर्वर के MySQL इंस्टेंस से कनेक्ट करना चाहिए।

डेटाबेस प्रतिकृति कॉन्फ़िगर करें

  1. सर्वर 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. सर्वर 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;
    
  3. सर्वर 2 पर, मास्टर स्थिति को क्वेरी करें। फ़ाइल और स्थिति मानों को फिर से नोट करें।

    SHOW MASTER STATUS;
    
  4. चरण 2 में समान कमांड का उपयोग करते हुए सर्वर 1 पर प्रतिकृति डेटाबेस स्थिति सेट करें। कमांड दर्ज करते समय, सर्वर 2 के आईपी पते और पिछले चरण में आपके द्वारा अभी एकत्र की गई फ़ाइल और स्थिति मानों का उपयोग करें।

  5. डेटाबेस बनाकर और एक पंक्ति सम्मिलित करके परीक्षण करें:

    सर्वर 1:

    create database test;
    create table test.flowers (`id` varchar(10));
    

    सर्वर 2:

    show tables in test;
    

पूछे जाने पर, आपको सर्वर 2 पर दोहराए गए सर्वर 1 से तालिकाएँ देखनी चाहिए। बधाई हो, अब आपके पास एक MySQL मास्टर-मास्टर क्लस्टर है!

अधिक जानकारी

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

  • MySQL संदर्भ नियमावली

  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. डेटाबेस में बीक्रिप्ट हैशेड पासवर्ड को स्टोर करने के लिए मुझे किस कॉलम प्रकार/लंबाई का उपयोग करना चाहिए?

  2. मुझे अपने विंडोज़ कंप्यूटर पर my.cnf नहीं मिल रहा है

  3. MySQL/नियमित अभिव्यक्ति प्रतिकृति में शब्दों की गणना कैसे करें?

  4. Mysql डेटाबेस दो डेटाबेस के बीच सिंक करता है

  5. घंटा () उदाहरण – MySQL