हमेशा उपलब्धता समूह का उपयोग करते समय सिकोड़ लेन-देन लॉग करें


17

हम AlwaysOn Availability GroupSQL सर्वर 2012 की सुविधा का उपयोग कर रहे हैं । नियमित रूप से पूर्ण डेटाबेस बैकअप और लेनदेन लॉग बैकअप माध्यमिक डेटाबेस पर हर दिन किया जाता है।

मैंने यहाँ पर प्राइमरी रेप्लिका पर ट्रांजेक्शन लॉग बैकअप पढ़ा है या सेकेंडरी रेप्लिका रेप्लिका के ट्रांजेक्शन लॉग को री-मेबल के रूप में चिह्नित करेगा। वैसे भी, लेन-देन लॉग बैकअप आकार बड़ा है और हटाई गई फ़ाइल का उपयोग करके कम किया जा सकता है:

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

मैंने डेटाबेस को स्थानीय रूप से पुनर्स्थापित किया है और सिकुड़ा हुआ ऑपरेशन करता है। लॉग फ़ाइल का आकार 160 एमबी तक कम हो गया था।

मेरा सवाल यह है कि लेन-देन लॉग फ़ाइल (प्राथमिक, द्वितीयक या दोनों) पर मुझे किस डेटाबेस में सिकुड़न ऑपरेशन करना चाहिए?


मुझे लगता है कि पिछले कई वर्षों से लॉग फ़ाइल का कोई बैक अप नहीं बना है, इसलिए यह इतना विशाल हो गया है। निष्पादन के बाद DBCC SQLPERF (LOGSPACE)मैं देख सकता हूं कि केवल 0.06%फ़ाइल का उपयोग किया जाता है - मेरे लिए लॉग फ़ाइल के इतने बड़े आकार को रखने का कोई मतलब नहीं है। में [sys].[database_files]मैं अपनी कि जाँच max_sizeके लिए निर्धारित है -1के साथ growthकरने के लिए 65536तो मुझे लगता है कि जब यह अधिक स्थान इसे मिल जाएगा की जरूरत है। वैसे भी, मैं इसे भविष्य के विकास को रोकने के लिए उदाहरण के लिए 5% तक सिकोड़ सकता हूं। मैं इस बात की पुष्टि करने की कोशिश कर रहा हूं कि ऐसा करना बुरा नहीं है।


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

जवाबों:


21

AGS में केवल प्राथमिक पर लिख सकते हैं। सिकोड़ें ऑपरेशन लिखते हैं। इसलिए आपको प्राथमिक पर हटना चाहिए। ध्यान दें कि सिकुड़न उतनी नहीं हो सकती जितनी आप उम्मीद करते हैं, बहाल किए गए DB पर आपके परीक्षण ने संभवतः सरल पुनर्प्राप्ति मॉडल का लाभ उठाया था। अधिक जानकारी के लिए SQL सर्वर लॉग को कैसे सिकोड़ें पढ़ें ।

160MB तक सिकुड़ें नहीं। निर्धारित करें कि लॉग 121Gb तक क्यों बढ़ गया, इसलिए यह दोहराता नहीं है (आपको संदेह है, यदि संभव हो तो पुष्टि करना अच्छा होगा)। अपनी परिचालन आवश्यकताओं के लिए उपयुक्त आकार में लॉग को आकार दें। लॉग ग्रोथ एक गंभीर समस्या है, यह इंस्टेंट फाइल इनिशियलाइज़ेशन का उपयोग नहीं कर सकता है और लॉग के बढ़ने पर आपकी सभी डेटाबेस एक्टिविटी फ्रीज हो जाएगी और 0-इनिशियलाइज़ हो रही है। ऐसा होने पर यूजर्स और एप्स इससे नफरत करते हैं। यदि आप प्रभाव को समझते हैं और आपके उपयोगकर्ता ठीक हैं, तो आप एक बार थोड़ी मात्रा में सिकुड़ सकते हैं (160MB संभवतः बहुत छोटा है) और इसे तब तक बढ़ने दें जब तक यह स्थिर न हो जाए।


7

तुम कोशिश कर सकते हो:

  1. उपलब्धता समूह के सभी सर्वरों पर डेटाबेस सिंक्रोनाइज़्ड अवस्था में होना चाहिए।
  2. लेन-देन लॉग शुरू करने के लिए उपयोग किए गए पृष्ठों को ले जाएं, इससे पहले कि आप इसे सिकोड़ें।
  3. कभी-कभी लॉग का मुफ्त उपलब्ध स्थान 99% होता है, लेकिन SQL सर्वर अप्रयुक्त स्थान को जारी नहीं कर सकता है। बदले में उपलब्धता समूह में प्रत्येक सर्वर को रिबूट करने का प्रयास करें।
  4. कभी-कभी आपको MS SQL सर्वर द्वारा मुक्त स्थान जारी करने से पहले 2 बार ट्रांजेक्शन लॉग को बेक करने और सिकोड़ने की आवश्यकता होती है (लॉग फ़ाइल को डीबेट नहीं कर सकता है) क्योंकि फ़ाइल के अंत में स्थित लॉजिकल लॉग फ़ाइल उपयोग में है।)।

इस स्क्रिप्ट का प्रयास करें:

    नौकरी चरण या स्क्रिप्ट के अंदर वर्तमान डेटाबेस सेट करें
    - केवल प्राथमिक पर परीक्षा के लिए जाँच करें
    अगर (सेलेक्ट भूमिका
        के रूप में sysinos_hadr_avucation_replica_states के रूप में ए
        जोइन sys.avavour_replicas AS b
            B.replica_id = a.replica_id पर
    जहाँ b.replica_server_name = @@ SERVERNAME) = 1 है
    शुरू
        - Use [test_db] - MS SQL 2014 के लिए काम नहीं कर रहा है, बस इस लाइन पर टिप्पणी करें और नौकरी के चरण या स्क्रिप्ट के अंदर वर्तमान डेटाबेस सेट करें
        (१) बकुप तृण
        BACKUP LOG [test_db] TO DISK = N'D: \ MSSQL \ Backup \ test_db.trn 'NOFORMAT, INIT, NAME = N' Trn Backup ', SKIP, NOREIN, NOUNLOAD, COMPRESSION, STATS = 10 के साथ
        - 2) इस्तेमाल किए गए पेजों को स्थानांतरित करें
        DBCC SHRINKFILE (N'test_db_log ', 3000, NOTRUNCATE)
        - 3) SHRINKFILE लॉग
        DBCC SHRINKFILE (N'test_db_log ', 3000)
    समाप्त
हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.