धीमी क्वेरी लॉगिंग नहीं


13

मैं अनुकूलन का उपयोग करने वाले किसी भी प्रश्न की पहचान करने के लिए हमारे सर्वर पर धीमी क्वेरी लॉगिंग को सक्षम करने का प्रयास कर रहा हूं। बहुत सरल लगता है, हालाँकि मेरी फ़ाइल को नहीं लिखा जा रहा है। मुझे कोई त्रुटि या कुछ भी पसंद नहीं है, यह सिर्फ धीमी क्वेरी को लॉग इन नहीं करता है। मुझे मेरे कॉन्फ़िगर परिवर्तन के बाद mysql को पुनरारंभ करना याद है।

मैं MySQL Ver 5.1.61 का उपयोग कर रहा हूं। यहाँ मैं अपने.cnf में क्या है:

slow-query-log=1
slow-query-log-file=/var/logs/my.slow.log
long_query_time=1

फ़ाइल /var/logs/my.slow.log का मालिक के रूप में mysql है, यह भी डीबगिंग के हित में है जो मैंने लॉग फाइल पर सभी को पढ़ा / लिखा।

मेरे पास long_query_time से ऊपर 1 में सेट है जैसा कि मैं देखना चाहता हूं कि क्या यह काम कर रहा है। मैंने इसे कम करने की कोशिश की है (उदाहरण 0.3), लेकिन मैं अभी भी कुछ भी लॉग इन नहीं कर रहा हूं। मुझे पता है कि मेरे ऐप की क्वेरीज़ 1 सेकंड से अधिक समय तक चल रही हैं और मैं SELECT sleep(10);परीक्षण के लिए जानबूझकर लॉग क्वेरीज़ ( ) भी चला रहा हूं और लॉग अभी भी खाली है।

मैंने डॉक्स के माध्यम से देखा है, जो मैं देख सकता हूं वह काम कर रहा है। किसी के पास कोई सुझाव है जो मैं गलत कर रहा हूं? किसी भी सलाह की सराहना की जाएगी, बहुत धन्यवाद!

संपादित करें: जैसा कि टिप्पणियों में पूछा गया है मैंने क्वेरी चलाई:

 `SELECT variable_value FROM information_schema.global_variables WHERE variable_name IN ('slow_query_log','slow_query_log_file','long_query_time');`

परिणाम:

10.0000000
/var/run/mysqld/mysqld-slow.log
OFF

स्पष्ट रूप से मेरे विन्यास में परिवर्तन पर ध्यान नहीं दिया जा रहा है क्योंकि मेरा मानना ​​है कि ये चूक हैं। मुझे पूरा यकीन है कि मेरी कनिष्ठ फाइल जो मैं बदल रहा हूं, उसे पार्स किया जा रहा है जैसे कि मैं एक अवैध मूल्य में डाल देता हूं mysql फिर से शुरू होने पर त्रुटि करेगा। यहां क्या हो सकता है?

एक और संपादन:

@RolandoMySQLDBA की सलाह लेने और [mysqld]अपनी सेटिंग्स के तहत मेरी धीमी क्वेरी कॉन्फिगर लाइनों को ले जाने से बचत होने लगती है। अब उपरोक्त variable_value क्वेरी का परिणाम है:

1.0000000
/var/logs/my.slow.log
ON

हालाँकि मैं अभी भी फाइल नहीं देख रहा हूँ my.slow.log को लिखा जा रहा है। मुझे नहीं लगता कि यह एक अनुमतियाँ समस्या है क्योंकि फ़ाइल mysql के स्वामित्व में है और मैंने फ़ाइल पर सभी उपयोगकर्ताओं के लिए सभी अनुमतियाँ जोड़ दी हैं। क्या कोई ऐसा कारण सोच सकता है कि यह काम क्यों नहीं करेगा?

संपादित करें: हल! धीमी क्वेरी लॉग का मार्ग गलत था, यह / var / log * s * / my.slow.log के बजाय /var/log/my.slow.log होना चाहिए था । मदद के लिए सभी को धन्यवाद, मैंने आवंटित सीखा है!


1
कृपया रन करें SELECT variable_value FROM information_schema.global_variables WHERE variable_name IN ('slow_query_log','slow_query_log_file','long_query_time');और इसका आउटपुट पोस्ट करें ।
RolandoMySQLDBA

1
यदि किसी को इसे पढ़ने के बाद भी समस्या है, तो log_output चर की जाँच करें। SET GLOBAL log_output=FILEयह मेरे लिए तय है।
मोलहोम जूल

जवाबों:


21

मुझे लगता है कि मुझे जवाब मिला:

आपको उन विकल्पों को [mysqld]सेक्शन में लाना होगा

[mysqld]
slow-query-log=1
slow-query-log-file=/var/logs/my.slow.log
long_query_time=1

और mysql को पुनरारंभ करें

अद्यतन 2013-03-05 16:36 ईएसटी

मुझे नहीं पता कि यह अभी भी क्यों हो रहा है, लेकिन कृपया यह प्रयास करें:

service mysql stop
rm -f /var/logs/my.slow.log
touch /var/logs/my.slow.log
chown mysql:mysql /var/logs/my.slow.log
service mysql start

फिर चलाएं SELECT SLEEP(10);और देखें कि क्या यह भूमि में है/var/logs/my.slow.log


धन्यवाद! आपने जो सुझाव दिया वह मदद करता है, ऐसा लगता है कि सेटिंग्स ठीक से बचत कर रही हैं लेकिन मुझे अभी भी लिखित चीजें नहीं मिल रही हैं। मैंने इसे दर्शाने के लिए अपना प्रश्न संपादित किया है।
मैथोड

अरे, बस जिज्ञासु, मैं एक VM के तहत एक डेबियन प्रणाली चला रहा हूँ। क्या आपके उत्तर में रास्ता सही है? /var/logs/इसके बजाय/var/log
सिल्वियू-मैरिएन

केवल सूचना। CentOS 6.6 mysql 5.1.73 पर्यावरण पर भी "टच एंड चाउन" आवश्यक है।
Fumisky वेल्स

मैं बस एक सिस्टम भर में भाग गया, जहाँ उन्होंने इन्हें लगाने का प्रयास किया [mysqld_safe], जो काम नहीं आया। उन्हें [mysql]समस्या के समाधान में लगा दिया ।
माइकल हैम्पटन
हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.