J'ai cette configuration logrotate et je fonctionne sur 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
}
J'ai mis cela dans /etc/logrotate.d hier et aujourd'hui, le journal n'a pas été tourné.
Voici les choses que j'ai faites:
- J'ai vérifié que le journal se trouve bien dans /var/log/mysql/mysql-slow.log
- Les lignes mysqladmin fonctionnent correctement lorsqu'elles sont exécutées en tant que root
- mysql est capable d'écrire dans le mysql-slow.log
Quand j'ai fait ça:
$ 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
- Où se trouve le journal qui indique que le logrotate a réussi? Je veux voir s'il y a quelque chose qui dirait qu'il y a eu un problème.
- Des idées sur pourquoi le logrotate ne fonctionne pas?
crond
marche?mysql-server
- être ? Courezgrep '/var/log/mysql' /etc/logrotate.d/*
./etc/crontab
fichier, dans la ligne qui se termine par/etc/cron.daily )
. Peut-être que vous avez créé la configuration logrotate après que les tâches quotidiennes cron pour cette journée aient déjà été exécutées?Réponses:
Un problème courant est que lorsque vous configurez une entrée logrotate.d quotidiennement, elle ne tourne pas le premier jour. Lorsque vous utilisez une rotation basée sur l'heure (quotidienne / hebdomadaire / mensuelle), logrotate griffonne un horodatage de la dernière date à laquelle il a vu le fichier dans
/var/lib/logrotate/status
(ou/var/lib/logrotate.status
sur les systèmes RHEL).La date gribouillée devient la date de référence à partir de laquelle les futures exécutions
logrotate
seront utilisées pour comparer les rotations «quotidiennes». Étant donné que le travail cron par défaut s'exécute quotidiennement, il s'agit généralement uniquement d'un problème dans les travaux quotidiens.Vous pouvez éviter ce problème de deux manières;
courir
sudo logrotate -f /etc/logrotate.d/<my rotate job>
Modifiez
/var/lib/logrotate/status
et ajoutez la ligne manuellement:"/var/log/my_special.log" 2013-4-8
la source
-f
(au moins sur mon dérivé RH).-f
pour la rotation forcée,-d
pour le débogage, le débogage implique également une exécution à sec, donc aucune modification ne sera réellement effectuée pendant qu'il-d
est activé.-d
impliquant un essai à sec est délicat. Aucun changement n'était en cours et m'a fait me gratter la tête jusqu'à ce que je réalise ce fait.Selon l'article suivant de Slicehost:
Comprendre logrotate sur Ubuntu - partie 2
http://articles.slicehost.com/2010/6/30/understanding-logrotate-on-ubuntu-part-2
... le
/var/lib/logrotate/status
fichier " stocke des informations sur la dernière rotation de chaque fichier journal. ". La page de manuel logrotate dit que cela s'appelle un "fichier d'état".Il y a une autre discussion ici dans ServerFault qui peut également être utile:
Comment logrotate gère-t-il exactement "quotidiennement"?
Dans cette discussion, "MadHatter" dit, concernant ce qui suit, concernant le fichier "état" (état):
J'espère que ça aide.
la source
Si
mysqladmin
nécessite un utilisateur ou un mot de passe, il ne le lira pas de la/root/.my.cnf
configuration sans modification.Essayez de canaliser votre sortie vers l'enregistreur pour voir ce qui se passe.
MySQL ne consigne pas d'erreur dans le nouveau fichier après la rotation?
la source