जवाबों:
डिजाइन के अनुसार, एक mysqld प्रक्रिया एक साथ दो अलग-अलग मास्टर्स को नहीं सुन सकती है।
बदलें मास्टर आदेश केवल आपको पढ़ने के लिए एक स्रोत के रूप में एक मास्टर सेट करने की अनुमति देता है।
इसका अनुकरण करने के लिए, आपको वैकल्पिक रूप से दो मास्टर्स के बीच वैकल्पिक रूप से प्रोग्राम करना होगा। आप उसे कैसे करते हैं ?
यहाँ मूल विचार है
इस तरह M1 से S1 और फिर M2 से S1 का सेटअप रिप्लेसमेंट
हर बार जब आप एक मास्टर से दूसरे में स्विच करते हैं, तो आपको दो मान रिकॉर्ड करने होंगे SHOW SLAVE STATUS\G
ये दो मान अंतिम SQL स्टेटमेंट का प्रतिनिधित्व करते हैं जो मास्टर से आया था और दास पर निष्पादित होने के बगल में है।
एक बड़ी सावधानी है: जब तक एम 1 और एम 2 पारस्परिक रूप से अनन्य डेटाबेस को अपडेट कर रहे हैं, तब तक यह एल्गोरिदम ठीक होना चाहिए।
रोलांडो के समाधान में कई गुच्छे हैं। पहले एक प्रतिकृति धारा होना आवश्यक नहीं है जबकि दूसरा काम करता है। यह आपको समय की अवधि देने जा रहा है, जहां आपका दास समय से पहले खत्म हो जाता है। अब आपको यह सुनिश्चित करने के लिए एक नाजुक संतुलन अधिनियम खेलना होगा कि प्रत्येक के पास "टर्न" होने पर पकड़ने के लिए पर्याप्त समय हो।
जैसा कि आपको बताया गया है कि आपको वापस जाने के लिए लॉग पोजीशन के बुक कीपर की भूमिका निभानी होगी। यह वास्तव में सिर्फ छोटी गाड़ी लगती है, लापता या असंगत डेटा के लिए विंडो खोलना या यहां तक कि जब यह गलत हो जाता है तब भी प्रतिकृति को तोड़ना (या तो लॉग पोजीशन में 'एक गलती से भी' बंद हो जाना)
मैं सिर्फ कई mysql इंस्टेंस चलाने की सलाह दूंगा। एक ही मशीन पर दो या दो से अधिक mysql चलाने से आपको कुछ भी नहीं रोक रहा है। वे दोनों पाठ्यक्रम के एक ही बंदरगाह पर काम नहीं कर सकते। मैं वास्तव में इसे एक समस्या के रूप में नहीं देखता, हालांकि हर ग्राहक और पुस्तकालय आपको 3306 के अलावा कुछ और निर्दिष्ट करने की अनुमति देता है।
बस पोर्ट = 3307 निर्दिष्ट करें (या .cnf फ़ाइलों में से किसी एक में)।
आप व्यक्तिगत रूप से कॉन्फ़िगर किए गए बफर पूल को सुनिश्चित करने में भी ध्यान रखना चाहेंगे और अन्य मेमोरी कॉन्फ़िगरेशन एक-दूसरे के साथ नहीं हैं। यह वास्तव में एक लाभ है, क्योंकि आप उन सेटिंग्स को व्यक्तिगत डेटाबेस की विशिष्ट आवश्यकताओं के लिए अधिक सूक्ष्म रूप से ट्यून कर सकते हैं जिन्हें दोहराया जा रहा है।
इस तरह से आपके पास केवल दो प्रतिकृति स्ट्रीम एक ही सर्वर में चल रही हैं; पीछे कभी नहीं, कोई किताब रखने की आवश्यकता नहीं, कोई "स्वैपिंग" स्क्रिप्ट की आवश्यकता नहीं।
MySQL 5.7 से फैन इन (मल्टी-सोर्स प्रतिकृति) का समर्थन किया जाएगा।
यहाँ एक लैब रिलीज़ उपलब्ध है: http://labs.mysql.com/
MariaDB जिसका उपयोग MySql के लिए इनप्लेस रिप्लेसमेंट के रूप में किया जा सकता है। यह संस्करण 10.2 से इसका समर्थन करता है
मैसूर 5.7 समर्थन के साथ समस्या GTID की आवश्यकता है, जिसका अर्थ है कि मास्टर MUST को भी बदला जाना चाहिए, मारियाडब के मामले में यह मामला नहीं है।
उदाहरण / HowTo लिंक: http://www.skysql.com/blogs/dean-ellis/multi-source-replication-mariadb-100