लेन-देन लॉग बैकअप सीरियल या समानांतर?


15

हम SQL सर्वर 2012 मानक संस्करण का उपयोग कर रहे हैं। मैं बैकअप और रखरखाव करने के लिए एक आसान, अधिक लचीली रूपरेखा प्रदान करने के लिए ओला हॉलेनग्रेन की लिपियों का उपयोग करने के लिए भी होता हूं।

यह प्रश्न ओला की लिपियों के बारे में इतना नहीं है क्योंकि वे एक सर्वोत्तम अभ्यास के बारे में हैं। मुझे एहसास है कि अंतिम उत्तर "यह आपकी कंपनी की आवश्यकताओं पर निर्भर करता है"। लेकिन मैं इस समुदाय की सलाह लेने की कोशिश कर रहा हूं कि हमारी कंपनी की आवश्यकताओं को समझने के लिए सबसे अच्छा कैसे हो।

मैं हर 15 मिनट के लिए लेन-देन लॉग बैकअप सेट करना चाहता हूं। इस तरह हम उम्मीद करते हैं कि 15 मिनट से अधिक का डेटा नहीं खोएगा। क्या मुझे एक नौकरी सेट करनी चाहिए जो ALL_DATABASES का उपयोग करती है? या यह बेहतर है कि प्रत्येक डेटाबेस के लिए एक नौकरी स्थापित करें और उन सभी को समानांतर में किक करें? मैं पूछता हूं, क्योंकि मुझे ओला की स्क्रिप्ट के कामकाज को देखने के आधार पर यह महसूस होता है कि धारावाहिक में बैकअप बंद कर दिए गए हैं। धारावाहिक का नकारात्मक पक्ष यह होगा कि प्रत्येक क्रमिक बैकअप दूसरे के पूरा होने तक प्रतीक्षा करता है। यह संभावित रूप से बैकअप (यानी, 15 मिनट से अधिक) के बीच समय की मात्रा बढ़ा सकता है। इसके अलावा मेरी चिंता यह है कि एक बैकअप में विफलता दूसरों को होने से रोकती है, और मैं नहीं चाहता कि ऐसा हो। मैं चाहूंगा कि दूसरे लोग भी इसका समर्थन करते रहें।

तो क्या यह सच है कि सीरियल में ओला की स्क्रिप्ट निष्पादित होती है और असफलता भी लगातार बैकअप को रोकती है?

और क्या प्रत्येक डेटाबेस के लिए नौकरी करना बेहतर है? या एक ही काम जो सब करता है? मेरा झुकाव अलग-अलग नौकरियों की ओर है, लेकिन मैं यह समझना चाहता हूं कि एसक्यूएल सर्वर डीबीए सामान्य रूप से क्या करता है।


1
मैं प्रति डेटाबेस नौकरी की ओर झुकता हूं क्योंकि यह उस तरह से अधिक प्रबंधनीय है, लेकिन फिर मैं एक "कंट्रोल फ्रीक" हूं, या इसलिए मुझे बताया गया है ... हो सकता है कि आपके पास एक डेटाबेस हो जो डेटा हानि के 15 मिनट खड़े हो सकता है, लेकिन एक और जो केवल 5 मिनट के लिए हो सकता है, सिर्फ शुरुआत के लिए।
मैक्स वर्नोन

1
आपका सबसे खराब स्थिति (बैकअप फ़ाइल भ्रष्टाचार को रोकना) होगा यदि सर्वर चल रहे काम के बीच में दुर्घटनाग्रस्त हो जाता है। यह आपको पिछले लॉग बैकअप तक पुनर्स्थापित करने में सक्षम बनाता है। यदि धारावाहिक, बहुत पहले db बैकअप में 15min डेटा हानि होती है, तो प्रत्येक बाद के लॉग बैकअप में 15min - पिछले प्रत्येक बैकअप डेटा हानि का कुल समय होगा। अलग-अलग नौकरियों से आपको प्रति डेटाबेस अलग-अलग आरपीओ की अनुमति होगी (यानी कुछ डेटाबेस में 1 घंटे का डेटा हानि होना ठीक होगा)
बॉब क्लेम्स

@MaxVernon - शायद। लेकिन कुछ राय आधारित प्रश्न मान्य हैं। मैं उन सवालों को पूछने की कोशिश करता हूं, जो केवल लौ युद्धों को शुरू करने के बजाय पूछने के लिए समझ में आते हैं। इसके अलावा मैंने अपनी सभी नौकरियों में एक्सीडेंटल / जूनियर डीबीए किया है। पहले DB2 और अब SQL सर्वर। इसलिए मेरे पास सीखने के लिए कोई वरिष्ठ नहीं है। मेरा एकमात्र संसाधन समुदाय है। इसलिए मुझे लगता है कि इस तरह का प्रश्न उचित है। यह खुद को और अन्य आकस्मिक / जूनियर्स को इससे सीखने की अनुमति देता है।
क्रिस एल्डरिच

शायद हर 10min पर लॉग बैकअप लें, ताकि वास्तविक विलंब कभी भी 15min से अधिक न हो?
usr

जवाबों:


6

क्या मुझे एक नौकरी सेट करनी चाहिए जो ALL_DATABASES का उपयोग करती है? या यह बेहतर है कि प्रत्येक डेटाबेस के लिए एक नौकरी स्थापित करें और उन सभी को समानांतर में किक करें?

मैं एक नौकरी सेटअप करने का सुझाव दूंगा जो लेनदेन लॉग (क्रमवार) को बैकअप करेगा। यह भी सुनिश्चित करेगा कि बैकअप I / O की भारी उपयोगिता नहीं है क्योंकि आप एक समय में डेटाबेस एक के लिए बैकअप चला रहे हैं।

समानांतर में चलने के साथ क्या संभव कमियां हो सकती हैं

  1. मान लें कि आपके पास 50 डेटाबेस हैं और आप सभी डेटाबेस का लेन-देन लॉग बैकअप शेड्यूल करते हैं और वे सभी समानांतर में चलने लगते हैं, यह निश्चित रूप से I / O का बहुत उपयोग करने वाला है। और यदि डिस्क जिस पर यह फ़ाइलों का बैकअप ले रही है, तो अन्य डेटा फ़ाइलें होती हैं जिन्हें आप सुस्ती के साथ देखेंगे। मैंने देखा है जब एक खराब क्वेरी बैकअप नौकरी के साथ बहुत सारे I / O रन का अनुरोध करने पर बैकअप धीमा हो रहा है।

  2. मान लीजिए कि आपके पास 50 डेटाबेस हैं, तो SQL सर्वर एजेंट में 50 नौकरियों का प्रबंधन करना मुश्किल नहीं होगा और यदि 100-200 डेटाबेस हैं तो आपकी स्थिति क्या होगी, जब आप SQL सर्वर एजेंट खोलते हैं और बहुत सारी नौकरी देखते हैं, तो मैं इसे पसंद नहीं करूंगा, बस इसे सरल रखें। मुझे यकीन है कि वही मामला आपके साथ होगा।

धारावाहिक का नकारात्मक पक्ष यह होगा कि प्रत्येक क्रमिक बैकअप दूसरे के पूरा होने तक प्रतीक्षा करता है। यह संभावित रूप से बैकअप (यानी, 15 मिनट से अधिक) के बीच समय की मात्रा बढ़ा सकता है।

लेन-देन लॉग बैकअप ज्यादातर छोटा होता है और यदि आपके पास बहुत सारे लॉग रिकॉर्ड बनाने वाला व्यस्त डेटाबेस है, तो आपको बैकअप आवृत्ति को बदलने की आवश्यकता हो सकती है। अधिकतर मैंने देखा है कि ट्रांजेक्शन लॉग बैकअप ठीक है जब आवृत्ति 15 मिनट है। मुझे नहीं लगता कि आपके लिए चिंता का विषय होना चाहिए।

इसके अलावा मेरी चिंता यह है कि एक बैकअप में विफलता दूसरों को होने से रोकती है, और मैं नहीं चाहता कि ऐसा हो

मैं कहूंगा कि बस इसकी चिंता मत करो। लेन-देन लॉग बैकअप तब तक विफल नहीं हो सकता जब तक आप कुछ गलती नहीं करते। गलतियाँ हो सकती हैं

  1. नौकरी चलाने वाले स्वामी को विज्ञापन से हटा दिया जाता है

  2. किसी ने डेटाबेस का पुनर्प्राप्ति मॉडल बदल दिया।

  3. डिस्क में अपर्याप्त जगह

ऊपर के अलावा मैंने लेनदेन लॉग बैकअप विफल होने का कोई कारण नहीं देखा है। इसकी बहुत मजबूत आप इस पर भरोसा कर सकते हैं।


6

सामान्य तौर पर, सीरियल में हमेशा अपना टी-लॉग बैकअप चलाएं; मेरे कई उदाहरणों में कुछ दर्जन डेटाबेस हैं, और कई ऐसे हैं जो बहुत सक्रिय हैं, और लेनदेन लॉग बैकअप में केवल कुछ सेकंड लगते हैं; आधा मिनट तक या जब यह विशेष रूप से व्यस्त है।

यदि केवल निम्न स्थितियाँ सत्य हैं, तो समानांतर में बैकअप चलाना वास्तव में फायदेमंद होगा:

  • आपके डेटाबेस और लॉग फ़ाइलें सभी अनन्य स्वतंत्र स्पिंडल पर हैं (या किसी भी संयोजन में ठोस राज्य डिस्क पर हैं)

    • केवल टी-लॉग बैकअप के लिए, केवल लॉग फ़ाइलों को इस आवश्यकता को पूरा करना होगा।
  • प्रत्येक डेटाबेस के लिए आपके बैकअप लक्ष्य अलग-अलग स्पिंडल पर हैं।

  • आप SQL सर्वर आवृत्ति और मीडिया के बीच साझा SAN HBA या iSCSI या अन्य बैंडविड्थ का उपयोग नहीं कर रहे हैं।

  • यानी डेटाबेस A पढ़ने और बैकअप A लिखने से IOPS डेटाबेस B पढ़ने और बैकअप B लिखने के समान डिस्क का उपयोग नहीं करते हैं।

यदि ये सभी सत्य हैं, तो यह संभव है कि कुछ हद तक समानतावाद कुल कैलेंडर समय की मात्रा को कम कर देगा। यदि ये सभी सत्य नहीं हैं, तो संभावना से अधिक आप डिस्क के एक या एक से अधिक सेट का कारण बनेंगे, और आपके समानांतर बैकअप वास्तव में दोनों सीरियल की तुलना में अधिक कैलेंडर समय लेंगे, लेकिन ओएस फाइलसिस्टम या भंडारण स्तर के विखंडन का कारण भी बन सकते हैं, क्योंकि आप एक ही समय में बैकअप ए और बैकअप बी लिख रहे हैं!

एक बैकअप विफल होने और बाकी सफल होने के बारे में चिंता न करें - यदि कोई असफल हो, तो आपको वैसे भी सब कुछ जांचने की आवश्यकता है, और केवल बार जब मैंने बैकअप विफल देखा है, इसके कारण हैं:

  • डिस्क विफलता

  • Hyperbac / Litespeed / तृतीय पक्ष संपीड़न सॉफ्टवेयर विफलता (यदि आपके पास SQL ​​और डिस्क के बीच सॉफ़्टवेयर विफल रहता है)

    • एक चेतावनी के रूप में, विफलता एक बैकअप नौकरी का रूप ले सकती है जो कभी भी समाप्त नहीं होती है, इसलिए अलर्ट भेजने वाले "नौकरियों जो उम्मीद से लंबे समय तक चलती हैं" के लिए कुछ जांच कर रहे हैं, मूल्यवान है।
  • एन्क्रिप्शन उत्पाद विफलता (यदि आपके पास SQL ​​और डिस्क के बीच सॉफ़्टवेयर है जो विफल हो जाता है)

  • नेटवर्क विफलता (यदि डेटाबेस फ़ाइलें, या अधिक संभावना है कि बैकअप फ़ाइलें, नेटवर्क पर हैं)

  • अनुमतियां

    • ब्रांड के साथ सबसे आम नई स्थापित करता है

    • या ब्रांड के नए बैकअप स्थान

    • SQL सर्वर सेवा उपयोगकर्ता (जो सामान्य बैकअप के लिए अनुमतियों की आवश्यकता है) को बदलना

    • SQL सर्वर सेवा उपयोगकर्ता को लॉक करना क्योंकि यह केवल एक SQL सर्वर आवृत्ति से अधिक उपयोग किया जाता है

  • कॉन्फ़िगरेशन त्रुटियों

  • बिजली की विफलता

  • ओएस दुर्घटना

जब तक कि उपरोक्त शर्तों को पूरा नहीं किया जाएगा, जिनमें से अधिकांश एक और अन्य को प्रभावित नहीं करेंगे।


2

बस जोड़ने के लिए, ओला अपनी स्क्रिप्ट डिज़ाइन करता है जहां अगर एक डेटाबेस बैकअप किसी भी कारण से बैकअप में विफल रहता है, तो अगले एक (एस) का प्रयास किया जाता है। जैसा कि पहले कहा गया था, आपके पास नौकरी की विफलता के बारे में सूचित करने के लिए एक चेतावनी सेट हो सकती है क्योंकि बैकअप नौकरी अभी भी विफल होगी, भले ही केवल एक डेटाबेस बैकअप सभी उपयोगकर्ता डेटाबेस से बाहर विफल रहा हो - यह मानते हुए कि आप सभी डेटाबेस का बैकअप ले रहे हैं (एक सभी के लिए नौकरी)।

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