MySQL सर्वर कई लॉग उत्पन्न करता है जो सर्वर की गतिविधियों पर नजर रखने में आपकी मदद कर सकता है। हालाँकि, एक बार जब ये लॉग सक्षम हो जाते हैं, तो वे आकार में बढ़ सकते हैं और बहुत अधिक डिस्क स्थान लेना शुरू कर सकते हैं। यही कारण है कि एक निश्चित अवधि के लिए MySQL लॉग फ़ाइलों को संग्रहीत करने और संरक्षित करने के साथ-साथ पुराने को हटाने का एक स्वचालित तरीका होना महत्वपूर्ण है। इस ब्लॉग पोस्ट में, हम आपके MySQL परिनियोजन के लिए MySQL त्रुटि लॉग, सामान्य लॉग और धीमी क्वेरी लॉग की स्थापना और प्रबंधन के लिए कुछ सर्वोत्तम प्रथाओं का वर्णन करते हैं।
MySQL सर्वर लॉगिंग सेट करना
आइए देखें कि निम्नलिखित 3 प्रकार के लॉग कैसे सेट करें:
त्रुटि लॉग
mysqld को शुरू करने, चलाने या रोकने के दौरान आने वाली सभी समस्याओं को लॉग करता है। इस लॉग को /etc/my.cnf फ़ाइल में निम्न विकल्प के द्वारा सक्षम किया जा सकता है:
- log_error=/var/log/mysql/mysqld.log
सामान्य क्वेरी लॉग
स्थापित क्लाइंट कनेक्शन और क्लाइंट से प्राप्त स्टेटमेंट को लॉग करता है। इस लॉग को /etc/my.cnf फ़ाइल में निम्न विकल्प के द्वारा सक्षम किया जा सकता है:
- सामान्य_लॉग=चालू
- general_log_file=/var/log/mysql/general.log
धीमी क्वेरी लॉग
उन क्वेरी को लॉग करता है जिन्हें निष्पादित करने में long_query_time सेकंड से अधिक समय लगता है। इस लॉग को /etc/my.cnf फ़ाइल में निम्न विकल्प द्वारा सक्रिय किया जा सकता है:
- slow_query_log=ON
- slow_query_log_file=/var/log/mysql/mysql-slowquery.log
लॉग रोटेशन के लिए मानदंड सेट करना
एक उदाहरण के रूप में, आइए सामान्य MySQL क्वेरी लॉग को प्रबंधित करने के लिए कुछ मानदंड हैं। हम निम्नलिखित प्रश्न पूछकर लॉग प्रबंधन के लिए उपयुक्त मानदंड निर्धारित कर सकते हैं:
प्र:लॉग फ़ाइल का अधिकतम आकार कितना बढ़ सकता है?
A:मान लें कि यह 300 एमबी तक बढ़ सकता है जिसके बाद इसे घुमाने और संपीड़ित करने की आवश्यकता होती है।
प्र:कितनी बारंबारता है कि आप लॉग फ़ाइल को घुमाना चाहते हैं?
A:हम कह सकते हैं कि हम चाहते हैं कि लॉग्स को दैनिक आधार पर घुमाया जाए।
प्र:आप कितनी पुरानी लॉग फ़ाइलें रखना चाहते हैं?
A:हम पिछली 30 लॉग फाइलों को बरकरार रखना चाहते हैं।
उपरोक्त मानदंड के आधार पर, सामान्य क्वेरी लॉग प्रबंधन के लिए आवश्यक समग्र डिस्क स्थान लगभग 1.2 GB है। 90% संपीड़न अनुपात मानते हुए – हमारे पास 30 एमबी आकार की 30 संपीड़ित लॉग फ़ाइलें और लगभग 300 एमबी की एक लाइव लॉग फ़ाइल होगी।
MySQL सर्वर लॉग्स को मैनेज करना:रोटेट करना, कंप्रेस करना, रिटेन करना और डिलीट करना ट्वीट करने के लिए क्लिक करें
Linux लॉगरोटेट यूटिलिटी का उपयोग करके लॉग को प्रबंधित करना
logrotate एक Linux उपयोगिता है जो लॉग फ़ाइलों के कुशल प्रशासन में मदद करती है और स्वचालित रोटेशन, संपीड़न और लॉग फ़ाइलों को हटाने के विकल्प प्रदान करती है। ऊपर स्थापित मानदंड /etc/logrotate.d फ़ोल्डर में कॉन्फ़िगरेशन फ़ाइल बनाकर लॉगरोटेट उपयोगिता के लिए कॉन्फ़िगर किया जा सकता है।
आइए इस कॉन्फ़िगरेशन फ़ाइल को mysqlसामान्य कहते हैं और फ़ाइल की सामग्री होगी:
/var/log/mysql/general.log{
compress
dateext
maxsize 300M
copytruncate
maxage 365
dateformat -%Y%m%d%s
daily
rotate 30
notifempty
}
लॉगरोटेट के लिए उपरोक्त विकल्पों के साथ, सामान्य क्वेरी लॉग या तो दैनिक आधार पर या जब लॉग फ़ाइल का आकार 300 एमबी से अधिक हो जाता है, घुमाया जाता है। पुराने लॉग्स को कंप्रेस किया जाता है और ऐसी 30 फाइलों को सुरक्षित रखा जाएगा। यदि 'सूचना' सेटिंग के कारण लॉग फ़ाइल खाली है, तो लॉग रोटेशन को छोड़ दिया जाएगा।
'copytruncate' विकल्प यह सुनिश्चित करने के लिए है कि रोटेशन के दौरान वर्तमान लॉग फ़ाइल को कभी भी हटाया नहीं जाता है और केवल इसकी सामग्री को छोटा कर दिया जाता है। यह महत्वपूर्ण है क्योंकि कुछ एप्लिकेशन उम्मीद करते हैं कि लॉग फ़ाइल हमेशा उपलब्ध रहती है और पहले एप्लिकेशन को रोके बिना लॉग को हटाना संभव नहीं है।
अब जब लॉग रोटेशन कॉन्फ़िगरेशन सामान्य क्वेरी लॉग के लिए सेट हो गया है, तो लॉगरोटेट उपयोगिता को चलाना होगा ताकि उपरोक्त कॉन्फ़िगरेशन निष्पादित हो। यह आमतौर पर क्रॉन जॉब के माध्यम से किया जाता है। लॉगरोटेट स्क्रिप्ट को /etc/cron.hourly निर्देशिका में रखकर हम इसे हर घंटे चलने के लिए सेट कर सकते हैं:
#!/bin/sh
/usr/sbin/logrotate /etc/logrotate.conf
EXITVALUE=$?
if [ $EXITVALUE != 0 ]; then
/usr/bin/logger -t logrotate "ALERT exited abnormally with [$EXITVALUE]"
fi
exit 0
इसलिए, कुछ सरल चरणों के साथ, हमने अपने मानदंड के आधार पर MySQL सामान्य लॉग के लिए लॉग रोटेशन सेट किया है। MySQL त्रुटि लॉग और धीमी क्वेरी लॉग के लिए भी यही तरीका अपनाया जा सकता है। अपने MySQL परिनियोजन को अनुकूलित करने के बारे में अधिक जानने के लिए ये अन्य पोस्ट देखें:
- आपके MySQL सर्वर के लिए InnoDB बफर पूल आकार की गणना करना
- MySQL Tutorial - SSL को अपने MySQL सर्वर पर कॉन्फ़िगर और प्रबंधित करना
- MySQL उच्च उपलब्धता फ्रेमवर्क समझाया गया - भाग I:परिचय