एक मास्टर होने के लिए एक MySQL पिछले गुलाम को कैसे बदलें और दास की स्थिति की जानकारी निकालें?


10

मेरे पास एक मास्टर -> गुलाम कॉन्फ़िगरेशन है जहां मास्टर विफल हो गया। मैं पुराने-दास को गुरु और पुराने-स्वामी को गुलाम बनाने के लिए रीसेट करने में सक्षम हूं। ठीक।

जो कुछ मैं नहीं कर सकता, वह पुराने-गुलाम के बारे में मास्टर जानकारी को हटाने के लिए है जो अब नया-मास्टर है। समझा:

mysql> show slave status \G
*************************** 1. row ***************************
           Slave_IO_State: 
              Master_Host: 10.1.2.101
              Master_User: replicationSlave
              Master_Port: 3306
              ...
              Slave_IO_Running: No
              Slave_SQL_Running: No

मैंने बहुत सारे MySQL डॉक्यूमेंटेशन पढ़े हैं, लेकिन मुझे अभी भी नए-नवेले स्वामी की जानकारी को खाली करने का कोई तरीका नहीं मिला है। मैंने कोशिश की:

  1. RESET SLAVEजो उन सेटिंग्स को साफ़ नहीं करता है। [[वास्तव में यह master.infoफाइल को हटाता है लेकिन मेमोरी सेटिंग्स को नहीं। निचे देखो।]]
  2. CHANGE MASTER TO MASTER_HOST='' जो हाल ही में पदावनत किए जाने के बाद से एक त्रुटि पर थूकता है।
  3. यह जाँचना my.cnfकि उनके पास मास्टर जानकारी नहीं है क्योंकि उन्हें प्रोग्रामेटिक रूप से जोड़ा गया था।
  4. RESET MASTERक्योंकि कुछ mysql डॉक्स ने इसकी सिफारिश की थी। यह केवल बिन लॉग्स को रीसेट करता है।
  5. आंतरिक MySQL तालिकाओं में चारों ओर घूमकर यह देखने के लिए कि क्या मुझे फ़ील्ड साफ़ करने के लिए मिल सकती है।

MySQL ~ 5.5.9 पर ऐसा करने का उचित तरीका क्या है? किसी भी मदद के लिए धन्यवाद।


संपादित करें:

तो यह है कि पता चला है RESET SLAVEहटा master.info@RolandoMySQLDBA के रूप में फ़ाइल निहित। हालाँकि, दास जानकारी को हटाने से पहले आपको अभी भी सर्वर को पुनरारंभ करना होगा।

क्या मायस्कल्ड को पुनः आरंभ किए बिना इस गुलाम जानकारी को हटाने का कोई तरीका है ?


जवाबों:


10

MySQL 5.5.16 में और बाद में, आप उपयोग कर सकते हैं RESET SLAVE ALLकि सभी ऐसा करने के लिए RESET SLAVEकरता है और इस तरह से यह एक mysqld पुनः आरंभ करने की आवश्यकता नहीं है स्मृति से कनेक्शन पैरामीटर को रीसेट,।


6

एक MySQL उदाहरण से दास जानकारी को साफ करने का सबसे तेज और गंदा तरीका

  • skip-slave-start/Etc/my.cnf के तहत जोड़ें[mysqld]
  • service mysql stop
  • rm -f /var/lib/mysql/master.info /var/lib/mysql/relay-*
  • service mysql start
  • skip-slave-start/Etc/my.cnf से निकालें

कि यह तुम्हारे लिए करना चाहिए !!!

यह आवश्यक होगा क्योंकि MySQL प्रलेखन केRESET SLAVE अनुसार :

MySQL 5.5 में (MySQL 5.1 और इससे पहले के मामले के विपरीत), RESET SLAVE किसी भी प्रतिकृति कनेक्शन पैरामीटर जैसे मास्टर होस्ट, मास्टर पोर्ट, मास्टर उपयोगकर्ता, या मास्टर पासवर्ड को नहीं बदलता है, जो स्मृति में बनाए रखा जाता है। इसका मतलब यह है कि START SLAVE को RESET SLAVE के बाद CHANGE MASTER स्टेटमेंट की आवश्यकता के बिना जारी किया जा सकता है।

इस प्रकार, प्रतिकृति जानकारी अभी भी स्मृति में है। एक mysql पुनरारंभ करने का एकमात्र तरीका है।


धन्यवाद @ रोलैंडो +1 मैंने देखा लेकिन कोशिश नहीं की। मैं इसे ठीक करने के लिए mysqld को पुनः आरंभ नहीं करने की कोशिश कर रहा हूं ।
ग्रे - एसओ

इसके अलावा, मुझे कोई master.infoफ़ाइल नहीं दिख रही है । क्या ऐसा हमेशा "मास्टर" या "गुलाम" पर होता है?
ग्रे - एसओ बुराई को रोकना

master.info हमेशा स्लेव सर्वर पर होती है।
अब्दुल मनाफ

5

RESET SLAVEफिर से शुरू होने के बाद दास जानकारी को स्पष्ट नहीं करता है जहां तक ​​phpmyadmin का संबंध है। आपको सेट करने की भी आवश्यकता है CHANGE MASTER TO MASTER_HOST=''


3

मैं मास्टर-दास डेटा के किसी भी ओवरराइडिंग से बचने के लिए अपने 'mysqld' के तहत अपने कॉन्फिग फ़ाइल ('inetc/my.cnf' में स्किप-स्लेव-स्टार्ट-कमांड को बनाए रखने की सलाह दूंगा)। आपको एक उदाहरण देने के लिए- बादल के वातावरण में काम करते समय, मान लीजिए कि एक पुराना मास्टर क्रैश हो जाता है और फिर सफलतापूर्वक शुरू होता है जब आप अपने प्रदाता को जो भी मुद्दा ठीक करते हैं - पुराने दास (अब नया मास्टर) पुराने मास्टर से दोहराएगा, इससे पहले डेटा ओवरराइड करना डीबीए के पास इसे महसूस करने का मौका है।

BTW, यह गैर-क्लाउड वातावरण में भी प्रासंगिक है। यदि, मान लें कि, एक अन्य व्यवस्थापक पुराने मास्टर को बिना समन्वय के लाता है। इसके अलावा, एक और मुद्दा यह है कि 'स्किप-स्लेव-स्टार्ट' कमांड को बनाए रखना एक अच्छा विचार है, भले ही यह एक गुलाम हो - कोई स्वचालित प्रतिकृति नहीं है, जिसका अर्थ है कि आपके पास अप्रत्याशित परिणामों को रोकने पर अधिक नियंत्रण है। :)


उत्तर @Lena के लिए धन्यवाद। वह एक अच्छा विचार है। मैं इस पर गौर करूंगा।
ग्रे - एसओ बुराई को रोकना
हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.