हालांकि जब आप स्नैपशॉट शुरू करते हैं तो डेटाबेस को लॉक करना और फाइल सिस्टम को फ्रीज करना एक अच्छा विचार है, स्नैपशॉट शुरू करने के लिए वास्तविक एपीआई कॉल में एक सेकंड का एक अंश लगता है, इसलिए आपका डेटाबेस और फाइल सिस्टम लंबे समय तक लॉक/फ्रोजन नहीं होता है।
उस ने कहा, कुछ अन्य विचार हैं जिनका आपने उल्लेख नहीं किया:
-
जब आप डेटाबेस पर लॉक बनाने का प्रयास करते हैं, तो उसे लॉक दिए जाने से पहले अन्य कथनों के समाप्त होने की प्रतीक्षा करनी पड़ सकती है। इस समय के दौरान, आपका लंबित लॉक लॉक प्राप्त करने और जारी करने तक प्रतीक्षा करने के लिए और स्टेटमेंट दे सकता है। यह आपके उत्पादन डेटाबेस पर बयानों के प्रवाह में रुकावट पैदा कर सकता है।
-
स्नैपशॉट का निर्माण शुरू करने के बाद, आपका एप्लिकेशन/डेटाबेस वॉल्यूम पर फ़ाइल सिस्टम का उपयोग करने के लिए स्वतंत्र है, लेकिन यदि आपके पास बहुत सारे लेखन हैं, तो आप उच्च iowait का अनुभव कर सकते हैं, कभी-कभी आपके एप्लिकेशन की ध्यान देने योग्य मंदी बनाने के लिए पर्याप्त होता है। इसका कारण यह है कि सक्रिय वॉल्यूम पर उस ब्लॉक को लिखने की अनुमति देने से पहले पृष्ठभूमि स्नैपशॉट प्रक्रिया को एक ब्लॉक को S3 में कॉपी करने की आवश्यकता होती है।
मैं पहले मुद्दे को एक ताला और समय समाप्त करने का अनुरोध करके हल करता हूं यदि इसे जल्दी से नहीं दिया जाता है। मैं तब थोड़ा इंतजार करता हूं और तब तक कोशिश करता रहता हूं जब तक मुझे ताला नहीं मिल जाता। अलग-अलग डेटाबेस लोड के लिए उपयुक्त टाइमआउट और पुन:प्रयास में देरी भिन्न हो सकती है।
मैं दूसरी समस्या को मास्टर के बजाय दास पर लगातार, लगातार स्नैपशॉट करके हल करता हूं, जैसा आपने प्रस्तावित किया था। मैं अभी भी मास्टर के खिलाफ कभी-कभी स्नैपशॉट करने की सलाह देता हूं ताकि इसकी आंतरिक स्थायित्व (एक गहरी ईबीएस संपत्ति) में सुधार हो, लेकिन उन स्नैपशॉट को लॉकिंग या फ्रीजिंग के साथ निष्पादित करने की आवश्यकता नहीं है क्योंकि आप बैकअप के लिए उनका उपयोग नहीं करने जा रहे हैं।
मैं एक फाइल सिस्टम के उपयोग की भी सिफारिश करता हूं जो फ्लशिंग और फ्रीजिंग (एक्सएफएस) का समर्थन करता है। अन्यथा, आप MySQL में लॉक की गई तालिकाओं को स्नैपशॉट कर रहे हैं, जिनके पास अभी तक EBS वॉल्यूम पर उनके सभी ब्लॉक नहीं हैं या फ़ाइल सिस्टम के अन्य भाग स्नैपशॉट में संशोधित और असंगत हो सकते हैं।
यदि आप रुचि रखते हैं, तो मैंने ओपन सोर्स सॉफ़्टवेयर प्रकाशित किया है जो MySQL और XFS (दोनों वैकल्पिक) के साथ संगत EBS स्नैपशॉट बनाने से संबंधित मेरे द्वारा एकत्र किए गए सर्वोत्तम अभ्यास करता है।
आपके अंतिम प्रश्न का उत्तर देने के लिए, मास्टर में तालिकाओं को लॉक करने से प्रतिकृति नहीं टूटेगी। अपने स्नैपशॉट सॉफ़्टवेयर में मैं यह सुनिश्चित करने के लिए रीड लॉक के साथ तालिकाओं को भी फ्लश करता हूं कि डिस्क पर सब कुछ स्नैपशॉट किया जा रहा है और मैं "LOCAL" कीवर्ड जोड़ता हूं ताकि फ्लश किसी भी संभावित दास को दोहराया न जाए।