4.1 Archivos log del SGBD

4.1 Archivos log del SGBD

Cuando trabajas frente al ordenador, navegas en tu tablet u operas una página web desde un servidor, tienen lugar numerosos procesos que pasan inadvertidos ante cualquier usuario. En caso de que se presenten problemas, se produzcan errores o quieras conocer exactamente qué acciones ejecutan los sistemas operativos o los diferentes programas o servicios, puedes acceder a los llamados archivos log, en español ficheros de registro. Estos “logs” son gestionados por prácticamente todas las aplicaciones, servidores, bases de datos y sistemas de manera automática y permiten controlar (de forma centralizada) todos los procesos relevantes.

En general, los ficheros log no suelen evaluarse frecuentemente, pues cumplen una función similar a la de un registrador de vuelo que es inspeccionado solo en caso de emergencia. Como consecuencia del registro detallado de datos de los logs, estos son una fuente primordial a la hora de analizar errores de programa o del sistema, así como para determinar el comportamiento de los usuarios. Esto no solo resulta interesante para los fabricantes de software, sino también para propietarios de páginas web, quienes pueden acceder a información interesante desde los archivos de registro del servidor web.


Todas las bases de datos de SQL Server tienen un registro de transacciones
que registra todas las transacciones y las modificaciones que cada
transacción realiza en la base de datos. El registro de transacciones es un componente esencial de la base de datos. Si hay un error del sistema, ese registro será necesario para devolver la base de datos a un estado coherente. El registro de transacciones se debe truncar periódicamente para evitar que se llene.

El registro de transacciones permite las siguientes operaciones:
  • Recuperación de transacciones individuales.
  • Recuperación de todas las transacciones incompletas cuando se inicia SQL Server.
  • Puesta al día de una base de datos, un archivo, un grupo de archivos o una página restaurados hasta el momento exacto del error.
  • Permitir replicación transaccional.
  • Compatibilidad con soluciones de alta disponibilidad y recuperación ante desastres: Grupos de disponibilidad AlwaysOn, creación de reflejo de la base de datos y trasvase de registros.
Los ficheros de registro, se emplean para guardar un registro de los eventos que ocurren en el sistema.

Para realizar está tarea MySQL cuenta con los siguientes archivos:
  • ERROR LOG (Registro de errores): Almacena información de cuando se arranca y se detiene el servidor, quedando también registrado cuando se produce algún error crítico durante la ejecución.
Este archivo lleva por nombre el de la máquina en la que se ejecuta el servidor y la extensión “.err”, por ejemplo: srvlinux.err.
  • BINARY LOG (Registro binario): Lleva registro de todas las sentencias que han actualizado datos, o podrían haberlo hecho, y el tiempo que han tardado en ejecutarse.
Para ver todas las sentencias ejecutadas tendremos que consultar el registro general de consultas. Este fichero se almacena en formato binario, hace falta utilizar el programa mysqlbinlog para poder leerlo. Cada vez que se vuelca el fichero, MySQL genera otro con el mismo nombre, pero con un número secuencial. El nombre de este registro es con la extensión .bin en vez de .err: por ejemplo: srvlinux.bin.
  • GENERAL LOG (Registro general de consultas): Registra todas las conexiones y sentencias en el orden cronológico en el que se realizan.
Por defecto se nombra anexando la extensión .log al nombre del host, por ejemplo: srvlinux.log.
  • SLOW QUERY LOG (Registro de consultas lentas): Almacena todas las consultas que han llevado más tiempo en ejecutarse que el especificado.
Este tiempo por defecto se guarda en la variable long_query_time, y marca el tiempo máximo de ejecución, en segundos, para que una consulta sea considerada lenta. El nombre por defecto de este fichero se forma con el nombre del host al que se le añade “-slow.log”, por ejemplo: srvlinux-slow.log. Para examinar este registro se emplea el programa mysqldumpslow.

Es necesario limpiar estos archivos cada cierto tiempo, antes de hacer copias de seguridad, para que no ocupen excesivo espacio en el servidor. Para realizar esta tarea se emplea la sentencia: flush logs o los comandos mysqladmin flush-logs o mysqladmin refresh.

También es interesante almacenar los logs, en otro soporte antes de refrescarlos, porque son una fuente de información sobre el funcionamiento de nuestro servidor, lo que resulta muy útil para optimizar su ejecución.

Para encontrar fácilmente donde se guardan los ficheros log de nuestro sistema, por defecto el directorio data, podemos ejecutar la siguiente sentencia: shows variables like “%log%”, que nos da la ruta.

Comentarios