Diferencia entre revisiones de «Mysql Ficheros de log»

De MediaWiki
Ir a la navegación Ir a la búsqueda
(Página creada con « <br> -- Ángel D. Fernández González -- (2017).»)
 
Línea 1: Línea 1:
 +
=Introducción=
  
 +
* Los ficheros de log, son ficheros que registran eventos que suceden durante la utilización del gestor Mysql.
  
 +
* Algunos de dichos ficheros ya los hemos visto durante la instalación.
  
 +
* Tenemos que tener cuidado, a la hora de hacer uso de dichos registros, de vigilar '''el tamaño''' ya que crecerán indefinidamente hasta acabar con el espacio de disco.
  
 +
* Una forma de evitarlo es utilizar (en Linux) crontab, una tarea programada que ejecuta cada cierto tiempo un script en el que se borren o muevan los logs antiguos.
 +
::<syntaxhighlight lang="java" line enclose="div" highlight="" >
 +
* * * * *  find  /path/to/*.log -mtime +7 -exec rm -f {} \;
 +
</syntaxhighlight>
 +
:: En este ejemplo se borraría los ficheros de log de más de 7 días de antigüedad.
  
  
 +
: Más información [https://dev.mysql.com/doc/refman/5.5/en/log-file-maintenance.html en este enlace].
  
 +
 +
 +
 +
 +
=Tipos de ficheros de log=
 +
 +
* Existen 4 tipos de ficheros de log que registran diferentes informaciones.
 +
 +
:* El registro de error: Registra los problemas encontrados al iniciar, ejecutar o parar el servicio mysqld.
 +
:* El registro de consultas: Registra las conexiones de clientes establecidas y las sentencias ejecutadas.
 +
:* El registro binario: Registra todas las sentencias que cambian datos. Es utilizado en la replicación.
 +
:* El registro slow: Registra todas las sentencias que han tardado más segundos que los especificados en la [https://dev.mysql.com/doc/refman/5.7/en/slow-query-log.html variable del sistema long_query_time].
 +
 +
 +
* Por defecto, todos los archivos de log son creados en el directorio de datos, el cual viene indicado por la [https://dev.mysql.com/doc/refman/5.7/en/server-options.html#option_mysqld_datadir variable del sistema data_dir] la cual tiene el valor por defecto de '''/var/lib/mysql'''.
 +
 +
* Se puede 'forzar' al gestor Mysql a que cierre y reabra los archivos de registros mediante:
 +
:* La orden SQL: '''FLUSH LOGS'''
 +
:* El comando: '''mysqladmin -uroot -p flush-logs'''
 +
 +
: En el caso de los ficheros binarios, se cerrará el existente y se creará uno nuevo. El en resto, no se creará un nuevo fichero. Para que suceda eso, tendremos que 'mover' los ficheros antiguos antes de hacer el flush de la forma:
 +
::<syntaxhighlight lang="java" line enclose="div" highlight="" >
 +
shell> cd mysql-data-directory
 +
shell> mv mysql.log mysql.old
 +
shell> mv mysql-slow.log mysql-slow.old
 +
shell> mysqladmin flush-logs
 +
</syntaxhighlight>
 +
 +
 +
=El registro de errores (error.log)=
 +
 +
* Este registro ya lo hemos mencionado [http://wiki.cifprodolfoucha.es/index.php?title=Mysql_Instalaci%C3%B3n durante el proceso de instalación].
 +
 +
* Por defecto, se encuentra en la carpeta '''/var/log/mysql/error.log'''.
 +
* Podemos indicar otro fichero y otra ruta con la [https://dev.mysql.com/doc/refman/5.7/en/server-options.html#option_mysqld_log-error variable del sistema error-log].
 +
: Recuerda en en distribuciones UBUNTU, debemos otorgar permisos de acceso (por el sistema AppArmor) si utilizamos un directorio diferente al que trae por defecto, como vimos [http://wiki.cifprodolfoucha.es/index.php?title=Mysql_Instalaci%C3%B3n#Del_servidor en este punto de la instalación, el 'caso especial: los directorios'].
 +
 +
 +
 +
* En el caso de que el servidor Mysql no se inicie, debemos acudir a este fichero para ver lo que ha ocurrido.
 +
 +
: Una forma rápida de ver los posibles errores es mediante la orden:
 +
::<syntaxhighlight lang="java" line enclose="div" highlight="" >
 +
tail -n200 /var/log/mysql/error.log | grep ERROR
 +
</syntaxhighlight>
 +
: Esta orden buscará en las últimas 200 líneas del archivo de log, aquellas que contengan la palabra ERROR.
 +
 +
 +
* Si queremos realizar un flush de este fichero solamente tendremos que:
 +
:* Ejecutar la orden SQL: '''flush error logs'''
 +
:* Desde consola con la orden: '''mysqladmin -uroot -p flush-logs error'''
 +
 +
 +
==Ejercicio==
 +
 +
* Busca el valor de la variable del sistema en la que se define la ruta y el nombre del fichero de log. ¿ Se puede cambiar su valor con la orden SQL set ?
 +
 +
* Cambia alguna entrada del archivo de configuración del servidor para provocar un error y que el servicio no pueda iniciarse.
 +
: Busca el error en el fichero de log.
 +
: Deja el fichero como estaba e inicia el servicio.
 +
 +
* Cambia el archivo del archivo de log a error.log.old (desde el sistema de archivos, por consola) y haz un flush de este log para que cree uno nuevo.
 +
 +
 +
 +
===Solución Ejercicio===
 +
 +
<gallery caption="Fichero de log del servicio" widths="350" heights="300px" perrow="2">
 +
Image:Mysql_ej_log_1.jpeg| Ejecutamos la orden SQL '''show variables like '%error%' y podemos comprobar como la ruta y nombre del fichero de log es: '''/var/log/mysql/error.log'''. No podemos cambiar su valor ya que '''no es dinámica'''.
 +
Image:Mysql_ej_log_2.jpeg| Cambiamos la variable del sistema user por user2. Guardamos y reiniciamos el servicio (service mysql restart), provocando un error del servicio que no puede iniciarse (service mysql status).
 +
Image:Mysql_ej_log_3.jpeg| Podemos comprobar cual es el error con la orden: '''tail -n200 /var/log/mysql/error.log | grep ERROR'''. Dejaremos el fichero de configuración como estaba e iniciamos el servicio.
 +
Image:Mysql_ej_log_4.jpeg| Renombramos el archivo de registro de errores, hacemos un flush del fichero de registro de errores y comprobamos que se crea el nuevo fichero de log.
 +
 +
</gallery>
  
  
 
<br> -- [[Usuario:angelfg|Ángel D. Fernández González]] -- (2017).
 
<br> -- [[Usuario:angelfg|Ángel D. Fernández González]] -- (2017).

Revisión del 11:22 15 oct 2017

Introducción

  • Los ficheros de log, son ficheros que registran eventos que suceden durante la utilización del gestor Mysql.
  • Algunos de dichos ficheros ya los hemos visto durante la instalación.
  • Tenemos que tener cuidado, a la hora de hacer uso de dichos registros, de vigilar el tamaño ya que crecerán indefinidamente hasta acabar con el espacio de disco.
  • Una forma de evitarlo es utilizar (en Linux) crontab, una tarea programada que ejecuta cada cierto tiempo un script en el que se borren o muevan los logs antiguos.
1 * * * * *  find  /path/to/*.log -mtime +7 -exec rm -f {} \;
En este ejemplo se borraría los ficheros de log de más de 7 días de antigüedad.


Más información en este enlace.



Tipos de ficheros de log

  • Existen 4 tipos de ficheros de log que registran diferentes informaciones.
  • El registro de error: Registra los problemas encontrados al iniciar, ejecutar o parar el servicio mysqld.
  • El registro de consultas: Registra las conexiones de clientes establecidas y las sentencias ejecutadas.
  • El registro binario: Registra todas las sentencias que cambian datos. Es utilizado en la replicación.
  • El registro slow: Registra todas las sentencias que han tardado más segundos que los especificados en la variable del sistema long_query_time.


  • Por defecto, todos los archivos de log son creados en el directorio de datos, el cual viene indicado por la variable del sistema data_dir la cual tiene el valor por defecto de /var/lib/mysql.
  • Se puede 'forzar' al gestor Mysql a que cierre y reabra los archivos de registros mediante:
  • La orden SQL: FLUSH LOGS
  • El comando: mysqladmin -uroot -p flush-logs
En el caso de los ficheros binarios, se cerrará el existente y se creará uno nuevo. El en resto, no se creará un nuevo fichero. Para que suceda eso, tendremos que 'mover' los ficheros antiguos antes de hacer el flush de la forma:
1 shell> cd mysql-data-directory
2 shell> mv mysql.log mysql.old
3 shell> mv mysql-slow.log mysql-slow.old
4 shell> mysqladmin flush-logs


El registro de errores (error.log)

Recuerda en en distribuciones UBUNTU, debemos otorgar permisos de acceso (por el sistema AppArmor) si utilizamos un directorio diferente al que trae por defecto, como vimos en este punto de la instalación, el 'caso especial: los directorios'.


  • En el caso de que el servidor Mysql no se inicie, debemos acudir a este fichero para ver lo que ha ocurrido.
Una forma rápida de ver los posibles errores es mediante la orden:
1 tail -n200 /var/log/mysql/error.log | grep ERROR
Esta orden buscará en las últimas 200 líneas del archivo de log, aquellas que contengan la palabra ERROR.


  • Si queremos realizar un flush de este fichero solamente tendremos que:
  • Ejecutar la orden SQL: flush error logs
  • Desde consola con la orden: mysqladmin -uroot -p flush-logs error


Ejercicio

  • Busca el valor de la variable del sistema en la que se define la ruta y el nombre del fichero de log. ¿ Se puede cambiar su valor con la orden SQL set ?
  • Cambia alguna entrada del archivo de configuración del servidor para provocar un error y que el servicio no pueda iniciarse.
Busca el error en el fichero de log.
Deja el fichero como estaba e inicia el servicio.
  • Cambia el archivo del archivo de log a error.log.old (desde el sistema de archivos, por consola) y haz un flush de este log para que cree uno nuevo.


Solución Ejercicio



-- Ángel D. Fernández González -- (2017).