MySQL के लिए अमेज़न RDS बनाम अमेज़न EC2 उदाहरण पर MySQL स्थापित करना


31

काम पर, हम अपने सभी वेबसर्वर को Amazon EC2 पर होस्ट करते हैं और आमतौर पर MySQL डेटाबेस को हमारे Apache वेबसर्वर के रूप में एक ही बॉक्स पर स्थापित करते हैं, और उन पर संचार करते हैं localhost। अब हमें अपने सिस्टम के लिए अपने डेटाबेस को उसके अपने सर्वर पर माइग्रेट करने की आवश्यकता है। मेरे पास दो समाधानों के बीच एक विकल्प है: अमेज़ॅन आरडीएस का उपयोग करें , या बस एक नया अमेज़ॅन ईसी 2 बॉक्स लॉन्च करें और उस पर MySQL स्थापित करें।

RDS, EC2 जैसी ही कंपनी द्वारा प्रदान की गई एक समर्पित डेटाबेस सेवा है, ऐसा लगता है कि यह स्पष्ट रूप से बेहतर विकल्प होना चाहिए । हालाँकि, जब मैं दो विकल्पों के मूल्य निर्धारण को देखता हूं (देखें http://aws.amazon.com/ec2/pricing और http://aws.amazon.com/rds/pricing ) तो ऐसा लगता है कि एक RDS सर्वर की कीमत लगभग है एक ही स्पेक्स वाले बॉक्स के लिए EC2 सर्वर से दोगुना।

यह देखते हुए कि मैं अपने आप को बैकअप संभालने में सक्षम हूं और यह कि EC2 इंस्टेंस को स्केल करने की समान क्षमता प्रदान करता है जो कि RDS करता है, मैं EC2 के बजाय RDS का उपयोग करने के लिए बिल्कुल भी कोई कारण नहीं देख सकता। ऐसा लगता है कि मैं शायद कुछ बड़ा याद कर रहा हूं, हालांकि, अगर मैं सही था, तो कोई भी आरडीएस का उपयोग नहीं करेगा। वास्तव में मुझे क्या याद आ रहा है, और EC2 उदाहरण पर अपने स्वयं के डेटाबेस को स्थापित करने पर आरडीएस के क्या फायदे हैं?


यह ध्यान देने योग्य है कि EC2 और RDS के बीच मूल्य अनुपात काफी बदल गया है क्योंकि मैंने यह प्रश्न पूछा था। EC2 पर इंस्टेंस अपटाइम अभी भी सस्ता है, लेकिन आरडीएस मूल्य के दो-तिहाई से अधिक है; EC2 से RDS (या vica versa) पर जाने का मतलब अब आपके सर्वर बिल को दोगुना (या आधा करना) नहीं है। (यह अभी भी, आपकी परिस्थितियों के आधार पर, निश्चित रूप से देखभाल करने लायक अंतर हो सकता है।)
मार्क एमी

जवाबों:


20

मैं सामान्य रूप से एक बड़ा एडब्ल्यूएस प्रशंसक हूं ... लेकिन आरडीएस, इतना नहीं।

@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 के साथ आरडीएस शुरुआत में समर्थित है


क्या मुझे पता है कि आप Federated Storage Engine का उपयोग कैसे करते हैं ?
भारत खत्री

11

यदि डीबी सर्वर को स्केल करना आपकी चाय का कप नहीं है , तो अमेज़ॅन आरडीएस का उपयोग करना ठीक है क्योंकि सभी घंटियाँ और सीटी इसके साथ आती हैं। जो लोग बस उदारवादी हा चाहते हैं, बैकअप, और स्केलिंग से बहुत फायदा होता है।

दूसरी तरफ, यदि आप हार्डवेयर को स्केल करना चाहते हैं, तो यह RDS के लिए प्रश्न से बाहर है। यदि आप MySQL की क्षमताओं को बढ़ाना चाहते हैं तो क्या होगा? दुर्भाग्य से, यह कई पहलुओं के लिए सवाल से बाहर है जो कोई चाहेगा।

उदाहरण के लिए, क्या आप जानते हैं कि दो फ़ील्ड सभी सात (7) आरडीएस सर्वर मॉडल में कैप किए जाते हैं?

इन दो विकल्पों पर निम्नलिखित चार्ट पर ध्यान दें:

MODEL      max_connections innodb_buffer_pool_size
---------  --------------- -----------------------
t1.micro   34                326107136 (  311M)
m1-small   125              1179648000 ( 1125M,  1.097G)
m1-large   623              5882511360 ( 5610M,  5.479G)
m1-xlarge  1263            11922309120 (11370M, 11.103G)
m2-xlarge  1441            13605273600 (12975M, 12.671G)
m2-2xlarge 2900            27367833600 (26100M, 25.488G)
m2-4xlarge 5816            54892953600 (52350M, 51.123G)

आपको सुपर विशेषाधिकार नहीं दिया जाता है और इसकी कोई सीधी पहुँच नहीं है my.cnf। इसके प्रकाश में, my.cnfस्टार्टअप के लिए विकल्पों को बदलने के लिए, आपको पहले एक MySQL-आधारित DB पैरामीटर विकल्प सूची बनाना होगा और RDS CLI (Command Line Interface)इच्छित विकल्पों को बदलने के लिए उपयोग करना होगा। फिर, नए विकल्पों को आयात करने के लिए आपको यह करना होगा:

  • एक कस्टम DB पैरामीटर समूह बनाएं (इसे कॉल करें MySettings)
  • आरडीएस सीएलआई डाउनलोड करें और अपने एडब्ल्यूएस क्रेडेंशियल्स के साथ एक कॉन्फ़िगर फ़ाइल सेट करें
  • निम्नलिखित को निष्पादित करें: ./rds-modify-db-parameter-group MySettings --parameters "name=whateveroption,value=whatevervalue,method=immediate"
  • DB पैरामीटर विकल्प सूची का उपयोग करके संशोधित करें MySettings
  • MySQL RDS इंस्टेंस को पुनरारंभ करें

परिवर्तन को लागू करने के लिए एकल चर को अद्यतन करने के लिए एक एपीआई का उपयोग करना और आरडीएस उदाहरण के अनिवार्य पुनरारंभ करना? यह काफी दर्दनाक प्रक्रिया है कि किसी भी एक विकल्प को टाल दिया जाए।

यदि आप MySQL को बढ़ाना चाहते हैं, तो कृपया EC2 का उपयोग करें। फिर, आप my.cnfअपनी पसंद के हिसाब से ट्विट कर सकते हैं जैसे आपने हमेशा किया है और इसका इस्तेमाल किया है।

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