5

पर लिखने का कहना है कि मेरे पास कारों का एक डाटाबेस है। मेरे पास मेक और मॉडल हैं (एफके बनाने के लिए)। मैं उपयोगकर्ताओं को अपनी कारों को ट्रैक करने की योजना बना रहा हूं। प्रत्येक कार में मॉडल के लिए एक एफके है। अब, मेरे पास बहुत सारे उपयोगकर्ता हैं, और मैं लोड वितरित करने के लिए अपने डेटाबेस को विभाजित करना चाहता हूं। बनाता है और मॉडल टेबल इतनी ज्यादा नहीं बदलते हैं, लेकिन उन्हें shards में साझा करने की आवश्यकता है। मेरा विचार है कि प्रत्येक गुलाम डेटाबेस में बनाता है और मॉडल के मास्टर डीबी से MySQL प्रतिकृति का उपयोग करना है। मेरा सवाल है: क्या मैं दास डेटाबेस को सुरक्षित रूप से लिख सकता हूं कि मैं मास्टर पर उन टेबलों पर नहीं लिखता हूं?MySQL: दास नोड

और विषय पर रहते हुए, क्या किसी दास डेटाबेस में नवीनतम डेटा की गारंटी देने के लिए वैसे भी है? उदाहरण के लिए, किसी ने अभी 'टॉरस' मेक जोड़ा है, और फिर अपनी कार जोड़ना चाहता है। क्या मैं यह सुनिश्चित कर सकता हूं कि वे जिस गुलाम डेटाबेस का उपयोग कर रहे हैं वह नवीनतम मास्टर डेटा है?

उत्तर

5

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

यह जांचने के लिए कि आपके पास नवीनतम डेटा है, SHOW SLAVE STATUS में फ़ील्ड Seconds_Behind_Master शामिल है जो आपको बताता है कि दास अद्यतित है या नहीं। जाहिर है आप इसे शून्य होना चाहते हैं। यह सुनिश्चित करने के लिए कि सम्मिलित और दोहराया गया डेटा मौजूद है, बेशक, आपको एक सेकंड और का इंतजार करना होगा, फिर देखें कि Seconds_Behind_Master शून्य है।

http://erlycoder.com/43/mysql-master-slave-and-master-master-replication-step-by-step-configuration-instructions-

MySQL मास्टर मास्टर प्रतिकृति और autoincrement अनुक्रमित

आप कर रहे हैं:

+0

करना आप जानते हैं कि मास्टर को सिंक करने के लिए अवरुद्ध कमांड है या नहीं? –

+0

नहीं है। (मास्टर से लोड डेटा को अनदेखा करना, जो आप जो चाहते हैं वह नहीं करता है, और वैसे भी टूट जाता है।) – chaos

+0

क्या कोई लेखन-माध्यम तंत्र है: दास सिर्फ लिखने के अनुरोध को मास्टर करने के लिए आगे बढ़ाता है? – Velkan

2

यह एक अच्छा समाधान है, जबकि

खोज रहा मुख्य बिंदु शामिल यहाँ के रूप में avilable मैं gleaned था मास्टर-गुलाम प्रतिकृति का उपयोग करके, संभवतः आप अपने आवेदन को मास्टर को लिखने और दास या कई गुलामों से पढ़ने का तरीका तैयार करेंगे। लेकिन जब आप मास्टर-मास्टर प्रतिकृति का उपयोग कर रहे हैं तो आप किसी भी मास्टर सर्वर को पढ़ने और लिखने जा रहे हैं। इसलिए, इस मामले में autoincremental इंडेक्स के साथ समस्या उठाएगा। जब दोनों सर्वरों को एक ही तालिका में एक रिकॉर्ड (प्रत्येक सर्वर को एक साथ अलग-अलग) जोड़ना होगा। प्रत्येक व्यक्ति उन्हें एक ही इंडेक्स असाइन करेगा और साल्वे में दोहराने की कोशिश करेगा, इससे टकराव पैदा होगा। सरल चाल MySQL सर्वर पर ऐसे टकराव से बचने की अनुमति देगी।

मास्टर 1/दास 2 ऐड पर /etc/my.cnf रहे हैं:

auto_increment_increment= 2 
auto_increment_offset = 1 

मास्टर पर 2/दास 1 ऐड /etc/my.cnf रहे हैं:

auto_increment_increment= 2 
auto_increment_offset = 2 
संबंधित मुद्दे