क्या एक MySQL प्रतिकृति दास को केवल पढ़ने के लिए सेट किया जाना चाहिए?


22

मैं इस गाइड का पालन ​​करके Percona सर्वर 5.5 पर चल रहा है और मुझे लगता है कि अगर मैं read-only=1अपने गुलाम को जोड़ने के my.cnfलिए इसे केवल पढ़ने के लिए जोड़ना चाहिए ?

गाइड mysql तालिका के लिए प्रतिकृति सेट करता है ताकि उपयोगकर्ताओं को दोहराया जाता है, लेकिन मैं मुख्य रूप से mysqldumps लेने के लिए दास का उपयोग कर रहा हूं, एक आपातकालीन स्थिति में इसे मास्टर करने के लिए पुन: उपयोग कर रहा है, इसलिए मुझे विश्वास नहीं है कि हमें ज़रूरत है (या मुझे लिखना चाहिए) सक्षम होना चाहिए यह लगातार है?


+1 को अक्सर दासों को केवल पढ़ने के लिए अनुस्मारक की अनदेखी के लिए।
RolandoMySQLDBA

जवाबों:


31

जब एक गुलाम केवल पढ़ने के लिए होता है , तो यह दुनिया से 100% परिरक्षित नहीं होता है।

MySQL प्रलेखन के अनुसार पर read-only

यह चर डिफ़ॉल्ट रूप से बंद है। जब इसे सक्षम किया जाता है, तो सर्वर उन उपयोगकर्ताओं को छोड़कर कोई अपडेट नहीं देता है, जिनके पास स्लीव थ्रेड द्वारा किए गए अपडेट से SUPER विशेषाधिकार या (दास सर्वर पर) है। प्रतिकृति सेटअपों में, दास सर्वर पर read_only को सक्षम करने के लिए उपयोगी हो सकता है ताकि यह सुनिश्चित हो सके कि दास केवल मास्टर सर्वर से अपडेट स्वीकार करते हैं और ग्राहकों से नहीं।

इस प्रकार, सुपर विशेषाधिकार वाले कोई भी व्यक्ति ऐसे दास के लिए वसीयत में पढ़ और लिख सकता है ...

सुनिश्चित करें कि सभी गैर-विशेषाधिकार प्राप्त उपयोगकर्ताओं के पास सुपर विशेषाधिकार नहीं है।

यदि आप एक शॉट में सभी सुपर विशेषाधिकारों को रद्द करना चाहते हैं, तो कृपया इसे मास्टर और दास पर चलाएं:

UPDATE mysql.user SET super_priv='N' WHERE user<>'root';
FLUSH PRIVILEGES;

स्लेव के संदर्भ में, यह सुपर विशेषाधिकार को आरक्षित करेगा rootऔर गैर-विशेषाधिकार प्राप्त लोगों को ऐसा करने से रोकेगा जो उन्हें अन्यथा प्रतिबंधित किया जाएगा।

UPDATE 2015-08-28 17:39 EDT

मुझे अभी हाल ही में पता चला है कि MySQL 5.7 super_read_only को पेश करेगा

यह उनके ट्रैक में SUPER उपयोगकर्ताओं को रोक देगा क्योंकि 5.7 डॉक्स का कहना है

यदि read_only सिस्टम वैरिएबल सक्षम है, तो सर्वर केवल उन ग्राहकों से क्लाइंट अपडेट की अनुमति देता है जिनके पास SUPER विशेषाधिकार है। यदि super_read_only सिस्टम वैरिएबल भी सक्षम है, तो सर्वर उन ग्राहकों से भी क्लाइंट अपडेट को प्रतिबंधित करता है जिनके पास SUPER है। रीड-ओनली मोड के विवरण के लिए read_only सिस्टम वैरिएबल का विवरण देखें और read_only और super_read_only इंटरेक्शन कैसे करें के बारे में जानकारी।

एक मास्टर सर्वर पर super_read_only में परिवर्तन गुलाम सर्वर को दोहराया नहीं जाता है। मूल्य मास्टर पर सेटिंग से स्वतंत्र एक दास सर्वर पर सेट किया जा सकता है।

super_read_only को MySQL 5.7.8 में जोड़ा गया था।


1
तो गुलामों को पढ़ा-लिखा बनाना ही सबसे अच्छा काम है?
xref

6
हां, ऐसा करना सबसे अच्छा अभ्यास है
RolandoMySQLDBA

1
मैं केवल पढ़ने के विकल्प के साथ परिचालन डेटाबेस से एकत्रित डेटा के साथ दास पर रिपोर्टिंग डेटाबेस का उपयोग कैसे कर सकता हूं?
गीनी

3

क्या एक MySQL प्रतिकृति दास को केवल पढ़ने के लिए सेट किया जाना चाहिए?

हाँ, आप आर / ओ मोड उपलब्ध के साथ बेहतर तरीके से दास सर्वर चलाएंगे । पहले के विशेषाधिकार प्राप्त उपयोगकर्ता इस तरह के डेटा को किसी भी तरह से संशोधित कर सकते थे, लेकिन बाद में उन्हें अपना आर / ओ प्रतिबंध "गांठ" भी मिला।

यह महत्वपूर्ण क्यों है - यह अनुचित लिखने के साथ पछतावा लिखने की तुलना में बेहतर असफल है, जो सरल डेटा के कारण प्रभावी रूप से गुलाम को प्रस्तुत कर सकता है या कुंजी संघर्ष जैसी चीजें जो प्रतिकृति तोड़ सकती हैं (फिर से वास्तविक दास नहीं)।

ऑर्केस्ट्रेशन / लोड विभाजन के लिए उपयोग किए जाने वाले सॉफ़्टवेयर भी हैं जो उन सर्वरों में उचित मार्ग अनुरोध के लिए कॉन्फ़िगर किए गए पूलों में सर्वर के आर / ओ स्थिति पर विचार करेंगे।

यह सुरक्षा है। इसका इस्तेमाल करें।


1

यहाँ समस्या, MySQL 8.0 शामिल है, यह है कि read_only = ONजब आप start slaveकमांड निष्पादित करते हैं तो MySQL आपको सेट करने के लिए मजबूर नहीं करता है । क्यों एक समस्या है? क्योंकि लगभग सभी MySQL DBA डेटा भ्रष्टाचार को रोकने के लिए RO पर अपने दासों का उपयोग करते हैं, और हमेशा एक dba मौजूद होता है जो गलती से एक SQL जो दास पर डेटा को संशोधित करता है, या एक ऐसा ऐप चलता है, जो उसका आत्मविश्वास नहीं बदलेगा। अगर मैं गुलामों पर लिखना चाहता हूं, क्योंकि इसमें कई स्कीमा हैं और मुझे इस स्कीमा पर लिखने की ज़रूरत है, इसलिए read_onlyकमांड को अधिक बुद्धिमान होना चाहिए, और हमें एक करना चाहिए read_only for schema। मल्टी-मास्टर सर्वर और गुलामों पर बहुत उपयोगी हो सकता है Replicate_Ignore_DB। तो, अब के लिए, आपको मैन्युअल रूप से नियंत्रण करना चाहिए और बहुत ही लापरवाह होना चाहिए।

का आनंद लें।

हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.