आज सुबह मैं 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
आँकड़ों को अद्यतन करने के लिए एक मैनुअल ने इसे हल किया। अगर किसी को इस बारे में कोई जानकारी है तो यह बहुत अच्छा होगा।