पूर्ण बैकअप और प्रतिलिपि केवल पूर्ण बैकअप के बीच अंतर


17

मैंने SQL सर्वर सेंट्रल थ्रेड में देखा क्या लॉग का पूर्ण बैकअप छोटा है? वह पूर्ण बैकअप लॉग को छोटा नहीं करता है:

न तो पूर्ण या विभेदक बैकअप लेन-देन लॉग काटते हैं। - लिन पेटीस
नहीं - एक पूर्ण बैकअप लॉग को छोटा नहीं करता है। - चाड क्रॉफर्ड

तो पूर्ण बैकअप और केवल-पूर्ण बैकअप के बीच क्या अंतर है?

लॉग बैकअप के लिए कॉपी-ओनली बैकअप होता है जो लॉग चेन को लॉग किए बिना लॉग को टूटने से रोकता है। तो क्या केवल प्रतिलिपि पूर्ण बैकअप है?

जवाबों:


14

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

प्रतिलिपि-केवल पूर्ण बैकअप (सभी पुनर्प्राप्ति मॉडल) एक प्रति-केवल बैकअप अंतर आधार या अंतर बैकअप के रूप में कार्य नहीं कर सकता है और अंतर आधार को प्रभावित नहीं करता है।

पूर्ण और पूर्ण-प्रति के बीच एकमात्र अंतर यह है कि पूर्ण-प्रतिलिपि अंतर श्रृंखला को नहीं तोड़ती है। उनमें से कोई भी लॉग श्रृंखला को नहीं तोड़ता है क्योंकि उनमें से कोई भी लॉग फ़ाइल को छोटा नहीं करता है।


24

पूर्ण और प्रतिलिपि-केवल बैकअप के बीच महत्वपूर्ण अंतर यह है कि एलएसएन (लॉग अनुक्रम संख्या) है या नहीं, और विशेष रूप DatabaseBackupLSNसे अपडेट किया गया है या नहीं ।

जब आप एक पूर्ण बैकअप लेते हैं, तो DatabaseBackupLSNअपडेट किया जाता है। पूर्ण बैकअप लेने के बाद, यदि आप एक डिफरेंशियल बैकअप लेते हैं, जिसमें बैकअप होता है, DatabaseBackupLSNजो पूर्ण बैकअप से मेल खाता है, और इसलिए SQL दोनों को एक साथ जोड़ सकता है (जैसे कि यह उन एलएसएन से पता चलता है कि अंतर पूर्ण का अनुसरण करता है)।

समस्या तब आती है जब आपके पास शेड्यूल किए गए बैकअप चल रहे होते हैं, इसलिए आपके पास एक प्रारंभिक पूर्ण बैकअप होता है, और फिर डिफरेंशियल का एक क्रम होता है। यदि आप मैन्युअल रूप से एक पूर्ण बैकअप लेते हैं, तो यह LSN को अपडेट करेगा, और फिर उस बिंदु से प्रत्येक बैकअप बैकअप जो आप अनुसूचित बैकअप के माध्यम से लेते हैं, यह संदर्भित करेगा कि नया LSN मूल नहीं है। पुनर्स्थापित करने की आवश्यकता होने की स्थिति में, आप अपने शेड्यूल किए गए पूर्ण बैकअप को पुनर्स्थापित कर सकते हैं, लेकिन जब आप मैन्युअल जॉब के बाद लिए गए किसी भी विभेदक बैकअप को पुनर्स्थापित करने का प्रयास करते हैं, तो आप पाएंगे कि यह LSNs के समान नहीं रह जाएगा।

कॉपी-ओनली बैकअप के साथ यह स्पर्श नहीं करता है DatabaseBackupLSN, और इस तरह बैकअप की श्रृंखला नहीं टूटती है।

इस मुद्दे का एक अच्छा वर्णन है, साथ ही साथ क्यों कई लोगों ने माइकल के। कैंपबेल द्वारा बैकअप चेन - REDUX (या ईटिंग क्रो) को तोड़ने में इसे गलत समझा , जिसमें इस तरह के अच्छे विज़ुअल गाइड शामिल हैं:

SQLmag छवि - पूर्ण बैकअप v कॉपी_ऑनली बैकअप

चार अलग-अलग एलएसएन की अच्छी व्याख्या के लिए और उनका उपयोग कैसे किया जाता है, साइमन एलवाईवाई द्वारा बैकअप के लिए SQL सर्वर लॉग अनुक्रम संख्या को समझना

मुद्दे से बचने का तरीका डेटाबेस के मानक बैकअप करने वाली एक से अधिक चीज़ों का नहीं होना है। कोई भी एडहॉक या सेकेंडरी बैकअप कॉपी-ओनली ऑप्शन के साथ किया जाना चाहिए, कॉपी-ओनली बैकअप (SQL सर्वर) पूरी जानकारी के लिए देखें, लेकिन अनिवार्य रूप से आप SSMS में "कॉपी ओनली बैकअप" विकल्प का उपयोग टी-एसक्यूएल WITH COPY_ONLYकमांड के माध्यम से करते हैं। , या PowerShell के साथ -CopyOnlyपैरामीटर का उपयोग करें ।


1
जोड़ने के लिए: व्यावहारिक रूप से कॉपी केवल गैर बैकअप प्रयोजनों के लिए एक बैकअप बनाने की अनुमति देता है। एक ग्राहक के लिए, बैकअप स्वचालित रूप से एक एंटरप्राइज़ बैकअप सिस्टम के लिए किया जाता है - एक पुनर्स्थापना प्राप्त करना PAINFULL है, विशेष रूप से एक अलग वातावरण (कागजी कार्रवाई, दिन के दौरान एक) प्राप्त करना। कॉपी केवल मुझे एंटरप्राइज़ बैकअप द्वारा प्रबंधित बैकअप के साथ हस्तक्षेप किए बिना एक प्रतिलिपि बनाने और फिर इसे एक परीक्षण वातावरण में पुनर्स्थापित करने की अनुमति देता है।
TomTom

12

मान लें कि हमारे पास अनुसूचित बैकअप वाला एक डेटाबेस है। पूर्ण बैकअप 24 घंटे में 00:00 बजे एक बार चलता है, हमारे पास विभेदक बैकअप भी हैं जो प्रत्येक 6 घंटे चलते हैं, और लेन-देन लॉग बैकअप जो हर घंटे चलता है। तो, क्या होगा अगर हमें किसी अन्य सर्वर को पुनर्स्थापित करने के लिए, दिन के मध्य में एक अतिरिक्त पूर्ण बैकअप बनाने की आवश्यकता है? हम इस मामले में क्या करेंगे। बेशक, हम एक पूर्ण बैकअप बना सकते हैं।

BACKUP DATABASE Test TO DISK = 'C:/Test.bak'

लेकिन जब आप किसी डेटाबेस का बैकअप बनाते हैं, तो कुछ परिवर्तन होते हैं जो प्रभावित करते हैं कि निम्नलिखित बैकअप कैसे पुनर्स्थापित होने वाले हैं (अंतर बैकअप और लेनदेन लॉग बैकअप दोनों प्रभावित करते हैं कि पुनर्स्थापना ऑपरेशन कैसे होगा)। इस स्थिति में, सभी अंतर अंतर बैकअप अंतिम पूर्ण बैकअप पर निर्भर होंगे। यदि अंतिम पूर्ण बैकअप खो जाता है तो डेटाबेस पुनर्स्थापना असंभव है।यहां छवि विवरण दर्ज करें

लेकिन हम एक बैकअप कैसे बना सकते हैं जो बैकअप की निम्नलिखित प्रक्रियाओं को प्रभावित नहीं करेगा या उस डेटाबेस के लिए पुनर्स्थापित नहीं करेगा। यह वह जगह है जहाँ कॉपी-बैकअप केवल जगह में आते हैं।

BACKUP DATABASE Test TO DISK = 'C:\Test.bak' WITH COPY_ONLY

यहां छवि विवरण दर्ज करें


2

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

यदि आप केवल-प्रतिलिपि बैकअप नहीं करते हैं, तो लॉग श्रृंखला टूट जाती है और आपके द्वारा लिया गया बैकअप नवीनतम पूर्ण बैकअप होगा। इसका मतलब यह है कि पिछले लॉग बैकअप को नए लिए गए पूर्ण बैकअप पर लागू नहीं किया जा सकता है। लॉग श्रृंखला ज्यादातर समय वसूलियों या लॉग शिपिंग परिदृश्यों में बिंदु के लिए बनाए रखी जाती है।

उदाहरण के लिए: मान लें कि आपके पास एक बैकअप परिदृश्य है जो हर 6 घंटे (मध्यरात्रि, सुबह 6 बजे, दोपहर 6 बजे) से पूर्ण बैकअप लेता है और हर 15 मिनट में बैकअप लॉग करता है। एक अनुरोध एक परीक्षण सर्वर पर अपने DB की एक प्रति रखने के लिए सुबह 9 बजे आता है। आप अपनी लॉग चेन को तोड़े बिना या अपनी बैकअप नौकरियों को बाधित किए बिना बैकअप लेना चाहते हैं। यह तब होता है जब एक प्रति-केवल बैकअप लिया जाता है। केवल बैकअप की प्रतिलिपि आपके नियमित बैकअप सेट को बाधित नहीं करेगी।


1
मुझे नहीं लगता कि कॉपी-ओनली बैकअप इफेक्ट्स लॉग चेन। कॉपी-ओनली फुल बैकअप डिफरेंशियल बेस रीसेट नहीं करता है। यह एकमात्र अंतर है। ये लिंक sqlservercentral.com/Forums/Topic1471058-391-1.aspx?Update=1 और sqlinthewild.co.za/index.php/2011/03/08/…
आईटी शोधकर्ता

1
मैं आपके उत्तर से सहमत नहीं था। पूर्ण बैकअप और कॉपी फुल बैकअप दोनों ही लॉग चेन को नहीं तोड़ते हैं। 'अंतर को आधार नहीं रीसेट कर रहा है' की तुलना में केवल पूर्ण बैकअप ही हर तरह से सामान्य पूर्ण बैकअप के समान है। मंच लिंक देखें जो मैंने अपनी पिछली टिप्पणी में उल्लेख किया है।
आईटी रिसर्चर

कहते हैं कि आपके पास एक पूर्ण बैकअप है: FB1 और 3 लॉग बैकअप: LB1, LB2, LB3। अब एक मैनुअल फुल बैकअप लें: FB2 (copy_only के बिना)। 3 और लॉग बैकअप के लिए प्रतीक्षा करें: LB4, LB5, LB6। अब FB2 हटाएं। क्या आप FB1 + LB1 + LB2 + LB3 + LB4 + LB5 + LB6 बहाल कर सकते हैं?
स्टेनलीजॉनस

हाँ, मैं पुनर्स्थापित कर सकता हूँ। मैंने पूरा बैकअप लिया (कॉपीवॉली नहीं) एफबी 1, फिर लॉग बैकअप (एलबी 1), फिर फुल बैकअप (केवल कॉपी नहीं) एफबी 2, फिर फिर से बैकअप (एलबी 2) लॉग करें। तो मैं इस क्रम में बहाल FB1 + LB1 + LB2। ठीक से बहाल किया और पाया कि सभी पंक्तियाँ ठीक से दर्ज की गई हैं।
आईटी शोधकर्ता

2
-1 क्योंकि एक पूर्ण बैकअप के साथ केवल विकल्प की प्रतिलिपि LSN श्रृंखलाओं के साथ कुछ नहीं करना है। Itresearcher ने बताया कि आपने अपना उत्तर अपडेट / डिलीट नहीं किया है।
एडवर्ड डॉर्टलैंड

0

एक पूर्ण बैकअप और केवल बैकअप की प्रतिलिपि लॉग श्रृंखला को नहीं तोड़ती है। यदि आप एक बैकअप बैकअप करते हैं तो केवल एक LSN बेमेल होगा।

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