MySQL को पुनरारंभ किए बिना मैं MySQL की धीमी क्वेरी लॉग को कैसे सक्षम कर सकता हूं?


88

मैंने यहाँ निर्देशों का पालन किया: http://crazytoon.com/2007/07/23/mysql-changing-runtime-variables-with-out-restarting-mysql-server/ लेकिन यह केवल सीमा निर्धारित करता है।

क्या मुझे कुछ और करने की ज़रूरत है जैसे कि फ़ाइलपथ सेट करें?

MySQL के डॉक्स के अनुसार

यदि कोई फ़ाइल_नाम मान -लॉग-धीमी-क्वेरी के लिए नहीं दिया गया है, तो डिफ़ॉल्ट नाम है 
HOST_NAME-slow.log। सर्वर डेटा निर्देशिका में फ़ाइल बनाता है जब तक कि
अलग निर्देशिका निर्दिष्ट करने के लिए एक निरपेक्ष पथ नाम दिया गया है। 

चल रहा है

शो वारियर्स

किसी भी लॉग फ़ाइल पथ को इंगित नहीं करता है और मुझे मेरे सर्वर पर कोई धीमी क्वेरी लॉग फ़ाइल नहीं दिखाई देती है ...

संपादित करें

ऐसा लगता है कि मैं सर्वर संस्करण 5.0.77 का उपयोग कर रहा हूं, इसलिए मुझे ऐसा करने की आवश्यकता है:

सेट अंतर्राष्ट्रीय लॉग_एसएलओ_क्वेरीज़ = 1;

लेकिन मुझे मिलता है: ERROR 1238 (HY000): चर 'log_slow_queries' केवल पढ़ने के लिए परिवर्तनीय है

मुझे लगता है कि मुझे सर्वर को पुनरारंभ करने और लॉग इन करने में लॉग_slow_queries सेट करने की आवश्यकता है?


5
आप एक विकास बॉक्स पर परीक्षण क्यों नहीं करते हैं?
मार्टिन

जवाबों:


93

कोशिश करो SET GLOBAL slow_query_log = 'ON';और शायदFLUSH LOGS;

यह मानता है कि आप MySQL 5.1 या बाद का उपयोग कर रहे हैं। यदि आप पहले वाले संस्करण का उपयोग कर रहे हैं, तो आपको सर्वर को पुनरारंभ करना होगा। यह MySQL मैनुअल में प्रलेखित है । आप लॉग को कॉन्फ़िगर फ़ाइल या कमांड लाइन पर या तो कॉन्फ़िगर कर सकते हैं।


8
फ्लश धीमी लॉग 5.5 में उपलब्ध है!
कार्सन रिंकी

मेरे लिए 10.0.36-MariaDB पर भी काम किया। SET GLOBAL slow_query_log = 'OFF';अपेक्षा के अनुरूप काम करता है। FLUSH LOGSदोनों ही मामलों में आवश्यक नहीं था।
rinogo

28

संस्करण <5.1 पर धीमी क्वेरी के लिए, निम्नलिखित कॉन्फ़िगरेशन ने मेरे लिए काम किया:

log_slow_queries=/var/log/mysql/slow-query.log
long_query_time=20
log_queries_not_using_indexes=YES

इसे [mysqld]भी कॉन्फ़िगर फ़ाइल और पुनरारंभ के भाग के तहत रखने के लिए ध्यान दें mysqld


2
यह लॉग-धीमी-क्वेरीज़ के बजाय log_slow_queries है
naomi

6
इसके अलावा आपको पहले लॉग फाइल को मैन्युअल रूप से बनाना होगा:sudo mkdir /var/log/mysql sudo touch /var/log/mysql/slow-query.log sudo chown -R _mysql /var/log/mysql/
चार्ल्स

1
log_slow_queriesद्वारा MySQL 5.1.29 में पदावनत किया गया slow-query-logMySQL 5.1 संदर्भ मैनुअल अधिक जानकारी के है।
Xeoncross


7

MySQL मैन्युअल - धीमी-क्वेरी-लॉग-फ़ाइल

यह दावा करता है कि आप धीमी-लॉग फ़ाइल (5.1.6 आगे) सेट करने के लिए निम्नलिखित चला सकते हैं:

set global slow_query_log_file = 'path';

चर slow_query_log बस नियंत्रित करता है कि यह सक्षम है या नहीं।


6

ये काम

SET GLOBAL LOG_SLOW_TIME = 1;
SET GLOBAL LOG_QUERIES_NOT_USING_INDEXES = ON;

मेरे सेटअप पर टूट गया 5.1.42

SET GLOBAL LOG_SLOW_QUERIES = ON;
SET GLOBAL SLOW_QUERY_LOG = ON;
set @@global.log_slow_queries=1;

http://bugs.mysql.com/bug.php?id=32565

ऐसा करने का सबसे अच्छा तरीका लगता है कि log_slow_time बहुत अधिक सेट किया गया है और धीमी क्वेरी लॉग को "बंद" कर रहा है। इसे सक्षम करने के लिए log_slow_time को कम करें। Log_queries_not_using_indexes के लिए समान ट्रिक (बंद पर सेट) का उपयोग करें।


5

मुझे लगता है कि समस्या यह सुनिश्चित कर रही है कि MySQL सर्वर के पास फ़ाइल के अधिकार हैं और इसे संपादित कर सकते हैं।

यदि आप इसे फ़ाइल तक पहुँच पाने के लिए प्राप्त कर सकते हैं, तो आप सेटिंग आज़मा सकते हैं:
SET GLOBAL slow_query_log = 1;

यदि नहीं, तो कॉन्फ़िगरेशन फ़ाइल को बदलने के बाद आप सर्वर को हमेशा 'पुनः लोड' कर सकते हैं। आम तौर पर linux पर/etc/init.d/mysql reload


मुझे मिलता है: ERROR 1193 (HY000): अज्ञात सिस्टम वेरिएबल 'slow_query_log'
mmattax

MySQL का कौन सा संस्करण चल रहा है?
इयान ग्रेगरी

3

यदि आप सामान्य त्रुटि लॉग और धीमी क्वेरी त्रुटि लॉग को फ़ाइल के बजाय तालिका में सक्षम करना चाहते हैं

फ़ाइल के बजाय तालिका में लॉगिंग शुरू करने के लिए:

set global log_output = “TABLE”;

सामान्य और धीमी क्वेरी लॉग को सक्षम करने के लिए:

set global general_log = 1;
set global slow_query_log = 1;

लॉग देखने के लिए:

select * from mysql.slow_log;
select * from mysql.general_log;

अधिक जानकारी के लिए इस लिंक पर जाएँ

http://easysolutionweb.com/technology/mysql-server-logs/


1

यह mysql> 5.5 पर काम करना चाहिए

शो वारियर्स '% लंबा%' पसंद करता है;

सेट लंबी long_query_time = 1;

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