Debian-Sarge AMD64 mit MySQL 5.0 Backport Problem

Heute (Nacht) machte ein merkwürdiges Problem auf einem Kundenserver einige Recherche notwendig. Der MySQL-Server (5.0.24a-Debian) verweigerte sporadisch aber vehement einen Neustart, indem er vorgab auf der Partition sei nicht genügend Speicherplatz vorhanden…

/etc/init.d/mysql[12345]: ERROR: The partition with /var/lib/mysql is too full!

Anscheinend ist hier ein Bug im coreutils-Paket von Sarge, und da im stable-Branch nur noch Security-Updates gemacht werden, ist ein Update wohl nicht in Sicht. Mit ein wenig Überlegung und der Erklärung von Sven Hartge zu dem Problem habe ich aber einen Workaround finden können.
In der Datei /etc/init.d/mysql gibt es eine Zeile die den Speicherplatz auf dem Datenlaufwerk von MySQL prüft:

if LC_ALL=C BLOCK_SIZE= df --portability $datadir/. | tail -n 1 | awk '{ exit ($4>4096) }'; then log_failure_msg "$0: ERROR: The partition with $datadir is too full!" echo "ERROR: The partition with $datadir is too full!" | $ERR_LOGGER exit 1 fi

Da „df“ aber nur falsche Angaben bringt wenn die Variable BLOCK_SIZE nicht gesetzt ist, ist es meiner Meinung nach am Einfachsten diese Variable auf den Wert zu setzen der bei der Abfrage verlangt wird, also 1024. Im Folgenden wird dann geprüft, ob noch mehr als 4096 Kbyte (= 4 MB) frei sind, was normalerweise auch der Fall sein sollte. Die veränderte Zeile sieht dann so aus:

if LC_ALL=C BLOCK_SIZE=1024 df --portability $datadir/. | tail -n 1 | awk '{ exit ($4>4096) }'; then

Man beachte die 1024 bei der BLOCK_SIZE Zuweisung.

Ich hoffe das hilft jemandem!

Getagged mit: , , ,
2 Kommentare zu “Debian-Sarge AMD64 mit MySQL 5.0 Backport Problem
  1. Chris sagt:

    Mir hat’s sehr geholfen, vielen Dank :o))

    Schönes Wochenende noch!

    Der Chris

  2. heinz sagt:

    Sieht gut aus bis jetzt 🙂 Hilft anscheinend immer noch

Schreibe einen Kommentar

Deine E-Mail-Adresse wird nicht veröffentlicht.