MySQL - Logrotate

  • Themenstarter Themenstarter Gelöschtes Mitglied 15619
  • Beginndatum Beginndatum
G

Gelöschtes Mitglied 15619

Guest
Hallo,

ich habe die RPM's für MySQL von MySQL :: Die populärste Open-Source-Datenbank der Welt installiert und habe einen Logrotate eingerichtet.

/etc/logrotate.d/mysql

/var/lib/mysql/Servername.local.err {
daily
rotate 7
missingok
create 600 mysql mysql
compress
sharedscripts
postrotate
# just if mysqld is really running
if test -x /usr/bin/mysqladmin && \
/usr/bin/mysqladmin ping &>/dev/null
then
/usr/bin/mysqladmin flush-logs
fi
endscript
}

/var/lib/mysql/Servername-slow.log {
daily
rotate 7
missingok
create 600 mysql mysql
compress
sharedscripts
postrotate
# just if mysqld is really running
if test -x /usr/bin/mysqladmin && \
/usr/bin/mysqladmin ping &>/dev/null
then
/usr/bin/mysqladmin flush-logs
fi
endscript
}

Dann habe ich unter /root/ eine .my.cnf mit User & Passwort angelegt. Die MySQL-Logdateien werden auch erfolgreich rotiert, doch es wird erst nach einem service mysql reload/service rsyslog reload wieder in die Logdateien geschrieben. Nach dem Rotate sind die Dateien leer solange ich die Befehle nicht ausführe.

Jemand eine Idee?

LG
 
Logrotate löscht dem Server die Dateien unter dem Arsch weg. Das funktioniert bei MySQL nicht, da der Server sich intern merkt wo die Datei-Inode der Logdatei ist. Ist diese Inode nicht mehr vorhanden, schreibt er quasi in's Leere. Daher ist Logrotate für MySQL nicht wirklich brauchbar, es sei denn man führt halt danach ein Reload aus. Die einfachere Möglichkeit ist, die Datei zu kopieren und sie dann zu leeren. Etwa so:

Code:
cp logdatei logdatei.bak
echo "" > logdatei

Damit bleibt die ursprüngliche Logdatei erhalten und MySQL kann weiter darin schreiben.
 
Zurück
Oben