Im MySQL Datenbank Server gibt es verschiedene Möglichkeiten und Wege um ein Logging zur Fehleranalyse zu aktivieren.
Ich möchte hier kurz zeigen welche unterschiedlichen Logfiles es gibt und wie diese aktiviert werden. Da mein Server Betriebsystem wie immer Debian ist, kann es gut möglich sein, dass bei anderen Linux Distributionen die Konfigurationen abweichen. Ich gehe hierbei auf das Error Log, den Query Log und den Slow Query Log ein, den Binary Log lasse ich außen vor, da er nur unter speziellen Voraussetzung zum Einsatz kommt und hoch performante Hardware voraussetzt.
- Errror Log: Beinhaltet alle Error (Fehler) Informationen inkl. Start und Stop
- Query Log: Loggt alle Befehle und Queries, welche am MySQL Server abgesetzt werden.
- Slow Query Log: Wie der Name schon sagt, werden hier alle „slow queries“, also alle langsamen SQL Statements geloggt
MySQL Logging aktivieren
Die MySQL Konfigurationsdatei befindet sich unter /etc/mysql/my.cnf. Hier werden sämtliche Logging Parameter unter [mysqld] aufgeführt. Die Datei kann mit eurem Lieblingseditor bearbeitet werden. zB: vi 😉
[bash]# * Logging and Replication#
# Both location gets rotated by the cronjob.
# Be aware that this log type is a performance killer.
# As of 5.1 you can enable the log at runtime!
#general_log_file = /var/log/mysql/mysql.log
#general_log = 1
#
# Error logging goes to syslog due to /etc/mysql/conf.d/mysqld_safe_syslog.cnf.
#
# Here you can see queries with especially long duration
#log_slow_queries = /var/log/mysql/mysql-slow.log
#long_query_time = 2
#log-queries-not-using-indexes
#
# The following can be used as easy to replay backup logs or for replication.
# note: if you are setting up a replication slave, see README.Debian about
# other settings you may need to change.
#server-id = 1
#log_bin = /var/log/mysql/mysql-bin.log
expire_logs_days = 10
max_binlog_size = 100M
#binlog_do_db = include_database_name
#binlog_ignore_db = include_database_name[/bash]
Logfiles sind in der Standardkonfiguration deaktiviert. Lediglich das Error Log wird an den Syslog übergeben.
[sam id=“2″ codes=“true“]MySQL Error Log aktivieren
Standardmässig werden unter Debian die MySQL Errors in den Syslog geschrieben. Die Konfigurationsdatei hierfür liegt unter /etc/mysql/conf.d/mysqld_safe_syslog.cnf welche folgendes beinhaltet:
[bash][mysqld_safe] syslog[/bash]Syslog auslesen:
[bash]tail /var/log/syslog[/bash]Wer die Error Log nicht in den Syslog, sondern als eigenständige Logfile haben möchte, kann die oberen Zeilen einfach auskommentieren oder die Datei /etc/mysql/conf.d/mysqld_safe_syslog.cnf löschen. In der my.cnf muss dann folgendes hinzugefügt werden:
[bash][mysqld_safe] log_error=/var/log/mysql/mysql_error.log [mysqld] log_error=/var/log/mysql/mysql_error.log[/bash]MySQL Query Log aktivieren
Um den Query Log zu aktivieren genügt es die zwei folgenden Zeilen in der my.cnf auszukommentieren. Die Logfile kann natürlich auch auf einen anderen Pfad gelegt werden:
[bash]general_log_file = /var/log/mysql/mysql.loggeneral_log = 1[/bash]
Query Log ansehen:
[bash]tail /var/log/mysql.log[/bash]MySQL Slow Query Log aktivieren
Der Slow Query Log wird ähnlich wie der Standard Query log in der my.cnf aktiviert:
[bash]#log_slow_queries = /var/log/mysql/mysql-slow.log#long_query_time = 2
#log-queries-not-using-indexes[/bash]
Slow Query Log ansehen:
[bash]tail /var/log/mysql-slow.log[/bash]MySQL Server neu starten
Damit die Änderungen wirksam werden muss der MySQL Server noch neu gestartet werden:
[bash]/etc/init.d/mysql restart[/bash]