strace
लाइव MySQL / MariaDB प्रश्नों को देखने का सबसे तेज़ तरीका डीबगर का उपयोग करना है। strace
उदाहरण के लिए, लिनक्स पर आप उपयोग कर सकते हैं :
sudo strace -e trace=read,write -s 2000 -fp $(pgrep -nf mysql) 2>&1
चूंकि बहुत सारे बच गए पात्र हैं, आप निम्न कमांड में ऊपर स्ट्रीप के आउटपुट को पाइपिंग (बस |
इन दो वन-लाइनर्स के बीच जोड़ सकते हैं) को प्रारूपित कर सकते हैं :
grep --line-buffered -o '".\+[^"]"' | grep --line-buffered -o '[^"]*[^"]' | while read -r line; do printf "%b" $line; done | tr "\r\n" "\275\276" | tr -d "[:cntrl:]" | tr "\275\276" "\r\n"
तो आपको कॉन्फ़िगरेशन फ़ाइलों को छूने के बिना, बिना समय के साथ काफी साफ एसक्यूएल प्रश्नों को देखना चाहिए।
जाहिर है कि यह लॉग को सक्षम करने के मानक तरीके को प्रतिस्थापित नहीं करेगा, जो नीचे वर्णित है (जिसमें SQL सर्वर को फिर से लोड करना शामिल है)।
dtrace
सर्वर को स्पर्श किए बिना लाइव MySQL प्रश्नों को देखने के लिए MySQL जांच का उपयोग करें। उदाहरण लिपि:
#!/usr/sbin/dtrace -q
pid$target::*mysql_parse*:entry /* This probe is fired when the execution enters mysql_parse */
{
printf("Query: %s\n", copyinstr(arg1));
}
फ़ाइल (जैसे watch.d
) के लिए स्क्रिप्ट के ऊपर सहेजें , और चलाएँ:
pfexec dtrace -s watch.d -p $(pgrep -x mysqld)
और जानें: MySQL को शुरू करने के साथ आरंभ करना
गिब्स MySQL स्पाईग्लास
इस जवाब को देखें ।
लॉग्स
विकास के प्रस्तावों के लिए उपयोगी कदम यहां दिए गए हैं।
इन पंक्तियों को अपने ~/.my.cnf
या वैश्विक में जोड़ें my.cnf
:
[mysqld]
general_log=1
general_log_file=/tmp/mysqld.log
पथ: /var/log/mysqld.log
या /usr/local/var/log/mysqld.log
आपकी फ़ाइल अनुमतियों के आधार पर भी काम कर सकते हैं।
फिर अपने MySQL / MariaDB को पुनः आरंभ करें ( sudo
यदि आवश्यक हो तो उपसर्ग करें ):
killall -HUP mysqld
फिर अपने लॉग की जाँच करें:
tail -f /tmp/mysqld.log
समाप्त होने के बाद, इसमें बदलाव general_log
करें 0
(ताकि आप इसे भविष्य में उपयोग कर सकें), फिर फ़ाइल को हटा दें और SQL सर्वर को फिर से शुरू करें killall -HUP mysqld
:।