2009-02-23 18 views
14

MySQL धीमी क्वेरी लॉग को छोटा करने का सबसे सुरक्षित तरीका क्या है (मुख्य रूप से लिनक्स के तहत, लेकिन विंडोज़ जानना आसान होगा) जबकि MySQL चल रहा है?ट्रंकेट धीमी क्वेरी लॉग इन MySQL

सुरक्षित से मेरा मतलब है:

  • कोई भी अनुमतियां समस्याओं
  • अपने साथ जोड़ दिया

उत्तर

20

को अपने मूल आकार अगली बार के लिए वापस कूद नहीं करना चाहिए कारण परवाह किए बिना एक फ़ाइल को काटना नहीं चाहिए यदि यह चल रहे एप्लिकेशन द्वारा खुला है:

> /var/logs/your.log 

आपके शेल प्रॉम्प्ट पर।

+0

मैंने पूरी तरह से जांच नहीं की है, लेकिन क्या इस दृष्टिकोण में लॉग एंट्री के बीच में छंटनी का मौका नहीं है, इस प्रकार लॉग फ़ाइल में त्रुटियां पेश कर रही हैं? मुझे यह समाधान पसंद है (विशेष रूप से मेरे सामान्य लिनक्स ज्ञान में जोड़ने के लिए), लेकिन जो मैं देख सकता हूं, @ tjanofsky का समाधान अधिक मजबूत है। – rinogo

+0

@rinogo: अच्छा सवाल। मुझे यह जांचना होगा कि क्या एकल 'लिखना() 'syscall दूसरे के साथ interleaved किया जा सकता है। ओटीओएच, मैं लॉगर को लॉग इन करने के लिए एक पंक्ति लिखने के लिए एक से अधिक 'लिखने() 'का उपयोग करने की अपेक्षा नहीं करता। – vartec

+0

यह सच है! हालांकि, ध्यान में रखना कुछ है कि MySQL के धीमे क्वेरी लॉग के मामले में, प्रत्येक "प्रविष्टि" वास्तव में कई पंक्तियां होती है। तो, सबसे खराब स्थिति परिदृश्य, प्रत्येक "एंट्री" में वास्तव में कई लेखन() कॉल हो सकते हैं, जो एक परिदृश्य पेश करेंगे जो इस मुद्दे के लिए अधिक संवेदनशील है। – rinogo

5

यदि यह एक सतत चिंता होने जा रहा है, तो आपको logrotate पर एक नज़र रखना चाहिए क्योंकि यह आपके लिए यह कर सकता है।

मुझे echo > file.log के बारे में पता नहीं था, हालांकि यह समझ में आता है। मैंने हमेशा cat /dev/null > file.log का उपयोग किया है।

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

+0

लिनक्स मामले में, यह सबसे अच्छा और आसान तरीका और उत्तर है। – shgnInc

16

here से:

आप खुले फ़ाइल स्थानांतरित कर सकते हैं, तो लॉग, जो एक नया लॉग खुल जाएगा फ्लश करने के लिए mysqld बताओ।

shell> cd mysql-data-directory 
shell> mv mysql.log mysql.old 
shell> mv mysql-slow.log mysql-slow.old 
shell> mysqladmin flush-logs 
संबंधित मुद्दे