Warum gibt es kein MySQL-Protokoll für langsame Abfragen?

Warum gibt es kein MySQL-Protokoll für langsame Abfragen?

Ich habe heute auf meinem CentOS-Server nach einem MySQL Slow Queries Log gesucht, konnte das Protokoll aber nicht finden. Ich habe sogar einen „SELECT SLEEP(2)“-Test durchgeführt, in der Hoffnung, diese Datei erstellen zu können. Beachten Sie, dass ich mich mit Servern nicht besonders gut auskenne, daher bin ich für jede Hilfe dankbar.

 7
  8 [mysql.server]
  9 user=mysql
 10 basedir=/var/lib
 11
 12 [mysqld]
 13 long_query_time = 1
 14 log_slow_queries=/var/log/mysql_slow_queries.log
 15 log=/var/log/mysql.query.log
 16
 17 ## FINE TUNING ##
 18
 19 key_buffer              = 16M
 20 max_allowed_packet      = 16M
 21 thread_stack            = 128K
 22 thread_cache_size       = 8
 23 query_cache_limit       = 1M
 24 query_cache_size        = 16M
 25
 26 [mysqld_safe]
 27 log-error=/var/log/mysqld.log
 28 pid-file=/var/run/mysqld/mysqld.pid
 29 safe-show-databases

Wie Sie sehen, lautet der Pfad: /var/log/mysql_slow_queries.log – aber diese Datei ist nirgends zu finden. Ich habe jedoch mysql.query.log und mysqld.log problemlos im Verzeichnis gefunden. Warum existiert meine MySQL Slow Queries-Datei nicht?

Antwort1

Nachdem Sie die Änderungen an Ihrer Datei vorgenommen haben my.cnf, müssen Sie den MySQL-Dienst neu starten. Ich bin nicht sicher, auf welchem ​​System Sie sich befinden, aber normalerweise service mysqld restartfunktioniert es oder service mysql restart– schauen Sie einfach in nach /etc/init.d/.

Stellen Sie außerdem sicher, dass die Datei erstellt und auf der Festplatte verfügbar ist:

touch /var/log/mysql_slow_queries.log
chown mysql:mysql /var/log/mysql_slow_queries.log

Darüber hinaus ist die Zeit bei Datenbanken nicht so wichtig, sondern eher bei Abfragen ohne Indizes. Erwägen Sie, Folgendes zu Ihrem hinzuzufügen my.cnf. Starten Sie MySQL natürlich neu, wenn Sie dies getan haben:

log-queries-not-using-indexes

Antwort2

berühren Sie /var/log/mysql_slow_queries.log

chown mysql:mysql

und starten Sie Ihren MySQL-Dienst neu

mysql -u -pmypassword

wähle sleep(60);

cat /var/log/mysql_slow_queries.log

/usr/sbin/mysqld, Version: 5.5.28-log (Source distribution). started with:
Tcp port: 3306  Unix socket: /var/run/mysql/mysql.sock
Time                 Id Command    Argument
# Time: 130904 23:22:14
# User@Host: root[root] @ localhost []
# Query_time: 60.002284  Lock_time: 0.000000 Rows_sent: 1  Rows_examined: 0
SET timestamp=1378329734;
select sleep(60);

Antwort3

Fügen Sie slow_query_log=1es dem [mysqld]Abschnitt hinzu my.cnfund starten Sie mysqld neu.

Antwort4

Beachten Sie, dass in Centos 7 das Protokoll für langsame Abfragen standardmäßig und ohne MySQL-Neustart an dieser Position aktiviert ist:

/var/lib/mysql/$HOSTNAME.log

In den anderen Antworten erfahren Sie, wie Sie Ihre persistente Konfiguration anwenden und an eine andere Position verschieben.

verwandte Informationen