एक शेड्यूल पर बैकअप और ट्रंकट लेन-देन के लिए सबसे अच्छा तरीका है


9

मैं कोई डीबीए नहीं हूं, लेकिन चीजें जो वे हैं, मुझे डीबीए टोपी पहननी होगी और अपने एसक्यूएल सर्वर उदाहरण पर रखरखाव योजना स्थापित करनी होगी।

तो थोड़ी देर के लिए मैं अपने SSIS रातोंरात प्रक्रिया कर रहा हूँ बैकअप निष्पादित करने के लिए एक Execute SQL टास्क चलाते हैं - मूल रूप master.dbo.xp_create_subdirसे गंतव्य फ़ोल्डर्स मौजूद है, और फिर सुनिश्चित करने के लिए चल रहा है BACKUP DATABASE [DbName] TO DISK = 'G:\Backups\DbName\DbName.bak' WITH INIT

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

"मैनुअल ट्रंकट" स्क्रिप्ट इस प्रकार है:

use Staging;
alter database Staging set recovery simple
alter database Staging set recovery full
dbcc shrinkfile ('Staging_log', 0, truncateonly);
go

इसलिए मैं इससे थक गया हूं, और मैंने इसके बजाय चीजों को ठीक से करने और करने की कोशिश की , और यहां दिए गए चरणों का पालन करें और एक वास्तविक रखरखाव योजना बनाएं :

SQL सर्वर रखरखाव योजना

बात यह है, मैंने ऐसा पहले कभी नहीं किया है, इसलिए मेरे कुछ सवाल हैं:

  • इस तरह से लेनदेन लॉग का बैकअप स्वचालित रूप से उन्हें छोटा कर देगा, या मुझे कुछ और करना होगा?
  • क्या डेटा और लेन-देन लॉग बैकअप को समवर्ती रूप से चलाना ठीक है? यदि नहीं, तो ऐसा करने का एक उचित तरीका क्या है?
  • बैकअप फ़ाइलों को रात भर एक अन्य प्रक्रिया द्वारा उठाया जा रहा है जो सर्वर पर सभी फ़ाइलों को पकड़ लेता है और उन्हें कहीं और संग्रहीत करता है - क्या 2 दिनों के बाद बैकअप सेट को समाप्त करना एक अच्छा विचार होगा? क्या मुझे उन्हें बिल्कुल समाप्त करने की आवश्यकता है?
  • क्रमशः क्लीनअप कार्य "पुराने" .bak और .trn फ़ाइलों को सबफ़ोल्डर्स के अंतर्गत हटा देते हैं G:\Backups। क्या इसका कोई मतलब है?
  • क्या एसएसआईएस में ऐसा करना बेहतर होगा, इसलिए मैं अपने ईटीएल को विफल कर सकता हूं अगर / जब बैकअप विफल हो जाता है? या मेरी ईटीएल प्रक्रिया को भी ध्यान देना चाहिए?

क्षमा करें यदि यह एक पोस्ट के लिए बहुत सारे प्रश्न हैं, यदि आवश्यक हो तो मैं संपादित करूंगा और इसके बजाय कई प्रश्न पूछूंगा - मुझे लगता है कि वे सभी कसकर संबंधित हैं।


3
क्या आप समझा सकते हैं कि "ट्रंकट" से आपका क्या मतलब है? क्या आप लॉग फ़ाइल को सिकोड़ने के लिए लॉग बैकअप की अपेक्षा करते हैं? किस लिए? तो यह फिर से बढ़ सकता है?
हारून बर्ट्रेंड

3
इसके अलावा, मैं सुझाव है कि आप इस सवाल का और किसी भी आगे जाने से पहले पृष्ठभूमि के लिए अपने जवाब पढ़ें: dba.stackexchange.com/q/29829/1186
हारून बर्ट्रेंड

3
यदि आपको केवल दैनिक वसूली की आवश्यकता है, तो सरल मोड पर रहें। (आप साधारण में क्यों बदलेंगे, फिर वापस पूर्ण में? आप क्या सोचते हैं कि क्या पूरा होता है?) लेकिन अगर दिन के समय में सभी पढ़ते हैं तो आपका लॉग वैसे भी दिन के दौरान नहीं बदलना चाहिए। किसी भी स्थिति में, लॉग का बैकअप लेने से लॉग फाइल कभी सिकुड़ती नहीं है
हारून बर्ट्रेंड

3
यदि आप कभी लॉग बैकअप लिए बिना पूर्ण पुनर्प्राप्ति मोड में 6 महीने चले जाते हैं, तो हाँ, आपकी लॉग फ़ाइलें बढ़ेंगी। हालाँकि, यदि आप कहते हैं, दिन के दौरान आपकी केवल पढ़ने की गतिविधि है, पूर्ण पुनर्प्राप्ति मोड का उपयोग करना एक बेकार है, बस इसे सरल बनाएं। तब लॉग फ़ाइल आम तौर पर बिल्कुल भी नहीं बढ़ेगी (चूंकि साधारण रिकवरी मोड में सभी के लिए जगह है लेकिन सक्रिय लेनदेन को फिर से इस्तेमाल किया जा सकता है)। DBAs जो जानते हैं कि वे जो कर रहे हैं वह आमतौर पर पूर्ण पुनर्प्राप्ति मोड का उपयोग करता है (ताकि वे समय में एक बिंदु पर पुनर्स्थापित कर सकें), अपनी लॉग फ़ाइलों को उचित आकार दें, और लॉग बैकअप को अक्सर पर्याप्त रूप से निष्पादित करें ताकि लॉग फ़ाइलें न बढ़ें।
हारून बर्ट्रेंड

3
जब से तुम कहते हैं कि तुम बात-इन-टाइम वसूली की जरूरत नहीं है, मुझे यकीन है कि नहीं कर रहा हूँ क्यों तुम भी पूरी वसूली मॉडल एक विकल्प पर विचार करें।
हारून बर्ट्रेंड

जवाबों:


7

केवल रातोंरात एसएसआईएस लिख रहा है, दिन का समय सभी पढ़ता है - मुझे केवल दैनिक वसूली की आवश्यकता है।

आपको अपनी व्यावसायिक आवश्यकताओं के आधार पर अपना पुनर्प्राप्ति मॉडल चुनना चाहिए:

  • कितना डेटा व्यवसाय ढीला हो सकता है और एक ही समय में बच सकता है?

उपरोक्त उत्तर के आधार पर, आपको सावधानीपूर्वक अपने डेटाबेस रिकवरी मॉडल का चयन करना चाहिए ।

सरल शब्दों में (थोक लॉग रिकवरी मॉडल पर चर्चा नहीं) ,

  • एक पूर्ण पुनर्प्राप्ति मॉडल लॉग बैकअप देता है जो पॉइंट-इन-टाइम रिकवरी की अनुमति देता है।
    • लॉग ट्रंकेशन तब हो सकता है जब आप लेन-देन लॉग बैकअप लेते हैं अर्थात लॉग फ़ाइल स्थान को प्रत्येक लॉग बैकअप के बाद पुन: उपयोग किया जाएगा और ब्लोट नहीं होगा!
  • एक साधारण पुनर्प्राप्ति मॉडल केवल आपको पूर्ण बैकअप लेने की अनुमति देता है। पॉइंट-इन-टाइम रिकवरी संभव नहीं है।
    • लॉग ट्रंकेशन केवल तब हो सकता है जब एक चेकपॉइंट (मैन्युअल या स्वचालित) यानी जब से आप नियमित रूप से पूर्ण बैकअप करते हैं, तो आपको लेन-देन लॉग के बारे में चिंता करने की ज़रूरत नहीं है क्योंकि CHECKPOINT लॉग फ़ाइल के निष्क्रिय हिस्से का पुन: उपयोग करने का ध्यान रखेगा।

याद रखें कि लॉग ट्रंकेशन लेन-देन लॉग फ़ाइल के आकार में भौतिक कमी नहीं है। इसका मतलब है कि लेनदेन लॉग फ़ाइल के निष्क्रिय हिस्से को पुन: प्रयोज्य के रूप में चिह्नित किया गया है ।

इसलिए आपको अपनी लेन-देन लॉग फ़ाइल (और डेटा फ़ाइलों) को ठीक से निर्धारित करना चाहिए। लॉग फ़ाइल बढ़ने से ऑटोग्रॉथ घटनाओं में किक हो जाएगी (यदि आपका डेटाबेस अंतिम उपाय के रूप में ऑटोग्रो पर सेट है)। मेरे उत्तर की जाँच करें - ऑटोग्रॉथ - प्रतिशत उपयोग?


मैं आपको अत्यधिक रखरखाव योजनाओं को लागू करने और [एक स्मार्ट रखरखाव समाधान - जो आसान, लचीला है और सर्वोत्तम प्रथाओं का पालन करता है] - 5 को लागू करने का सुझाव दूंगा । - ओला का बैकअप समाधान (और सूचकांक रखरखाव समाधान भी)।


आपके सवालों का जवाब देता है:

इस तरह से लेनदेन लॉग का बैकअप स्वचालित रूप से उन्हें छोटा कर देगा, या मुझे कुछ और करना होगा?

कृपया समाप्त करने के लिए बैकअप संलग्न न करें या उन्हें सेट न करें। वे एक बड़ी गड़बड़ पैदा करते हैं। INITडेटाइम स्टैंप के साथ अलग लॉग बैकअप का उपयोग करें और ले जाएं। संभालने में आसान। उसके लिए ओला के बैकअप समाधान का उपयोग करें। पुराने बैकअप को हटाने के लिए समाधान लचीला है।

क्या डेटा और लेन-देन लॉग बैकअप को समवर्ती रूप से चलाना ठीक है? यदि नहीं, तो ऐसा करने का एक उचित तरीका क्या है?

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

इसके अलावा, एक पूर्ण बैकअप के दौरान एक लॉग बैकअप लेनदेन लॉग को छोटा नहीं करेगा। पूर्ण बैकअप समाप्त होने के बाद (कुछ) लॉग बैकअप / लॉग लॉग को समाप्त कर देगा।

बैकअप फ़ाइलों को रात भर एक अन्य प्रक्रिया द्वारा उठाया जा रहा है जो सर्वर पर सभी फ़ाइलों को पकड़ लेता है और उन्हें कहीं और संग्रहीत करता है - क्या 2 दिनों के बाद बैकअप सेट को समाप्त करना एक अच्छा विचार होगा? क्या मुझे उन्हें बिल्कुल समाप्त करने की आवश्यकता है?

क्रमशः क्लीनअप कार्य "पुराने" .bak और .trn फ़ाइलों को G: \ Backups के सबफ़ोल्डर्स के अंतर्गत हटा देते हैं। क्या इसका कोई मतलब है? क्या एसएसआईएस में ऐसा करना बेहतर होगा, इसलिए मैं अपने ईटीएल को विफल कर सकता हूं अगर / जब बैकअप विफल हो जाता है? या मेरी ईटीएल प्रक्रिया को भी ध्यान देना चाहिए?

उपरोक्त दोनों के लिए, ओला के बैकअप रखरखाव समाधान का उपयोग करें। इसमें पुरानी फाइलों को हटाने का ध्यान रखा जाएगा।


बहुत बढ़िया। इसलिए मैंने अपने सभी डेटाबेस के लिए रिकवरी मॉडल को 'सिंपल' में बदल दिया है, और ओला की स्क्रिप्ट को चलाया। लगता है कि अब मुझे जो कुछ भी करने की ज़रूरत है वह वास्तव में बनाई गई नौकरियों को शेड्यूल करना है?
मैथ्यू गुइंडन

हाँ कृपया। इसके अलावा, यदि उत्तर समाधान या मददगार है, तो उत्तर / अपवोट के रूप में चिह्नित करना न भूलें - इस तरह से यह अनुत्तरित के रूप में झंडा नहीं होगा।
परिजनों शाह
हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.