2009-04-24 9 views
24

मेरे पास एक वेब ऐप चल रहा है LAMP। हमने हाल ही में लोड में वृद्धि की है और अब स्केल के समाधान की तलाश में है। स्केलिंग अपाचे बहुत आसान है, हम अभी भी कई एकाधिक मशीनों को होस्ट कर रहे हैं और इनकमिंग यातायात के चारों ओर रॉबिन राउंड कर रहे हैं।एकाधिक मशीनों के साथ MySQL को स्केल कैसे करें?

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

पीएस। हमारे पास लगभग 1: 1 रीड-राइट अनुपात है।

उत्तर

21

केवल दो रणनीतियों हैं: प्रतिकृति और sharding। प्रतिकृति अक्सर तब होती है जब आपके पास कम लिखने और अधिक पढ़ने वाले ट्रैफ़िक होते हैं, इसलिए आप समय के साथ कई प्रतिकृति यातायात के पतन और असंगतता की संभावना के साथ कई दासों को पढ़ सकते हैं।

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

दस्तावेज़ उन्मुख डेटाबेस या कॉलम स्टोर आपके लिए यह काम करते हैं, लेकिन वर्तमान में वे ओएलएपी के लिए ओएलएपी के लिए अनुकूलित नहीं हैं।

5

आपको नहीं लगता कि प्रतिकृति इष्टतम रणनीति नहीं है, लेकिन इस link पर एक नज़र डालें जो कई मशीनों में लोड को संतुलित करने में मदद के लिए प्रतिकृति का उपयोग करने के लिए एक काफी सरल और सीधा युक्ति प्रदान करता है।

+0

लिंक टूटा हुआ है। – sunnyrjuneja

+0

लिंक –

+1

टूटी हुई लिंक ब्रो अपडेट करें .. – tesmojones

0

आवेदन बैकएंड पर निर्भर करता है (यानी पीके, लेनदेन और सम्मिलित आईडी कैसे प्रबंधित किए जाते हैं), आप अलग-अलग auto_increment सेटअप के साथ मास्टर-मास्टर प्रतिकृति पर विचार कर सकते हैं। यह मुश्किल हो सकता है और पूरी तरह से परीक्षण किया जाना चाहिए लेकिन यह काम कर सकता है।

इसके अलावा, नए MySQL 5.6 में एक जीटीआईडी ​​(ग्लोबल ट्रांजैक्शन आइडेंटिफायर) है जो आम तौर पर इस परिदृश्य में प्रतिकृति को सिंक में रखने में बहुत मदद करता है।

0

अच्छा ... शुभकामनाएं उन सभी को वास्तविक बड़े पैमाने पर लिखती हैं। डेटाबेस इंजन बाधा बन जाता है, बहुत सारे ताले और बफर एमजीएमटी और सामान ...

एकमात्र तरीका जो मैंने पाया है कि वास्तव में काम करता है वह स्केल आउट हो रहा है, दुर्भाग्यवश दुर्भाग्य से शेडिंग MySQL "बॉक्स से बाहर" के लिए प्रदान नहीं की जाती है (मोंगो जैसे कुछ नोएसक्यूएल में)। ScaleBase (अस्वीकरण: मैं वहां काम करता हूं) यदि आप चाहें तो एक पूर्ण स्केल-आउट समाधान "स्वचालित शेरिंग मशीन" का निर्माता है। ScaleBae आपके डेटा और SQL स्ट्रीम का विश्लेषण करता है, डीबी नोड्स, रूट कमांड और समेकित परिणामों में डेटा को रनटाइम में विभाजित करता है - इसलिए आपको यह नहीं करना होगा!

 संबंधित मुद्दे

  • कोई संबंधित समस्या नहीं^_^