एक गुलाम, कई मास्टर्स MySql


9

क्या दो अलग-अलग आकाओं को सुनने के लिए एक दास के लिए MySql प्रतिकृति स्थापित करना संभव है?

जवाबों:


3

डिजाइन के अनुसार, एक mysqld प्रक्रिया एक साथ दो अलग-अलग मास्टर्स को नहीं सुन सकती है।

बदलें मास्टर आदेश केवल आपको पढ़ने के लिए एक स्रोत के रूप में एक मास्टर सेट करने की अनुमति देता है।

इसका अनुकरण करने के लिए, आपको वैकल्पिक रूप से दो मास्टर्स के बीच वैकल्पिक रूप से प्रोग्राम करना होगा। आप उसे कैसे करते हैं ?

मैंने StackOverflow में वर्णन किया है कि एक मास्टर्स को अलग-अलग मास्टर्स से कैसे कनेक्ट किया जाए जहां प्रत्येक मास्टर एक लैपटॉप था और स्लेव एक सेंट्रल कंप्यूटर था।

यहाँ मूल विचार है

  • मास्टर M1
  • मास्टर एम 2
  • दास S1

इस तरह M1 से S1 और फिर M2 से S1 का सेटअप रिप्लेसमेंट

  • 1) स्रोत के रूप में M1 के साथ S1 चेंज मास्टर को चलाएं
  • 2) स्टार्ट SLAVE;
  • 3) थोड़ी देर के लिए प्रतिकृति चलाएँ
  • 4) बंद करो;
  • 5) स्रोत के रूप में M2 के साथ S1 चेंज मास्टर को चलाएं
  • 6) स्टार्ट स्लेव;
  • 7) थोड़ी देर के लिए प्रतिकृति चलाएँ
  • 8) बंद करो;
  • 9) चरण 1 पर वापस जाएं

हर बार जब आप एक मास्टर से दूसरे में स्विच करते हैं, तो आपको दो मान रिकॉर्ड करने होंगे SHOW SLAVE STATUS\G

  1. Relay_Master_Log_file
  2. Exec_Master_Log_Pos

ये दो मान अंतिम SQL स्टेटमेंट का प्रतिनिधित्व करते हैं जो मास्टर से आया था और दास पर निष्पादित होने के बगल में है।

एक बड़ी सावधानी है: जब तक एम 1 और एम 2 पारस्परिक रूप से अनन्य डेटाबेस को अपडेट कर रहे हैं, तब तक यह एल्गोरिदम ठीक होना चाहिए।

मानो या न मानो, मैंने मई 2011 में सर्वरफॉल्ट में इस तरह के एक सवाल को संबोधित किया। मैंने वास्तव में "हाई परफॉर्मेंस MySQL" पुस्तक के आधार पर ब्लैकहोल स्टोरेज इंजन का उपयोग करके सच मल्टीमास्टर / सिंगल स्लेव का अनुकरण करने का तरीका बताया।


हालाँकि मुझे वास्तव में अभी तक इसकी आवश्यकता नहीं है, फिर भी मैं इस मुद्दे के बारे में पहले से सोच रहा हूँ। क्या मूल रूप से दूसरे मास्टर के बिनलॉग को mysql गुलाम बनाना संभव नहीं होगा? मुझे लगता है कि सबसे अच्छी बात यह होगी कि एक उपकरण होगा जो प्रत्येक क्वेरी के परिणामों पर भी नज़र रखता है और सामान्य प्रतिकृति-गुलाम धागे की तरह एक त्रुटि पर रुक जाता है। लेकिन संक्षेप में एक साधारण पाइप भी करना चाहिए। बेशक एक ही डेटाबेस / टेबल पर लिखने वाले दोनों स्वामी जल्दी से मुश्किल हो जाएंगे। तुम्हारे लिए कुछ गुरु के बारे में विचार करना है?
Jannes

1
मुझे लगता है कि यह आपके जवाब में जोड़ने लायक है कि भले ही MySQL 5.6 ऐसा नहीं करता है, कि 5.7 कई स्वामी का समर्थन करेगा।
फिल सुमेर

4

रोलांडो के समाधान में कई गुच्छे हैं। पहले एक प्रतिकृति धारा होना आवश्यक नहीं है जबकि दूसरा काम करता है। यह आपको समय की अवधि देने जा रहा है, जहां आपका दास समय से पहले खत्म हो जाता है। अब आपको यह सुनिश्चित करने के लिए एक नाजुक संतुलन अधिनियम खेलना होगा कि प्रत्येक के पास "टर्न" होने पर पकड़ने के लिए पर्याप्त समय हो।

जैसा कि आपको बताया गया है कि आपको वापस जाने के लिए लॉग पोजीशन के बुक कीपर की भूमिका निभानी होगी। यह वास्तव में सिर्फ छोटी गाड़ी लगती है, लापता या असंगत डेटा के लिए विंडो खोलना या यहां तक ​​कि जब यह गलत हो जाता है तब भी प्रतिकृति को तोड़ना (या तो लॉग पोजीशन में 'एक गलती से भी' बंद हो जाना)

मैं सिर्फ कई mysql इंस्टेंस चलाने की सलाह दूंगा। एक ही मशीन पर दो या दो से अधिक mysql चलाने से आपको कुछ भी नहीं रोक रहा है। वे दोनों पाठ्यक्रम के एक ही बंदरगाह पर काम नहीं कर सकते। मैं वास्तव में इसे एक समस्या के रूप में नहीं देखता, हालांकि हर ग्राहक और पुस्तकालय आपको 3306 के अलावा कुछ और निर्दिष्ट करने की अनुमति देता है।

बस पोर्ट = 3307 निर्दिष्ट करें (या .cnf फ़ाइलों में से किसी एक में)।

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

इस तरह से आपके पास केवल दो प्रतिकृति स्ट्रीम एक ही सर्वर में चल रही हैं; पीछे कभी नहीं, कोई किताब रखने की आवश्यकता नहीं, कोई "स्वैपिंग" स्क्रिप्ट की आवश्यकता नहीं।


मुझे खुशी है कि कोई बहीखाता पागलपन को समझता है। साथ ही अच्छा जवाब दिया। +1 !!!
रोलेंडोमीक्यूडीबीए


0

MariaDB जिसका उपयोग MySql के लिए इनप्लेस रिप्लेसमेंट के रूप में किया जा सकता है। यह संस्करण 10.2 से इसका समर्थन करता है

मैसूर 5.7 समर्थन के साथ समस्या GTID की आवश्यकता है, जिसका अर्थ है कि मास्टर MUST को भी बदला जाना चाहिए, मारियाडब के मामले में यह मामला नहीं है।

उदाहरण / HowTo लिंक: http://www.skysql.com/blogs/dean-ellis/multi-source-replication-mariadb-100

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