Quería mirarme un tema que me pareció curioso, en un servidor Mysql:Recordaba que el proceso mysqld, consultado con un ps, muestra el fichero de log utilizado. En mi caso era /var/log/mysql/mysql.log (.err para el fichero de errores).
Voy a consultar este fichero y lo encuentro vacío. El .err no me sacó del apuro porque apenas contenía tres mensajes, sin valor para el caso.
Mirando el directorio de los logs vi unos .1.gz, .2.gz, .3.gz, etc, correspondientes a ficheros rotados (vía logrotate) y luego gzipeados, vacíos también excepto uno de ellos que era el del log del sábado (día de parada y posterior reinicio de máquina).
Tras una búsqueda rápida en la web, me pareció tenerlo todo bien configurado, así que no entendía que podía estar pasando. Se me ocurrió lanzar un /etc/init.d/mysql reload, y me llevé una alegría porque el log empezó a recoger la actividad del momento. ¿Qué había pasado? No lo sabía. En algún foro vi que alguien apuntaba posibles problemas en los clientes, así que pensé que también el server podía ser susceptible de quedarse medio tieso por cualquier razón a la hora de escribir en el log. Pero al no tener nada más donde rascar, adivina qué ha pasado.
Pero al día siguiente, llego y me encuentro de nuevo que tras la rotación de logs, el log deja de mantenerse. El log del día anterior decía que todo era correcto. Nuevo reload y vuelve a funcionar. Y ahora, tras pensar un poco acerca de todo ello doy mi explicación (sin confirmarla con el código fuente del Mysql, que no soy tran friki):
El log rota cada día. Este proceso viene a hacer algo así: El fichero de log antiguo se renombra y se crea uno nuevo (con un inodo nuevo, aunque el fichero se llame igual). El log antiguo se "gzipa", lo que también provoca un cambio de inodo en el fichero una vez ha sido comprimido.
En definitiva, el mysqld pierde el inodo del fichero donde escribir. En mi caso lo recuperaba semanalmente, al rebotar la máquina.
Invito a cualquiera que domine el tema a confirmar o a rebatir mi suposición.
Solución para mi caso, creo que limpia: El mismo reload que yo hacía a mano, lanzarlo de forma automática tras el rotado. Y haciéndolo así ya no he vuelto a tener este problema.


Inglés a castellano
Anglès a català
Deja tu comentario