AWS RedShift dc2 से ds2 नोड क्लस्टर में माइग्रेट कैसे करें

हमारे एक ग्राहक उत्तर वर्जीनिया (हमें-पूर्व -1) क्षेत्र में 14 नोड्स के साथ dc2.large क्लस्टर का उपयोग कर रहे थे और उनके पास दो चुनौतियां थीं:

  1. लागत: 14 नोड्स के लिए प्रति घंटे $ 3.75।
  2. स्पेस: ds2.large में केवल 160 GB SSD है इसलिए यह जल्दी भर जाता है

इन दो चुनौतियों को ध्यान में रखते हुए, हमने ds2.xlarge 2 नोड क्लस्टर की कोशिश करने का सुझाव दिया है, जो एक घने भंडारण क्लस्टर है जहां प्रत्येक नोड में 2 टीबी एचडीडी स्थान है।

नया क्लस्टर सस्ता है, सिर्फ 1.7 डॉलर प्रति घंटे और अधिक संग्रहण स्थान प्रदान करता है जो कि कुछ समय के लिए पर्याप्त है।

Ds2.xlarge क्लस्टर पर क्वेरी लगभग दोगुनी होने लगीं, लेकिन हमारा ग्राहक ठीक है इसलिए हमने नए क्लस्टर में माइग्रेट करना शुरू कर दिया।

मौजूदा क्लस्टर से ds2.xlarge क्लस्टर बनाना

  1. मौजूदा dc2.large क्लस्टर से स्नैपशॉट लें

2. स्नैपशॉट से एक नया dc2.large क्लस्टर बनाएं

हम सीधे इस स्नैपशॉट से ds2.xlarge क्लस्टर नहीं बना सकते क्योंकि इसे dc2.large क्लस्टर से लिया गया था, इसलिए हमें एक और dc2.large क्लस्टर बनाने और फिर इसे क्लासिक आकार विकल्प का उपयोग करके इसे आकार देने की आवश्यकता है।

3. नव निर्मित dc2.large से ds2.xlarge क्लस्टर का आकार बदलना

हम केवल नोड प्रकार बदलने के लिए क्लासिक आकार का उपयोग कर सकते हैं और इस समय के दौरान क्लस्टर केवल-पढ़ने के लिए बन जाता है।

4. क्लस्टर नया ds2.xlarge तैयार होने के बाद, हमें प्रदर्शन और कार्यक्षमता परीक्षण करने की आवश्यकता है।

आंकड़ों का विस्थापन

अब हमने नए बनाए गए ds2.xlarge क्लस्टर पर कार्यक्षमता और प्रदर्शन का परीक्षण किया है और इस क्लस्टर में माइग्रेट करने के लिए तैयार हैं।

परीक्षण के समय के दौरान, कुछ डेटा dc2.large क्लस्टर में प्रवेश कर गए थे, इसलिए हमें उस डेटा को dc2.xlarge क्लस्टर में माइग्रेट करना था। हमारे पास S3 में मौजूद सभी डेटा थे इसलिए हमने S3 से ds2.xlarge क्लस्टर में डेटा को खींचने के लिए RedShift COPY कमांड का उपयोग करते हुए एक स्क्रिप्ट लिखी।

कदम:

  1. संदर्भ बिंदु निर्धारित करें

हमें पहले उस बिंदु की पहचान करने की आवश्यकता है जिस पर दोनों क्लस्टर अलग-अलग थे, यह बड़ी मात्रा में डेटा के साथ एक बहुत आसान काम नहीं था।

RedShift ने stl_load_commits में निष्पादित कॉपी कमांड के इतिहास को संग्रहीत किया और निम्नलिखित क्वेरी ने हमें काफी मदद की।

  चयनित क्वेरी, ट्रिम (फ़ाइल नाम) एएस फ़ाइल, क्यूरेट एएस अपडेट की गई 
Stl_load_commits आदेश से फ़ाइल DESC सीमा 5 से

इस क्वेरी ने केवल पुराने क्लस्टर पर काम किया और नए क्लस्टर पर इसने खाली परिणाम दिए ताकि हमने Redshift तालिकाओं में मौजूद डेटा और S3 में मौजूद डेटा की तुलना अपने डेटा माइग्रेशन के लिए संदर्भ बिंदु निर्धारित करने के लिए टाइमस्टैम्प का उपयोग करके की।

2. एक बार जब हमने संदर्भ बिंदु की पहचान की तो हमें पता चला कि S3 से माइग्रेट करने के लिए कई फाइलें हैं, इसलिए हमने पहले मैनिफ़ेस्ट फ़ाइल्स बनाए और फिर मैनिफ़ेस्ट फ़ाइल्स का उपयोग करके डेटा की प्रतिलिपि बनाई।

हमने प्रति घंटे एक प्रकट डेटा बनाने के लिए निम्न कोड का उपयोग किया।

https://github.com/tensult/aws-automation/blob/master/create-redshift-manifest-file-from-s3.js

यह स्थानीय निर्देशिका में प्रकट फाइलें उत्पन्न करेगा जो बाद में Redshift क्लस्टर पर COPY कमांड को निष्पादित करने से पहले AWS CLI s3 सिंक कमांड का उपयोग करके S3 बाल्टी में अपलोड किया गया था।

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

3. अब हमें इन प्रकट फाइलों के साथ RedShift COPY कमांड को इनपुट के रूप में निष्पादित करना होगा और हमने ऐसा करने के लिए कोड का पालन किया।

https://github.com/tensult/aws-automation/blob/master/redshift-bulk-copy-from-s3.js

आपको अपने डेटा के आधार पर उपरोक्त कोड में “COPY कमांड” अनुभाग में संशोधन करने की आवश्यकता हो सकती है।

डेटा की मात्रा के आधार पर इसमें कुछ समय लग सकता है इसलिए धैर्य रखें और AWS कंसोल से RedShift COPY कमांड निष्पादित करें।

एक बार प्रारंभिक डेटा माइग्रेशन पूरा हो जाने के बाद, हम उन सभी जगहों पर एंडपॉइंट्स बदलकर नए क्लस्टर का उपयोग करना शुरू कर सकते हैं जहां पुराने dc2.large क्लस्टर का उपयोग किया जाता है।

4. इस डेटा माइग्रेशन के दौरान, कुछ डेटा हो सकता है जो पुराने क्लस्टर से जुड़ा हुआ हो सकता है इसलिए जब हम एंडपॉइंट को अपडेट करते हैं तो हमें S3 बाल्टी के साथ नए क्लस्टर पर stl_load_commits टेबल की तुलना करके एक अंतिम डेटा माइग्रेशन की आवश्यकता होती है।

5. अब dc2.large क्लस्टर से ds2.xlarge में माइग्रेशन पूरा हो गया है, लेकिन कुछ और समय के लिए क्लस्टर की निगरानी करते रहें।

निष्कर्ष

इस ब्लॉग में, हमने RedShift क्लस्टर को माइग्रेट करने / आकार बदलने से संबंधित विभिन्न चरणों पर चर्चा की। मुझे उम्मीद है कि यह आपके और आपके काम के लिए उपयोगी है। ऐसे और ब्लॉग्स के लिए, कृपया मुझे यहाँ फॉलो करें और नीचे कमेंट सेक्शन में ब्लॉग्स के बारे में अपने विचार साझा करने के लिए भी स्वतंत्र महसूस करें।

More Interesting

ऐप माइग्रेशन: यह क्या है और यह क्यों जरूरी है?

जागरूक करने के लिए महत्वपूर्ण बातें

हजारों पक्षी आर्कटिक में प्रवास करते हैं - दुर्भाग्य से, तो क्या बुध

एकीकरण २१.जहरहंड

AYS Daily Digest 15/08/17: लीबिया द्वारा प्रो एक्टिवा नाव पर धमकी

प्रवासन: सामाजिक एकीकरण पर दृष्टिकोण

क्लाउड कम्प्यूटिंग: लहरें

भ्रष्टाचार विरोधी परत - आधुनिकीकरण कार्य करना

'वे उन्हें पुटाने कहते हैं': इटली तस्करी करने वाले शरणार्थियों की ओर आंखें मूंद लेता है

बैकएंड इंजीनियरों के लिए 101 सलाह

लोस वेनेज़ोलानोस नोलिडिटन ऊना मैनो

AYS विशेष: जब मेरा जीवन फिर से शुरू हो सकता है?

चुनाव से पहले, हंगेरियन पीएम ग्लोबल एंटी-माइग्रेशन एलायंस के लिए कॉल करते हैं

जब प्रौद्योगिकी मार्ग में हो जाता है

बैकी की मौत हो चुकी है