Ich habe diese logrotate Konfiguration und ich laufe auf Ubuntu 10.04.
/var/log/mysql/mysql-slow.log {
daily
rotate 3
compress
notifempty
missingok
create 660 mysql adm
postrotate
if test -x /usr/bin/mysqladmin && \
/usr/bin/mysqladmin ping &>/dev/null
then
/usr/bin/mysqladmin flush-logs
fi
endscript
}
Ich habe das gestern in /etc/logrotate.d abgelegt und heute wurde das Log nicht gedreht.
Unten sind die Dinge, die ich getan habe:
- Ich habe überprüft, ob sich das Protokoll in der Tat in /var/log/mysql/mysql-slow.log befindet
- mysqladmin-Zeilen funktionieren einwandfrei, wenn sie als root ausgeführt werden
- mysql kann in das mysql-slow.log schreiben
Als ich das tat:
$ logrotate -d -f mysql-slow
reading config file mysql-slow
reading config info for /var/log/mysql/mysql-slow.log
Handling 1 logs
rotating pattern: /var/log/mysql/mysql-slow.log forced from command line (3 rotations)
empty log files are not rotated, old logs are removed
considering log /var/log/mysql/mysql-slow.log
log needs rotating
rotating log /var/log/mysql/mysql-slow.log, log->rotateCount is 3
dateext suffix '-20120329'
glob pattern '-[0-9][0-9][0-9][0-9][0-9][0-9][0-9][0-9]'
renaming /var/log/mysql/mysql-slow.log.3.gz to /var/log/mysql/mysql-slow.log.4.gz (rotatecount 3, logstart 1, i 3),
renaming /var/log/mysql/mysql-slow.log.2.gz to /var/log/mysql/mysql-slow.log.3.gz (rotatecount 3, logstart 1, i 2),
renaming /var/log/mysql/mysql-slow.log.1.gz to /var/log/mysql/mysql-slow.log.2.gz (rotatecount 3, logstart 1, i 1),
renaming /var/log/mysql/mysql-slow.log.0.gz to /var/log/mysql/mysql-slow.log.1.gz (rotatecount 3, logstart 1, i 0),
renaming /var/log/mysql/mysql-slow.log to /var/log/mysql/mysql-slow.log.1
creating new /var/log/mysql/mysql-slow.log mode = 0660 uid = 20004 gid = 4
running postrotate script
running script (multiple) with arg /var/log/mysql/mysql-slow.log : "
if test -x /usr/bin/mysqladmin && \
/usr/bin/mysqladmin &>/dev/null
then
/usr/bin/mysqladmin flush-logs
fi
"
compressing log with: /bin/gzip
removing old log /var/log/mysql/mysql-slow.log.4.gz
- Wo ist das Protokoll, aus dem hervorgeht, dass Logrotate erfolgreich war? Ich möchte sehen, ob irgendetwas darauf hindeutet, dass ein Problem aufgetreten ist.
- Irgendwelche Ideen, warum das Logrotate nicht funktioniert?
crond
läuft?mysql-server
? Rennengrep '/var/log/mysql' /etc/logrotate.d/*
./etc/crontab
Datei in der Zeile, die mit endet/etc/cron.daily )
. Vielleicht haben Sie die logrotate-Konfiguration erstellt, nachdem die Cron-Tagesjobs für diesen Tag bereits ausgeführt wurden?Antworten:
Ein häufiges Problem ist, dass beim erstmaligen Einrichten eines täglichen Eintrags für logrotate.d der erste Tag nicht gedreht wird. Wenn Sie eine zeitbasierte Rotation (täglich / wöchentlich / monatlich) verwenden, kritzelt logrotate einen Datumsstempel des letzten Datums, an dem die Datei in
/var/lib/logrotate/status
(oder/var/lib/logrotate.status
auf RHEL-Systemen) gesichtet wurde .Das gekritzelte Datum wird zum Bezugsdatum der
logrotate
zukünftigen Serien, mit denen "tägliche" Umdrehungen verglichen werden. Da der Standard-Cron-Job täglich ausgeführt wird, ist dies in der Regel nur bei täglichen Jobs ein Problem.Sie können dieses Problem auf zwei Arten vermeiden.
Lauf
sudo logrotate -f /etc/logrotate.d/<my rotate job>
Bearbeiten
/var/lib/logrotate/status
und fügen Sie die Zeile manuell hinzu:"/var/log/my_special.log" 2013-4-8
quelle
-f
(zumindest auf meinem RH - Derivat).-f
Für Force Rotation,-d
für Debug, impliziert Debug auch einen Testlauf, sodass im eingeschalteten Zustand keine Änderungen vorgenommen werden-d
.-d
Trockenlauf zu implizieren, ist eine heikle Angelegenheit. Es wurden keine Änderungen vorgenommen und ich kratzte mir am Kopf, bis ich diese Tatsache bemerkte.Laut folgendem Artikel von Slicehost:
Grundlegendes zu Logrotate unter Ubuntu - Teil 2
http://articles.slicehost.com/2010/6/30/understanding-logrotate-on-ubuntu-part-2
... in der
/var/lib/logrotate/status
Datei " werden Informationen darüber gespeichert, wann die einzelnen Protokolldateien zuletzt gedreht wurden ". Die logrotate-Manpage besagt, dass es sich um eine " Statusdatei " handelt.Hier in ServerFault gibt es eine weitere Diskussion, die ebenfalls nützlich sein kann:
Wie geht Logrotate genau mit "täglich" um?
In dieser Diskussion sagt "MadHatter" in Bezug auf die Datei "status" (state) Folgendes:
Ich hoffe das hilft.
quelle
Wenn
mysqladmin
ein Benutzer oder ein Kennwort erforderlich ist, wird es nicht/root/.my.cnf
ohne Änderung aus der Konfiguration gelesen .Versuchen Sie, Ihre Ausgabe an den Logger weiterzuleiten, um zu sehen, was gerade passiert.
MySQL protokolliert nach dem Drehen keinen Fehler in einer neuen Datei?
quelle