मैं सामान्य रूप से एक बड़ा एडब्ल्यूएस प्रशंसक हूं ... लेकिन आरडीएस, इतना नहीं।
@RolandoMySQLDBA ने बताया कि इसके खिलाफ कुछ बहुत अच्छे अंक हैं।
EC2 पर MySQL की तुलना में RDS में मुझे जो एकमात्र फायदा दिखाई दे रहा है, वह है बिंदु पर क्लिक करने और स्नैपशॉट, क्लोन और पॉइंट-इन-टाइम रिकवरी करने की क्षमता, लेकिन ये नियंत्रण और लचीलेपन के नुकसान के लिए पर्याप्त नहीं हैं सबसे निश्चित रूप से कीमत अधिक होने का औचित्य नहीं है। आरडीएस कुछ मायनों में सेक्सी है, लेकिन आप अंततः उस पर भरोसा नहीं कर सकते हैं जो आप अंततः ठीक नहीं कर सकते हैं, क्योंकि आप सभी चलने वाले हिस्सों को नहीं प्राप्त कर सकते हैं।
मुझे SUPER
विशेषाधिकार नहीं पसंद है । मुझे त्रुटि लॉग को पूंछने में सक्षम नहीं होना पसंद है। मुझे यह पसंद नहीं है कि मैं अपने डेटाबेस सर्वर पर "टॉप" या "आईओस्टाट" को चलाने में सक्षम नहीं हूं, यह देखने के लिए कि कोर और ड्राइव कैसे लोड का आनंद ले रहे हैं। मुझे फेडरेटेड स्टोरेज इंजन तक पहुँच प्राप्त करना पसंद नहीं है। मुझे एक हॉट स्टैंडबाय (मल्टी-एज़ेड) बैकअप मास्टर मशीन के लिए भुगतान करने का विचार पसंद नहीं है जिसे मैं पढ़ी गई प्रतिकृति के रूप में भी नहीं ले सकता। यकीन है, पूरी तरह से उचित स्पष्टीकरण हैं कि क्यों इन सभी बाधाओं को MySQL के लिए सफलतापूर्वक पैक किया जाना है और RDBMS-in-the-box के रूप में बेचा जाना है। केवल एक चीज है, आरडीबीएमएस-इन-द-बॉक्स समस्याओं की एक पूरी श्रृंखला "हल करता है" मेरे पास नहीं है ... और मेरे रास्ते में हो जाता है, जिससे नई समस्याएं पैदा होती हैं।
लेकिन आरडीएस के साथ मेरे लिए पूर्ण सौदा-ब्रेकर बाइनरी लॉग और प्रतिकृति तक पहुंच की पूर्ण कमी है। Binlogs, विशेष रूप से पंक्ति-आधारित, मामूली आपदाओं के लिए एक शानदार पुनर्प्राप्ति उपकरण हैं, लेकिन यदि आप उन तक पहुंच नहीं कर सकते हैं तो वे आपकी कोई मदद नहीं करेंगे। आरडीएस में अपने उत्पादन डेटाबेस के पढ़ने-प्रतिकृति के रूप में अपने कार्यालय में एक ऑन-प्रिमाइसेस सर्वर को कॉन्फ़िगर करना चाहते हैं? स्थानीय बैकअप लेने के लिए कुछ, रिपोर्टिंग करते हैं, आपदा वसूली के लिए हाथ में है क्या आपके डेटा में कुछ ऐसा नहीं हो सकता है जो आरडीएस में रहता है? यह एक ऐसा विचार है जो एक साथ स्पष्ट और शानदार है।
ओह, क्षमा करें, प्रतिकृति तक सीधी पहुंच उपलब्ध नहीं है। ज़रूर, आप पढ़े हुए प्रतिकृतियों के लिए भुगतान कर सकते हैं ... लेकिन केवल अन्य आरडीएस उदाहरणों के रूप में। मेरी पुस्तक में कोई मूल्य प्रस्ताव नहीं है।
अपडेट: MySQL 5.6 के लिए RDS में एक महत्वपूर्ण बदलाव
मैं अभी भी अपने स्वयं के सर्वर (EC2 में भी) चल रहा के रूप में कई कारणों से के लिए आरडीएस चल रहा है, के लिए समर्थन की कमी सहित करने का विरोध पसंद करते हैं उपयोगकर्ता-परिभाषित प्रकार्य , उपयोग करने के लिए असमर्थता संघीय स्टोरेज इंजन , और अक्षमता के लिए एक आपातकालीन पहुँच के लिए अतिरिक्त कनेक्शन उपलब्ध है ... हालाँकि ...
अमेज़ॅन ने आरडीएस के लिए MySQL 5.6 में एक महत्वपूर्ण परिवर्तन किया है जो मेरी एक बड़ी आपत्ति को समाप्त करता है - शायद मेरी सबसे बड़ी आपत्ति: बाइनरी लॉग अब सुलभ हैं और आप ग़ैर-आरडीएस उदाहरण को दास के रूप में चला सकते हैं, या अन्य उपयोगिताओं को कनेक्ट कर सकते हैं। सर्वर जो बिनलॉग स्ट्रीम को पढ़ता है।
http://docs.aws.amazon.com/AmazonRDS/latest/UserGuide/MySQL.Procedural.Exporting.NonRDSRepl.html
आधिकारिक तौर पर, प्रलेखन इंगित करता है कि वे इसे उजागर कर रहे हैं ताकि आप एक लाइव प्रवास करने के उद्देश्य से एक दास स्थापित कर सकें - आप उपयोग कर रहे मौजूदा RDS उदाहरण से विदेशी भविष्य के मास्टर सर्वर को सिंक्रनाइज़ करते हैं mysqldump
, फिर इसे RDS से एक दास के रूप में कनेक्ट करते हैं। जब तक आपका एप्लिकेशन नए मास्टर पर माइग्रेट नहीं हो जाता है, तब तक प्रतिकृति स्ट्रीम के माध्यम से अपडेट का लाइव फीड प्राप्त करने के लिए - लेकिन अनौपचारिक रूप से, आप इसे निरंतर आधार पर कर सकते हैं, जब तक आप उनसे समर्थन की उम्मीद नहीं करते हैं ... जो मेरे लिए, उचित लगता है।
इसकी पुष्टि हाल ही में एक वेबिनार में हुई , जिसमें 56:45 पर शुरू हुई बातचीत में किया गया:
"आप इसे एक प्रतिकृति स्थिति में अनिश्चित काल तक रख सकते हैं ...
"... जब तक आप प्रतिकृति बनाए रखने की जिम्मेदारी लेते हैं ..."
"अगर आप चाहते हैं तो हम आपको निरंतर प्रतिकृति बनाने से नहीं रोक रहे हैं।"
यह नई क्षमता मेरे लिए हमारी सार्वजनिक-सामना करने वाली वेबसाइट-बैकिंग MySQL उदाहरणों में RDS का उपयोग करने के लिए मेरी कंबल आपत्ति को छोड़ने के लिए पर्याप्त थी, जहाँ हम FEDERATED
अन्य चीजों का उपयोग नहीं करते हैं ।
इसलिए मैं अभी भी इसके पक्ष में नहीं हूं, लेकिन मैं अब इसके खिलाफ नहीं हूं, क्योंकि द्विआधारी लॉग की एक लाइव स्ट्रीम होने से मुझे वास्तविक समय में डेटा के नियंत्रण में वापस रखा जाता है और यह सुनिश्चित करने के लिए जिम्मेदारी है कि कोई लेनदेन नहीं है एक विपत्तिपूर्ण हार में मेरे साथ वापस आ गया है, क्योंकि मैं, डीबीए के रूप में वापस नियंत्रण में हूं - जो कि वास्तव में मैं यही चाहता हूं। उंगलियों पर इंगित करने या मुकदमा दर्ज करने के लिए किसी तीसरे पक्ष के विक्रेता होने, या जो भी हो, अपने खोए हुए डेटा को वापस नहीं मिलता है अगर यह एक ब्लैक बॉक्स के अंदर एक ब्लैक होल के गायब हो जाता है।
प्रबंधन आरडीएस के "विचार" को पसंद करता है और लागत अंतर पर आपत्ति नहीं करता है, इसलिए अब हम उनके पीछे आरडीएस के साथ सभी नई वेब साइटों को लॉन्च कर रहे हैं।
बिंदु और क्लिक-पॉइंट-इन-टाइम रिकवरी, मैं मानता हूं, आरडीएस में एक अच्छी विशेषता है ... यह आपके मौजूदा मशीन को बदल या बाधित नहीं करता है - इसके बजाय, यह बैकअप का उपयोग करके एक पूरी तरह से नया उदाहरण निकालता है, समय-समय पर चयनित बिंदु के लिए निकटतम समय-समय, और फिर उस समय में आपके द्वारा निर्दिष्ट नई मशीन को उस बिंदु पर आगे लाने के लिए आवश्यक बिनलॉग लागू करता है।
इस से संबंधित है, लेकिन दूसरी दिशा में, यह भी संभव है, अब, जीवित MySQL डेटाबेस को RDS में माइग्रेट करने के लिए एक समान रणनीति का उपयोग करने के लिए ... आप एक RDS मास्टर कनेक्ट कर सकते हैं (संभवतः, आमतौर पर, यह एक नव-तैनात होगा उदाहरण) मौजूदा प्रणाली के एक गुलाम के रूप में ताकि RDS उदाहरण में उस समय डेटा का लाइव संस्करण हो जब आप इसमें माइग्रेट करते हैं। जावक प्रतिकृति के लिए आरडीएस बिनलॉग्स तक पहुंच के विपरीत, जो केवल 5.6 में काम करता है, आरडीएस 5.5.33 और 5.6.13 के साथ आरडीएस शुरुआत में समर्थित है ।