2009-08-20 18 views
8

मैं एसक्यूएल एक्सप्रेस 2005 का उपयोग कर रहा हूं और हर रात सभी डीबी का बैकअप लेता हूं। मैंने देखा कि एक डीबी बड़ा और बड़ा हो रहा है। मैंने डीबी को देखा और यह नहीं देख सकता कि यह इतना बड़ा क्यों हो रहा है! मैं सोच रहा था कि लॉग फ़ाइल के साथ कुछ करना है या नहीं?एसक्यूएल बैकअप का आकार कम करना?

कैसे पता लगाने के लिए क्यों अपनी हो रही इतना बड़ा है जब उसके उस में अधिक डेटा है कि नहीं मिला पर सुझाव के लिए खोज रहे - इसके अलावा कैसे अनुकूलन करने के लिए/आकार को कम?

+0

क्या आप स्पष्ट कर सकते हैं कि यह आपकी डेटाबेस बैकअप फाइलें हैं जो आकार में बढ़ रही हैं या यदि समग्र डेटाबेस फ़ाइलों के आकार बढ़ रहे हैं। Sp_helpdb 'डेटाबेस नाम' के परिणाम भी उपयोगी होंगे यदि आप उन्हें उपलब्ध कराने में सक्षम हैं। –

+0

जब आप कहते हैं कि डीबी बड़ा हो रहा है, तो आप इसे कैसे माप रहे हैं ?? क्या यह एमडीएफ फ़ाइल आकार, एलडीएफ फ़ाइल आकार, बैकअप फ़ाइल आकार, या कुछ अन्य विधि है ?? – Sam

उत्तर

16

कई बातों की जांच करने के लिए:

  • "सरल" वसूली मोड में अपने डेटाबेस है? यदि ऐसा है, तो यह बहुत कम लेनदेन लॉग प्रविष्टियां उत्पन्न करेगा, और बैकअप छोटा होगा। विकास के लिए सिफारिश की है - लेकिन उत्पादन

  • अगर यह "पूर्ण" वसूली मोड में है के लिए नहीं - आप नियमित रूप से लेन-देन लॉग बैकअप करते हैं? इससे लेनदेन लॉग की वृद्धि सीमित होनी चाहिए और इस प्रकार कुल बैकअप आकार

  • क्या आपने हाल ही में DBCC SHRINKDATABASE(yourdatabasename) चलाया है? यही कारण है कि मदद मिल सकती है

  • आप किसी भी लॉग/अपने डेटाबेस में प्रवेश टेबल कि बस समय के साथ भरने रहे है? क्या आप इनमें से कुछ प्रविष्टियों को हटा सकते हैं?

आप वस्तु एक्सप्लोरर पर जाकर डेटाबेस के अच्छे होने का मॉडल पा सकते हैं, सही अपने डेटाबेस पर क्लिक करें, "गुण" का चयन करें, और उसके बाद संवाद पर "विकल्प" टैब का चयन करें:

alt text http://i31.tinypic.com/14dlkci.jpg

मार्क

+3

यदि मैं कर सकता हूं तो स्पष्टता के लिए, एक बिंदु ध्यान में रखना है कि लेनदेन लॉग का आकार वास्तव में पूर्ण डेटाबेस बैकअप फ़ाइल के समग्र आकार पर अधिक प्रभाव नहीं डालता है। ध्यान रखें कि एक पूर्ण डेटाबेस बैकअप में डेटा पेज होते हैं (.mdf फ़ाइल से) और केवल लेनदेन लॉग फ़ाइल के छोटे हिस्से को शामिल करता है जो पूर्ण डेटाबेस बैकअप निर्माण की शुरुआत और अंत के बीच मौजूद है। ऐसा इसलिए है क्योंकि लॉग के इस हिस्से में एकमात्र डेटा है जो भौतिक डेटा पृष्ठों के बैकअप के बाद बदल गया है। –

+0

उस स्पष्टीकरण के लिए धन्यवाद, जॉन! –

+0

आपका स्वागत है महोदय! –

0

डेटाबेस को छोटा रखने के लिए एक युक्ति डिजाइन समय पर होगी, आप उपयोग कर सकते हैं सबसे छोटे डेटा प्रकार का उपयोग करें।

उदाहरण के लिए यदि आप एक स्थिति तालिका हो सकता है, अगर तुम सच में सूचकांक की जरूरत है एक पूर्णांक होना करने के लिए जब एक SMALLINT या tinyint करना होगा करते हैं?

Darknight

+1

नए विकास के लिए अच्छा बिंदु था - इस मामले में, इसे वास्तव में मौजूदा डेटाबेस स्कीमा को बदलने की आवश्यकता हो सकती है, जो बैकअप आकार को नीचे पाने के लिए थोड़ा सा कठोर है ... –

+0

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

3

ऐसा लगता है कि आप पूरी वसूली मॉडल के साथ चल रहे हैं और लेन-देन के लिए लॉग ले जाया जा रहा कोई लेन-देन के लिए लॉग बैकअप के परिणाम के रूप में लगातार बढ़ रहा है।

  • एक सौदे लॉग बैकअप लें:

    आदेश में इस को सुधारने के लिए आप की जरूरत है। (देखें: BACKUP(TRANSACT-SQL))

  • अपनी आवश्यकताओं के लिए एक उचित आकार के लिए नीचे लेनदेन लॉग फ़ाइल सिकोड़ें। (देखें: How to use DBCC SHRINKFILE.......)
  • डेटा रिकवरी आवश्यकताओं के अनुसार नियमित लेनदेन लॉग बैकअप शेड्यूल करें।

मैं यह सुनिश्चित करने के लिए निम्न Microsoft संदर्भ को पढ़ने का सुझाव देता हूं कि आप अपने डेटाबेस वातावरण को उचित तरीके से प्रबंधित कर रहे हैं।

Recovery Models and Transaction Log Management

अतिरिक्त पठन: How to stop the transaction log of a SQL Server database from growing unexpectedly

0

रूप में आप अपने डाटाबेस के लिए एक दैनिक पूर्ण बैकअप करते हैं, बिल्कुल यह समय के साथ इतना बड़ा हो जाएगा। इसलिए आपको अपने लिए एक योजना बनाना है। पूर्ण /2 दिन: अंतर /3rd दिन: अंतर /4th दिन: अंतर /5 वें दिन: अंतर

और फिर से शुरू इस 1 दिन के रूप में।

और जब आप अपना डेटाबेस पुनर्स्थापित करते हैं, तो यदि आप पूर्ण को पुनर्स्थापित करना चाहते हैं तो आप इसे आसानी से कर सकते हैं, लेकिन जब आपको डीआईएफएफ संस्करण को पुनर्स्थापित करने की आवश्यकता होती है, तो आप "NO-recovery" के साथ पहले FULL बैकअप करते हैं तो DIFF आपको चाहिए, और फिर आपके डेटा को सुरक्षित रूप से वापस कर दिया जाएगा।

9

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

इससे बचने के लिए, आपको ओवरराइट विकल्पों को बदलना होगा। एसक्यूएल प्रबंधन स्टूडियो में, अपने डीबी, टैक्स - बैकअप पर राइट-क्लिक करें, फिर बैकअप के लिए विंडो में आप इसे 'सामान्य' पृष्ठ पर डिफ़ॉल्ट देखेंगे। इसे 'विकल्प' में बदलें और आपको विकल्पों का एक अलग सेट मिल जाएगा।

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

चेतावनी (यदि आप एक SQL स्क्रिप्ट 'INIT' को यह, बारी 'NOINIT' कर रही है, तो): इसका मतलब यह है बैकअप केवल नवीनतम परिवर्तन हो जाएगा - अगर आप एक गलती की तीन दिन पहले आप, लेकिन केवल कल रात का बैकअप है, आप भरे हुए हैं। केवल इस विधि का उपयोग करें यदि आपके पास बैकअप नियम है जो आपकी .bak फ़ाइल प्रतिदिन दूसरे स्थान पर प्रतिलिपि बनाता है, तो आप पिछले दिनों से उन फ़ाइलों में से किसी एक पर वापस जा सकते हैं।

0

संग्रह के लिए अपनी बैकअप फ़ाइल 7 ज़िप करें। मैंने हाल ही में 178 एमबी .bak फ़ाइल में डेटाबेस का बैक अप लिया है। इसे .7z फ़ाइल में संग्रहीत करने के बाद केवल 16 एमबी था। http://www.7-zip.org/

यदि आपको एक संग्रह उपकरण की आवश्यकता है जो बड़ी फ़ाइलों के आकार के साथ काम करता है तो 7zip से अधिक कुशलतापूर्वक और तेज है, तो मैं एलजे 4 संग्रह को देखने की सलाह दूंगा। मैंने इसे बिना किसी समस्या के वर्षों के लिए फ़ाइल बैकअप संग्रहित करने के लिए उपयोग किया है: http://lz4.github.io/lz4/

संबंधित मुद्दे