दास
यदि आपके दास परास्नातक नहीं हैं, तो दासों को बाइनरी लॉगिंग की बिल्कुल भी आवश्यकता नहीं है। आप एक दास द्वारा संचित रिले लॉग स्थान की मात्रा पर एक टोपी लगा सकते हैं। 4 जी पर रिले लॉग को थ्रॉटल करने के लिए, relay_log_space_limit
प्रत्येक स्लेव पर /etc/my/.cnf को जोड़ें
[mysqld]
relay_log_space_limit=4G
और mysql को पुनरारंभ करें
यदि आप इसे सेट नहीं कर सकते हैं, तो कम से कम आपके पास कुछ प्रकार की सतर्कता होनी चाहिए जो कि (रीलों लॉग द्वारा खपत कुल बाइट्स) SHOW SLAVE STATUS\G
के मूल्य को Relay_Log_Space
जांचती है।
गुरुजी
मास्टर के रूप में, आप expire_logs_days
1 पर सेट कर सकते हैं , लेकिन मेरे लिए आपके लिए एक गंभीर चेतावनी है ...
यदि प्रतिकृति टूट जाती है, तो आपके पास इसे ठीक करने के लिए 1 दिन है। अन्यथा, मास्टर पर एक द्विआधारी लॉग दूर घूम सकता है और आप वास्तविक प्रतिकृति को कमांड करने के लिए कोई भी चेंज मास्टर नहीं चला सकते हैं। मैं expire_logs_days
मास्टर पर 3 पर छोड़ दूँगा ।
शुक्रिया # 1
यदि आपके पास करने के लिए कोई रातोंरात थोक प्रसंस्करण है, तो शायद SET SQL_LOG_BIN=0;
सत्र की शुरुआत में मास्टर पर बल्क प्रक्रियाएं चलाएं । यह, निश्चित रूप से, दास की नकल नहीं करेगा। आप दोनों गुलामों के समांतर एक ही बल्क लोड कर सकते हैं।
शुक्रिया # 2
एक और चीज जो आप मास्टर बाइनरी लॉग्स के प्रबंधन के लिए कर सकते हैं वह है संचय।
SHOW SLAVE STATUS\G
दोनों गुलामों पर भागो । को देखो Relay_Master_Log_File
। यह मास्टर पर बाइनरी लॉग का प्रतिनिधित्व करता है जिसका अंतिम आदेश दास पर निष्पादित किया गया था।
*************************** 1. row ***************************
Slave_IO_State: Waiting for master to send event
Master_Host: 10.4.92.250
Master_User: replicant
Master_Port: 3306
Connect_Retry: 60
Master_Log_File: mysql-bin.009677
Read_Master_Log_Pos: 855227755
Relay_Log_File: relay-bin.000674
Relay_Log_Pos: 757296783
Relay_Master_Log_File: mysql-bin.009590
Slave_IO_Running: Yes
Slave_SQL_Running: Yes
Replicate_Do_DB:
Replicate_Ignore_DB:
Replicate_Do_Table:
Replicate_Ignore_Table:
Replicate_Wild_Do_Table:
Replicate_Wild_Ignore_Table:
Last_Errno: 0
Last_Error:
Skip_Counter: 0
Exec_Master_Log_Pos: 757296646
Relay_Log_Space: 94274010765
Until_Condition: None
Until_Log_File:
Until_Log_Pos: 0
Master_SSL_Allowed: No
Master_SSL_CA_File:
Master_SSL_CA_Path:
Master_SSL_Cert:
Master_SSL_Cipher:
Master_SSL_Key:
Seconds_Behind_Master: 80561
1 row in set (0.00 sec)
इस उदाहरण में, Relay_Master_Log_File mysql-bin.009590 है। इससे पहले कि सभी बाइनरी लॉग्स को मास्टर से हटाया जा सकता है। आप इसे मास्टर पर चला सकते हैं:
PURGE BINARY LOGS TO 'mysql-bin.009590';
यह पुराने लॉग मिटा देगा और अभी भी टैक में प्रतिकृति छोड़ देगा।
चेतावनी
बाइनरी लॉग्स फाइलें हैं जो क्रमिक रूप से संकलित करती हैं (एक फीफो कतार की तरह) सभी SQL लेनदेन या एक पंक्ति परिवर्तन के रूप में SQL लेनदेन को पूरा करती हैं। रिले लॉग एक फाइल है जो एक दूरस्थ सर्वर (उर्फ मास्टर) से बाइनरी लॉग प्रविष्टियों को इकट्ठा करता है।
MySQL प्रतिकृति में
- मास्टर को अपने बाइनरी लॉग को सक्षम करना होगा
- गुलाम रिले लॉग का संकलन करता है
- जब रिले लॉग में सभी SQL को संसाधित किया जाता है, तो इसे हटा दिया जाता है
- एक गुलाम पर, जब एक डीबी सर्वर पर एक रिले लॉग अधिक होता है, तो यह संकेत दे सकता है कि प्रतिकृति पीछे गिर रही है क्योंकि आईओ थ्रेड एसक्यूएल को एक मास्टर से तेजी से इकट्ठा कर रहा है कि SQL धागा रिले लॉग को संसाधित कर सकता है।
- Relay_log_space_limit का उपयोग करके प्रतिकृति को जमा होने से और संभावित रूप से डिस्क को भरने से रोकता है। नियम # 3 के आधार पर रिले लॉग आउट हो जाते हैं
- DB सर्वर के लिए मास्टर और स्लेव दोनों होना संभव है। यही एकमात्र परिस्थिति है जिसके तहत एक दास को बाइनरी लॉग सक्षम होना चाहिए। उस परिदृश्य में, एक DB सर्वर में बाइनरी लॉग और रिले लॉग दोनों होंगे।
यदि आप एक दास के लिए असफल हैं, और आप इसे एक मास्टर बनाना चाहते हैं
- सेवा mysql बंद करो
log-bin=mysql-bin
दास पर /etc/my.cnf को जोड़ें
- सेवा mysql प्रारंभ
आपको अन्य गुलामों के प्रतिकृति को नए पदोन्नत किए गए मास्टर पर सेट करना होगा और यह सुनिश्चित करना होगा कि गुलाम का डेटा नए पदोन्नत मास्टर के साथ मेल खाता है।
अद्यतन 2012-08-13 17:47 EDT
विकल्प पर MySQL प्रलेखन केrelay-log
अनुसार , आपको इसे परिभाषित करना चाहिए। यहाँ क्यों है:
जिस तरह से MySQL सर्वर विकल्पों को पार्स करता है, यदि आप इस विकल्प को निर्दिष्ट करते हैं, तो आपको एक मूल्य प्रदान करना चाहिए; डिफ़ॉल्ट बेसनेम का उपयोग केवल तभी किया जाता है जब विकल्प वास्तव में निर्दिष्ट नहीं होता है। यदि आप मूल्य निर्दिष्ट किए बिना --relay- लॉग विकल्प का उपयोग करते हैं, तो अप्रत्याशित व्यवहार के परिणामस्वरूप होने की संभावना है; यह व्यवहार उपयोग किए गए अन्य विकल्पों पर निर्भर करता है, जिस क्रम में वे निर्दिष्ट किए गए हैं, और क्या वे कमांड लाइन पर या एक विकल्प फ़ाइल में निर्दिष्ट हैं। MySQL सर्वर विकल्प को कैसे संभालता है, इस बारे में अधिक जानकारी के लिए, धारा 4.2.3, "प्रोग्राम विकल्प निर्दिष्ट करना" देखें।