मैं क्लाइंट पीसी (विन) पर चलने के लिए एक एप्लिकेशन विकसित कर रहा हूं जिसे MySQL सर्वर 5.1 इंस्टेंस के साथ कॉन्फ़िगर किया गया है जो रिमोट मास्टर को रीड-ओनली स्लेव के रूप में कार्य करेगा। दूरस्थ मास्टर के पास दर्जनों स्कीमा होते हैं, लेकिन मुझे केवल एक क्लाइंट की आवश्यकता होती है, इसलिए मैं my.ini में प्रतिकृति-डो-डीबी सेटिंग की आपूर्ति करता हूं ताकि ग्राहक को केवल स्कीमा की आवश्यकता हो। प्रतिकृति काम करती है, लेकिन जब हमारे ग्राहक दुनिया के उन क्षेत्रों में पहुंचते हैं जहां इंटरनेट एक्सेस केवल 3 जी वायरलेस के माध्यम से उपलब्ध है, जो डेटा उपयोग द्वारा चार्ज करते हैं, तो वे जल्दी से अपनी डेटा योजना की सीमा से अधिक हो जाते हैं और महंगी समस्याओं में भाग लेते हैं।
जैसा कि मैं इसे समझता हूं, MySQL सभी स्कीमाओं के लिए सभी लेन-देन को एक सिंगल बिनलॉग फ़ाइल में लिखता है, जिसका अर्थ है कि प्रत्येक क्लाइंट को मास्टर पर प्रत्येक स्कीमा पर किए गए सभी लेन-देन को डाउनलोड करना होगा, फिर एक बार डाउनलोड किया गया, प्रति प्रतिकृति डेटाबेस फ़िल्टर लागू करें- ग्राहक की my.ini फ़ाइल में do-db सेटिंग्स।
इस अक्षमता को कम करने के लिए मैंने slave_compressed_protocol = 1 सेटिंग को नियोजित किया है , जो संचारित डेटा को 50% तक कम करता है, लेकिन फिर भी हमारे ग्राहक के 3 जी बिल तक उनके डेटा सीमा रैक को जल्दी से पार करने का कारण बनता है।
मैं कल्पना नहीं कर सकता कि मैं केवल इसका सामना कर रहा हूं, इसलिए मुझे यकीन है कि मुझे x = y की स्थापना करके इसे प्राप्त करने के बारे में एक टन उत्तर मिलेगा। हालाँकि, मुझे ऐसी किसी भी सेटिंग का कोई दस्तावेज नहीं मिल सकता है, न ही लेने के लिए कोई अनुशंसित तरीका।
अब तक, यहां एक संभावित समाधान के बारे में मेरा विचार है, कृपया प्रतिक्रिया या वैकल्पिक मार्ग प्रदान करें:
- प्रत्येक स्कीमा के लिए एक "प्रॉक्सी" गुलाम सेट करें (अलग बॉक्स पर, या उसी बॉक्स में एक अलग MySQL उदाहरण / पोर्ट के साथ)
- क्लाइंट को दोहराने के लिए केवल एक डेटाबेस को दोहराने के लिए प्रॉक्सी स्लेव को कॉन्फ़िगर करें।
- क्लाइंट के MySQL इंस्टेंस को दास के रूप में उपयुक्त प्रॉक्सी स्लेव में कॉन्फ़िगर करें।
इसके परिणामस्वरूप क्लाइंट को केवल उनके स्कीमा के लिए बिनलॉग डेटा खींचना चाहिए । नकारात्मक पक्ष (जहां तक मैं बता सकता हूं) यह है कि यह नाटकीय रूप से हमारे सेटअप की जटिलता को बढ़ाता है, संभवतः इसे और अधिक नाजुक बनाता है।
विचार? क्या यह दृष्टिकोण भी काम करेगा?
ध्यान दें, हम RedHat पर MySQL 5.0 सर्वर चला रहे हैं, लेकिन यदि यह समाधान तैयार करता है तो हम 5.5 में अपग्रेड कर सकते हैं।