मैं मूल रूप से AWS RDS पोस्टग्रेज डेटाबेस के प्रमुख संस्करण को कैसे अपग्रेड कर सकता हूं?


13

आज सुबह मैं AWS RDS पर एक PostgreSQL डेटाबेस को अपग्रेड करने में शामिल था। हम संस्करण 9.3.3 से संस्करण 9.4.4 पर जाना चाहते थे। हमने स्टेजिंग डेटाबेस पर अपग्रेड का "परीक्षण" किया था, लेकिन स्टेजिंग डेटाबेस दोनों बहुत छोटा है, और मल्टी-एज़ का उपयोग नहीं करता है। यह पता चला कि यह परीक्षा बहुत अपर्याप्त थी।

हमारा उत्पादन डेटाबेस मल्टी-एज़ेड का उपयोग करता है। हमने अतीत में मामूली संस्करण उन्नयन किया है, और उन मामलों में आरडीएस पहले स्टैंडबाय को अपग्रेड करेगा और फिर इसे मास्टर को बढ़ावा देगा। इस प्रकार फेलओवर के दौरान केवल डाउनटाइम 60 ~ होता है।

हमने मान लिया कि बड़े संस्करण के उन्नयन के लिए वही होगा, लेकिन ओह हम कितने गलत थे।

हमारे सेटअप के बारे में कुछ विवरण:

  • db.m3.large
  • प्रस्तावित IOPS (SSD)
  • 300 जीबी स्टोरेज, जिसमें 139 जीबी का उपयोग किया जाता है
  • हमारे पास आरडीएस ओएस अपग्रेड बकाया था, हम डाउनग्रेड को कम करने के लिए इस अपग्रेड के साथ बैच करना चाहते थे

जब हम नवीनीकरण करते हैं तो यहां RDS इवेंट लॉग होते हैं:

यहाँ छवि विवरण दर्ज करें

डेटाबेस CPU अधिकतम 08:44 और 10:27 के बीच निकाला गया था। इस समय का बहुत कुछ आरडीएस द्वारा प्री-अपग्रेड और पोस्ट-अप स्नैपशॉट लेने के कारण लगता था।

एडब्ल्यूएस डॉक्स , इस तरह के नतीजों की चेतावनी नहीं है, हालांकि उन्हें पढ़ने से यह स्पष्ट है हमारे दृष्टिकोण में एक स्पष्ट दोष है कि है कि हम की एक प्रति का निर्माण नहीं किया उत्पादन मल्टी AZ सेटअप में डेटाबेस और के रूप में यह अपग्रेड करने का प्रयास एक परीक्षण रन

सामान्य तौर पर यह बहुत निराशाजनक था क्योंकि आरडीएस ने हमें इस बारे में बहुत कम जानकारी दी थी कि यह क्या कर रहा है और इसे कब तक लेने की संभावना है। (फिर, ट्रायल रन करने से मदद मिली होगी ...)

इसके अलावा, हम इस घटना से सीखना चाहते हैं इसलिए यहाँ हमारे प्रश्न हैं:

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

अपग्रेड के बाद हमने देखा कि पोस्टग्रेज लाखों रिकॉर्ड के साथ कुछ तालिकाओं पर एक अनुक्रमिक स्कैन करने की कोशिश कर रहा था, जहां उसे इसके बजाय एक सूचकांक का उपयोग करना चाहिए था (इस प्रकार हमारे क्वेरी टाइमआउट को मारते हुए)। ANALYZEआँकड़ों को अद्यतन करने के लिए एक मैनुअल ने इसे हल किया। अगर किसी को इस बारे में कोई जानकारी है तो यह बहुत अच्छा होगा।
जोंलेइटोन

जवाबों:


4

यह एक अच्छा सवाल है,
कभी-कभी बादल के वातावरण में काम करना मुश्किल होता है।

आप pg_dumpall -f dump.sqlकमांड का उपयोग कर सकते हैं , जो आपके पूरे डेटाबेस को SQL फ़ाइल स्वरूप में डंप कर देगा, इस तरह से कि आप इसे स्क्रैच से दूसरे एंडपॉइंट की ओर फिर से जोड़ सकते हैं। psql -h endpoint-host.com.br -f dump.sqlसंक्षिप्त के लिए उपयोग करना ।

लेकिन ऐसा करने के लिए, आपको डिस्क में कुछ उचित स्थान (अपने डेटाबेस डंप को फिट करने के लिए) के साथ कुछ ईसी 2 उदाहरण की आवश्यकता होगी। इसके अलावा, आपको yum install postgresql94.x86_64डंप चलाने और कमांड को पुनर्स्थापित करने में सक्षम होने के लिए इंस्टॉल करने की आवश्यकता होगी ।

PG Dumpall DOC पर उदाहरण देखें ।

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

इसके अलावा, अगर आपको चीजों को गति देने की आवश्यकता है, तो समानांतरता ( ) पैरामीटर का लाभ उठाकर, pg_dumpइसके बजाय का उपयोग करने पर विचार करें , जब आप प्रक्रिया में शामिल सीपीयू की संख्या निर्धारित करते हैं, उदाहरण के लिए 8 सीपीयू तक उपयोग करेंगे। डिफ़ॉल्ट रूप से या के व्यवहार का उपयोग केवल 1 है। इसके बजाय उपयोग करने का एकमात्र लाभ यह है कि आपको प्रत्येक डेटाबेस के लिए कमांड चलाने की आवश्यकता होगी जो आपके पास है, और अलग किए गए रॉल्स (समूह और उपयोगकर्ता) को भी डंप करें।pg_dumpall-j njobs-j 8pg_dumpallpg_dumppg_dumppg_dumpall

पीजी डंप डीओसी और पीजी रिस्टोर डीओसी पर उदाहरण देखें ।


समानांतर सुविधा का उपयोग करने के लिए आपको उपयोग करना होगा:pg_dump -h host -U user -W pass -Fc -f output_file.dmp -j 8 database_name
Vinnix

... और समानता का उपयोग कर बहाल करने के लिए:pg_restore -h host -d database_name -U user -W pass -C -Fc -j 8 output_file.dmp
Vinnix

क्या आप अपने उत्पादन env के स्नैपशॉट से सिर्फ एक नई rds आवृत्ति नहीं बना सकते?
शिक्षार्थी
हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.