Was ich so treibe...

Uli's IT-Blog - Konzeption, Entwicklung, Betrieb

Probleme mit MySQL: start: Job failed to start

Auf einem meiner Rechner habe ich gestern diverse Updates eingespielt mit

  • apt-get update
  • apt-get upgrade
  • apt-get dist-upgrade

Dabei wurde auch MySQL aktualisiert. Leider läßt es sich anschließend nicht mehr starten. Es erscheint die Fehlermeldung “start: Job failed to start”.

Fehlermeldung beim Start von MySQL
1
2
service mysql start
  start: Job failed to start

Eine Sichtung der Log-Dateien unter /var/log liefert leider auch keine brauchbaren Informationen:

Sichtung der Log-Dateien
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
cd /var/log
ls -ltra
  -rw-rw-r--  1 root      utmp  15744 2013-05-01 06:28 wtmp
  -rw-rw-r--  1 root      utmp 292292 2013-05-01 06:28 lastlog
  -rw-r-----  1 syslog    adm   93910 2013-05-01 06:40 auth.log
  -rw-r-----  1 syslog    adm   17682 2013-05-01 06:47 syslog
  -rw-r-----  1 syslog    adm  142088 2013-05-01 06:47 messages
  -rw-r-----  1 syslog    adm   78161 2013-05-01 06:47 kern.log
  -rw-r-----  1 syslog    adm    5394 2013-05-01 06:47 daemon.log
# daemon.log: mysql pre-start process (2168) terminated with status 1
# kern.log: type=1505 audit(1367383657.073:19):  operation="profile_replace" pid=2170 name="/usr/sbin/mysqld"
# messages: type=1505 audit(1367383657.073:19):  operation="profile_replace" pid=2170 name="/usr/sbin/mysqld"
# syslog:
#   type=1505 audit(1367383657.073:19):  operation="profile_replace" pid=2170 name="/usr/sbin/mysqld"
#    mysql pre-start process (2168) terminated with status 1
# auth.log: ...

Logging von Upstart aktivieren

Im Kochbuch für Upstart steht, wie man das Logging für Upstart aktiviert:

  • initctl log-priority # Ausgabe: message
  • initctl log-priority debug
  • service mysql start

Danach stehen deutlich mehr Informationen in den Log-Dateien. Leider betreffen diese mehr die Arbeitsweise vom Upstart-Init-Daemon als die der zu startenden Services.

Also: Logging für Upstart wieder deaktivieren:

  • initctl log-priority message

Logging für ein Upstart-Skript aktivieren

Im Kochbuch für Upstart steht, wie man Logs für die Upstart-Skripte erzeugt. Die Idee ist, dem Ansatz “Log Script Section Output to Syslog” zu folgen:

Auszug aus dem Upstart-Kochbuch - Skriptausgabe loggen
1
2
3
4
script
  exec >/dev/kmsg 2>&1
  echo "this data will be sent to the system log"
end script

Zunächst müssen wir die Konfigurationsdatei für den MySQL-Upstart-Service finden: /etc/init/mysql.conf. Eine Sichtung liefert:

  • Es gibt ein “pre-start script”
  • In den Fehlermeldungen war die Rede von “pre-start process”
  • Also: Wir schauen uns den “pre-start”-Teil näher an

Dieser Teil sieht so aus:

/etc/init/mysql.conf - pre-start
1
2
3
4
5
6
7
8
9
10
pre-start script
    #Sanity checks
    [ -r $HOME/my.cnf ]
    [ -d /var/run/mysqld ] || install -m 755 -o mysql -g root -d /var/run/mysqld
    # Load AppArmor profile
    if aa-status --enabled 2>/dev/null; then
        apparmor_parser -r /etc/apparmor.d/usr.sbin.mysqld || true
    fi
    LC_ALL=C BLOCKSIZE= df --portability /var/lib/mysql/. | tail -n 1 | awk '{ exit ($4<4096) }'
end script

Es fällt auf, dass der freie Speicherplatz auf /var/lib/mysql/. geprüft wird. Möglicherweise ist also auch einfach diese Partition voll gelaufen!

Sichtung und Bereinigung der Partition /var

Sichtung und Bereinigung der Partitonlink
1
2
3
4
5
df /var
  /dev/mapper/systemvg-varlv  376807    354385      2966 100% /var
apt-get clean
df /var
  /dev/mapper/systemvg-varlv  376807    202839    154512  57% /var

Nun kann man MySQL wieder normal starten!

Normaler Start von MySQL
1
2
service mysql start
  mysql start/running, process 1589

Links

Comments