लेन-देन लॉग इन करने में असमर्थ, log_reuse_wait_desc - AVAILABILITY_REPLICA


9

आज सुबह मैं हमारे एक डेटाबेस पर एक लेन-देन लॉग पूरी तरह से जाग गया था। यह सर्वर एक ऑल्टरनॉन क्लस्टर है और एक ट्रांसेक्शनल रीप्लेसमेंट सब्सक्राइबर भी है। मैंने log_reuse_wait_desc की जाँच की और यह logbackup दिखाया। किसी ने गलती से 4 दिन पहले लॉगबैकअप जॉब्स को डिसेबल कर दिया था, मैंने लॉग बैकअप जॉब को फिर से इनेबल कर दिया और लॉग क्लियर हो गया। चूंकि यह सुबह 4 बजे था मैंने सोचा कि मैं उस सुबह बाद में कार्यालय जाऊंगा और लॉग को शिरक कर दूंगा क्योंकि यह 400GB हो गया है।

सुबह 10 बजे- कार्यालय में मैं और मैं सिकुड़ने से पहले लॉग उपयोग की जाँच करते हैं और यह लगभग 16% था। मैं आश्चर्यचकित था और log_reuse_wait_desc की जांच कर रहा था, जिसमें प्रतिकृति दिखाई दे रही थी। मैं उलझन में था क्योंकि यह एक प्रतिकृति ग्राहक था। हमने तब देखा कि सीडीसी के लिए डीबी को सक्षम किया गया था और सोचा था कि इसका कारण हो सकता है, इसलिए सीडीसी अक्षम हो गया है और अब log_reuse_wait_desc AVAILABILITY_REPLICA दिखाता है।

इस बीच लॉग का उपयोग अभी भी लगातार बढ़ रहा है और अब यह 17% है। मैं हमेशा के डैशबोर्ड की जांच करता हूं और भेजे गए और फिर से कतार की जांच करता हूं और दोनों लगभग शून्य हैं। मुझे यकीन नहीं है कि लॉग का पुनः उपयोग AVAILABILITY_REPLICA के रूप में दिखा रहा है और लॉग को साफ़ करने में असमर्थ है।

कुछ पता है कि ऐसा क्यों हो रहा है?

जवाबों:


7

अगर तुम यह करते हो:

SELECT * FROM sys.databases

और log_reuse_wait_desc AVAILABILITY_REPLICA दिखाता है, जिसका अर्थ है कि SQL सर्वर आपके हमेशा ऑन उपलब्धता समूह प्रतिकृतियों में से एक पर लॉग डेटा भेजने का इंतजार कर रहा है। प्रतिकृतियों में से एक धीमा नेटवर्क के कारण पिछड़ सकता है, या यह पूरी तरह से नीचे हो सकता है।

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

यदि अंतिम व्यक्ति ने एक एजी प्रतिकृति स्थापित की है और इसका अब अस्तित्व नहीं है, तो यह उस एजी और / या प्रतिकृति को हटाने का समय है। बस सावधान रहें कि ऐप आपके SQL सर्वर से कनेक्ट करने के लिए श्रोता के नाम की ओर इशारा नहीं कर रहे हैं।


अगर सेकेंडरी को Async मोड पर सेट किया जाता है तो क्या इससे कोई फर्क पड़ेगा? यदि माध्यमिक बंद है (निश्चित होने की प्रतीक्षा), तो क्या प्राथमिक लॉग बढ़ता रहेगा? धन्यवाद!
माइकल

जब तक द्वितीयक अभी भी एजी में है (चाहे वह चालू हो या बंद हो, सिंक या एसिंक्स हो) तब तक लॉग डेटा ढेर होता रहेगा। आखिरकार, जब आप द्वितीयक को वापस करते हैं, तो उसे कहीं से अपना डेटा प्राप्त करना होता है? इसीलिए अगर यह समय की अवधि के लिए टूट गया है, तो आप आमतौर पर इसे एजी से हटाने और बैकअप से इसे पुन: व्यवस्थित करने से बेहतर हैं।
ब्रेंट ओजर
हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.