Tengo esta configuración de logrotate y estoy ejecutando 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
}
Puse esto en /etc/logrotate.d ayer y hoy el registro no fue rotado.
A continuación están las cosas que he hecho:
- Verifiqué que el registro está en /var/log/mysql/mysql-slow.log
- Las líneas mysqladmin funcionan bien cuando se ejecutan como root
- mysql puede escribir en mysql-slow.log
Cuando hice esto:
$ 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
- ¿Dónde está el registro que muestra que logrotate fue exitoso? Quiero ver si hay algo que diga que hubo un problema.
- ¿Alguna idea de por qué el logrotate no funciona?
crond
corriendo?mysql-server
? Ejecutargrep '/var/log/mysql' /etc/logrotate.d/*
./etc/crontab
archivo, en la línea que termina con/etc/cron.daily )
. ¿Quizás creó la configuración logrotate después de que los trabajos diarios cron para ese día ya se hubieran ejecutado?Respuestas:
Un problema común es cuando configura por primera vez una entrada diaria logrotate.d, no rotará el primer día. Cuando utiliza una rotación basada en el tiempo (diaria / semanal / mensual) logrotate garabatea una marca de fecha de la última fecha en que vio el archivo
/var/lib/logrotate/status
(o/var/lib/logrotate.status
en los sistemas RHEL).La fecha garabateada se convierte en la fecha de referencia a partir de la que
logrotate
se utilizarán futuras ejecuciones para comparar rotaciones 'diarias'. Dado que el trabajo cron predeterminado se ejecuta diariamente, esto generalmente es solo un problema en los trabajos diarios.Puede evitar este problema de dos maneras;
correr
sudo logrotate -f /etc/logrotate.d/<my rotate job>
Edite
/var/lib/logrotate/status
y agregue la línea manualmente:"/var/log/my_special.log" 2013-4-8
fuente
-f
(al menos en mi derivado de humedad relativa).-f
para Force Rotation,-d
para Debug, también debug implica ejecución en seco, por lo que no se realizarán cambios mientras-d
esté activado.-d
implicando que la carrera en seco es complicada. No se hicieron cambios, y me hice rascarme la cabeza hasta que me di cuenta de este hecho.De acuerdo con el siguiente artículo de Slicehost:
Comprender logrotate en Ubuntu - parte 2
http://articles.slicehost.com/2010/6/30/understanding-logrotate-on-ubuntu-part-2
... el
/var/lib/logrotate/status
archivo " almacena información sobre cuándo giró por última vez cada archivo de registro ". La página de manual logrotate dice que se llama un "archivo de estado".Hay otra discusión aquí en ServerFault que también puede ser útil:
¿Cómo maneja logrotate exactamente "diariamente"?
En esa discusión, "MadHatter" dice, con respecto a lo siguiente, con respecto al archivo de "estado" (estado):
Espero que esto ayude.
fuente
Si
mysqladmin
requiere un usuario o contraseña, no lo leerá desde la/root/.my.cnf
configuración sin modificación.Intente canalizar su salida al registrador para ver qué está sucediendo.
¿MySQL no registra el error en el nuevo archivo después de rotar?
fuente