MySQL प्रतिकृति कितनी तेज़ है?


19

मैं अपने mysql db की प्रतिकृति स्थापित करने पर विचार कर रहा हूं ताकि हमारे शाखा कार्यालयों में अनुप्रयोग प्रदर्शन (महत्वपूर्ण रूप से) में सुधार करने के लिए मुख्य कार्यालय में मास्टर होने के साथ-साथ हमारे प्रत्येक शाखा कार्यालयों में स्थानीय दास हो सकें।

डीबी अपने आप में इतना बड़ा नहीं है (<1gb) लेकिन मैं सोच रहा हूं; 200-300 रिकॉर्ड अपडेट / मिनट टॉप पर विचार: प्रतिकृति कितनी तेज़ है? (यह मानते हुए, पहले, एक 5 ग्राम जेनेरिक डीएसएल कनेक्शन, यदि आवश्यक हो तो तेजी से - लागत को यथासंभव कम रखने की कोशिश कर रहा है लेकिन पैसा अधिक है)

क्या पूरे टेबल को बैचों में दोहराया जाता है? क्या प्रतिकृति की मांग की गई है, क्योंकि तालिका में प्रत्येक रिकॉर्ड अपडेट किया गया है (डॉक्स से, मुझे लगता है कि मैं देख रहा हूं कि यह विन्यास योग्य है)?

टिप्पणियाँ:

  • मैं डॉक्स में के रूप में 1 मास्टर, 2 दास (अब के लिए 2 शाखा कार्यालय) सेटअप में सोच रहा हूँ यहाँ छोड़कर यह एक अनुप्रयोग, नहीं एक वेब ग्राहक है कि
  • मास्टर पर किए गए किसी भी अपडेट को दूसरे दासों को <10 मिनट में दोहराने की जरूरत है।
  • यह सब मानता है कि मैं अपने ओआरएम (डेवएक्सप्रेस एक्सपीओ) को दास से पढ़ने और मास्टर को लिखने की अवधारणा से खुश हो सकता हूं।

जवाबों:


21

MySQL प्रतिकृति, डिस्क और नेटवर्क I / O द्वारा सीमित के रूप में संभव के रूप में वास्तविक समय के करीब होती है। दास स्वामी के लिए एक सॉकेट खोलते हैं, जिसे खुला रखा जाता है। जब मास्टर पर कोई लेन-देन होता है, तो वह बिनलोग में दर्ज हो जाता है, और बस दास (ओं) पर दोबारा लिखा जाता है। यदि मास्टर और गुलाम के बीच सॉकेट बाधित हो जाता है, तो अगले सफल कनेक्शन पर दास के लिए बिनलॉग को फिर से दोहराया जाता है।

मल्टी-मास्टर प्रतिकृति एक ही काम करती है, लेकिन दोनों दिशाओं में।

कुछ बुनियादी गणनाएँ आपके बैंडविड्थ की जरूरतों का बेहतर निर्धारण करने में आपकी सहायता करेंगी।

Average transaction size * number of slaves * updates/minute = bandwidth needed

उम्मीद है की यह मदद करेगा।


4

दास पक्ष पर प्रतिकृति दो स्वतंत्र धागे द्वारा नियंत्रित की जाती है।

  • लॉग रीडर प्रक्रिया, जो मास्टर से जुड़ती है, प्रत्येक डेटा संशोधित विवरण प्राप्त करती है, इसे रिले लॉग में लिखती है।
  • एसक्यूएल लेखक प्रक्रिया, जो रिले लॉग से नए आइटम लेती है, दास डेटाबेस पर स्टेटमेंट्स भेजती है, फिर क्वेरी की प्राप्ति को इंगित करने के लिए उस स्टेटमेंट के पिछले स्लेव पॉइंटर को आगे बढ़ाती है।

प्रतिकृति विलंबता IO द्वारा सीमित है, सबसे पहले IO गुलाम डेटाबेस पर रिले लॉग से लेनदेन को लागू करने के लिए (जिसमें जटिल SQL क्वेरी शामिल हो सकती है) और दूसरा IO द्वारा मास्टर पर यह Binlog को पढ़ने और प्रत्येक दास को प्रेषित करने के लिए।

MySQL प्रतिकृति, क्वेरी क्षमता को बढ़ाती है, लेकिन क्वेरी लिखने के प्रदर्शन को नहीं बढ़ाती है, जो कि IO की गति पर आधारित है, जिसे मास्टर, और दास दोनों के द्विपद में प्रवाहित किया जा सकता है


3

MySQL में प्रतिकृति डेटा को प्राप्त करने के लिए बहुत तेज है (जितनी जल्दी आप UPDATEमास्टर को चलाने में सक्षम होंगे , और SELECTदास पर चलने के लिए दूसरी विंडो पर स्विच कर सकते हैं , यदि(और केवल अगर) नेटवर्क कनेक्शन सभी ऊपर हैं और सब कुछ ठीक चल रहा है। आपके नियमित छोटे प्रश्नों के सामान्य मामले के लिए कोई भी डीएसएल-क्लास कनेक्शन ठीक होना चाहिए, लेकिन बड़े इंसर्ट / अपडेट प्रश्नों को कॉपी करने में थोड़ा समय लग सकता है, और प्रतिकृति सामान की स्थिति में पुन: सिंक्रनाइज़ेशन (और MySQL के लिए शातिर होने का खतरा है) उन, दुर्भाग्य से) कुछ समय लगेगा (आपके संपूर्ण डेटाबेस को फिर से मास्टर से कॉपी करना)। आपके मास्टर पर resynchronisation के प्रभाव को सीमित करने के लिए ट्रिक्स हैं, जैसे कि आपके MySQL को LVM पर रखना ताकि आप बहुत जल्दी लॉक / स्नैपशॉट कर सकें और स्नैपशॉट सामग्री को दास पर rsync कर सकें, लेकिन अंततः एक रेसक्यूक्स चूसना करने जा रहा है।

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