2012-07-23 11 views
21

मैं अपने सर्वर पर धीमी क्वेरी लॉग कैसे सक्षम करूं? मैंने इसे फ़ाइल में log-slow-queries =[path] जोड़ कर अपने स्थानीय होस्ट पर सक्षम किया है, लेकिन यह नहीं पता कि मेरे सर्वर पर इसे कैसे जोड़ा जाए। मेरा सर्वर लिनक्स आधारित है और PHP संस्करण 5.2.16 है।मैं अपने सर्वर पर MySQL धीमी क्वेरी लॉग कैसे सक्षम कर सकता हूं?

उत्तर

40

धीमी क्वेरी लॉग सक्षम करना PHP संस्करण के साथ कोई संबंध नहीं है। आपको इसे MySQL सर्वर में सक्षम करना होगा। आप दो तरह से

  1. में सक्षम कर सकते हैं क्रम
  2. सर्वर के दौरान में

शुरू करते हैं तो अपने सर्वर से ऊपर है आप क्रम में ही धीमी गति से क्वेरी लॉग सेट कर सकते हैं 5.1.6। जिसके लिए आपको यह प्रश्न निष्पादित करना होगा।

set global log_slow_queries = 1; 
set global slow_query_log_file = <some file name>; 

या वैकल्पिक रूप से आप my.cnf में इस विकल्प सेट कर सकते/my.ini विकल्प फ़ाइलों

log_slow_queries = 1; 
slow_query_log_file = <some file name>; 

कहाँ विकल्प फ़ाइल बदल गया है, MySQL सर्वर पुन: प्रारंभ करने की जरूरत है। mysql विकल्प फ़ाइल के

स्थान यहाँ http://dev.mysql.com/doc/refman/4.1/en/mysql-config-wizard-file-location.html

FYI पाया जा सकता है: log_slow_queries MySQL 5.6.1 में हटा दिया गया था और slow_query_log बजाय प्रयोग किया जाता है। http://dev.mysql.com/doc/refman/5.6/en/server-options.html#option_mysqld_log-slow-queries

लेकिन प्रदर्शन के लिए आप TABLE करने के लिए लॉग निर्गम (विकल्प log_output) सेट कर सकते हैं। इसके अलावा, आप long_query_time की तरह एक नज़र अन्य धीमी क्वेरी लॉग विकल्प हो सकता है, log-queries-not-using-indexes

+1

जब मैं इस क्वेरी को चला रहा हूं 'सेट ग्लोबल slow_query_log = 1;' मुझे यह त्रुटि मिल रही है '# 1193 - अज्ञात सिस्टम चर' slow_query_log'' – Juice

+1

सूखी यह 'log_slow_queries' होना चाहिए, मैं आवश्यक संपादन कर दूंगा। –

+1

मैं यह आदेश भी चलाता हूं 'वैश्विक log_slow_queries = 1 सेट करें;' अब यह दिखा रहा है '# 1238 - परिवर्तनीय' log_slow_queries 'केवल पढ़ने योग्य चर है – Juice

36

आप इसे अस्थायी रूप से सेट कर सकते हैं, निम्न कमांड चलाकर:

set global slow_query_log = 1; 
set global slow_query_log_file = '/var/log/mysql-slow.log'; 

लेकिन जब mysql पुनरारंभ अपने परिवर्तनों को पूर्ववत कर दिया जाएगा।

आप इसे स्थायी रूप से सेट कर सकते हैं अपने my.cnf फ़ाइल में निम्न जोड़कर,:

slow-query-log=1 
slow-query-log-file=/var/log/mysql-slow.log 

my.cnf के स्थान ओएस से भिन्न होता है, लेकिन अक्सर /etc/my.cnf में पाया जाता है, या /etc/mysql/my.cnf:

सहेजने के बाद आपके परिवर्तन, आपको MySQL को पुनरारंभ करने की आवश्यकता होगी। इस ओएस द्वारा भिन्न हो सकते हैं, लेकिन यहाँ कुछ सामान्य उदाहरण हैं:

sudo /etc/init.d/mysqld restart 

और

sudo service mysqld restart 
+0

जब मैं इस क्वेरी 'चला रहा हूँ सेट ग्लोबल slow_query_log = 1; 'मुझे यह त्रुटि मिल रही है' # 11 9 3 - अन ज्ञात सिस्टम चर 'slow_query_log'' – Juice

+0

thanx 4 ur help .. – Juice

+0

परेशान मत हो। चूंकि दोनों उत्तरों मेरे लिए पूरी तरह से मददगार थे, इसलिए मैंने दोनों को अप-वोट दिया है। और मैं केवल एक ही जवाब स्वीकार कर सकता हूं अन्यथा मैंने तुम्हारा भी स्वीकार कर लिया होगा। मैंने उसका जवाब स्वीकार कर लिया है क्योंकि उसने मेरे संदेहों का जवाब दिया था। – Juice

12

पहले (रूट :) के रूप में

mkdir /var/log/mysql 
touch /var/log/mysql/log-slow-queries.log 
chown mysql:mysql -R /var/log/mysql 

फिर [mysqld] में/आदि के तहत/मेरे।conf (या जहाँ भी अपने विन्यास फाइल :) है

slow_query_log = 1 
log-queries-not-using-indexes 
long_query_time=1 
log-slow-queries=/var/log/mysql/log-slow-queries.log 

अगला:

service mysql restart 

अंत:

mysql 
mysql> SELECT SLEEP(10); 
mysql> quit 

सत्यापन:

cat /var/log/mysql/log-slow-queries.log 

/usr/sbin/mysqld, Version: 5.5.42-cll (MySQL Community Server (GPL)). started with: 
Tcp port: 0 Unix socket: (null) 
Time     Id Command Argument 
# Time: 150727 0:05:17 
# [email protected]: root[root] @ localhost [] 
# Query_time: 10.000215 Lock_time: 0.000000 Rows_sent: 1 Rows_examined: 0 
SET timestamp=1437973517; 
select sleep(10); 
संबंधित मुद्दे