Sei sulla pagina 1di 10

2.

FICHEROS DE REGISTRO DE MySQL

1. El registro de errores (Error log).


Contiene informacin que indica cundo se ha iniciado y parado la bdd y tambin si
ha ocurrido algn error crtico mientras el servidor se estaba ejecutando.
Si el servidor detecta que hay una tabla que necesita ser reparada, o el servidor se
para inesperadamente, se escribe una entrada en este fichero.
Se puede especificar dnde almacenar el fichero a travs del parmetro log-error=
nombre de fichero. Si no se especifica, mysqld utiliza el nombre host_name.err.
([mysqld] es una seccin dentro my.ini)

Cuando instalamos MySQL especificamos que creara el fichero log-error, no


obstante, se puede especificar posteriormente.

El fichero de errores crece demasiado, si necesitamos hacer un backup del fichero y


reiniciarlo, los pasos seran:

Si se quiere liberar espacio del directorio de la base de datos, moveramos los log
antiguos a alguna carpeta donde tuviramos los backups:

2. El registro general de consultas (Host log).


Si se desea saber qu pasa en mysqld, hay que iniciarlo con las opciones generallog y general-log-file[=file_name]. Si no se especifica nombre, el nombre por defecto
ser host_name.log. Almacenar conexiones y sentencias de consulta.
-

Si no se especific su creacin en la instalacin, para la bdd, modifica my.ini


(comprubalo de todos modos y cuidado con el directorio!).
Vuelve a arrancar
Observars que se crea el fichero y se puede comprobar a travs de la consulta
de variables

El fichero no se puede consultar mientras est la base de datos arrancada, pero


si detenemos el servicio y abrimos el fichero, se ver que ha registrado toda la
actividad de todos los usuarios.

Vers tambin que se ha creado la tabla mysql.general_log:

En la tabla no se almacenar nada a no ser que se especifique el parmetro logoutput, a travs del cual se puede establecer que se almacenen las consultas en
fichero, tabla o ambas. Si no aparece la variable slo se almacenan las consultas
en el fichero log.

La consulta de la tabla mysql.general_log devolver algo parecido a esto:

La variable general_log se puede modificar en ejecucin. nicamente se puede


modificar a nivel global y por un super usuario. A partir de este momento no se
realizar el registro de consultas.

Las consultas se escriben en orden de llegada, que puede ser distinto al orden de
ejecucin.
Estos archivos log son tiles si se desea vigilar a algn usuario, o ver cmo
responde el sistema a las consultas, pero tienen mucho coste y los registros se
van almacenando uno tras otro.
Para que el fichero log no se haga muy grande, se puede hacer una copia de l
en un disco secundario si se desea conservar (XXXX-old.log) y refrescarlo a
travs de la utilidad mysqladmin que lo vuelve a dejar vaco:

En realidad, lo que ocurre es que al renombrarlo, el log deja de existir, y al volver


a arrancar el servidor, al no encontrarse el fichero antiguo, se crea uno nuevo
vaco.

3. El registro binario (Binary log).


Almacena las sentencias que actualizan o hubiesen podido actualizar la BDD y
adems el tiempo que han tardado en realizarlo (por ejemplo, un DELETE que no
encontr filas concordantes). Las sentencias se almacenan en la forma
de eventos que describen las modificaciones.
El propsito principal es el de actualizar la BDD durante una operacin de
recuperacin tan completamente como sea posible, porque el registro binario
contiene todas las actualizaciones hechas tras una copia de seguridad. Tambin
se utiliza en servidores maestros de replicacin como recordatorio de las
sentencias que deben ser enviadas a servidores esclavos. El rendimiento del
servidor baja un 1% pero son altos los beneficios que se obtienen.

Para activarlo en my.ini:

Y para probar, para la BDD y vuelve a arrancarla:

Una vez arrancada la base de datos comprobamos el valor de la variable global


relacionada:

Mysqld agrega una extensin numrica al nombre de registro binario. Este


nmero se incrementa cada vez que se inicia el servidor o se vuelcan los
registros. Tambin se crea un nuevo registro binario cuando el actual llega al
tamao especificado en max-binlog-size. Un registro binario puede llegar a ser
ms grande de max-binlog-size, hay que tener cuidado con el tamao porque un
registro slo puede escribirse de una pieza.
Vamos a probar el registro binario:

Para poder averiguar qu archivos de registro binario diferentes han sido


utilizados, mysqld mantienen un archivo de ndice (no se debe editar si mysqld
pudiera estar usndolo):

Se pueden vaciar los registro binarios y empezar a utilizar otro:

Vemos que aparece un fichero binario nuevo que tambin se refleja en el ndice:

Tambin se pueden borrar todos los ficheros binarios que ya no se utilizan con
RESET MASTER, y el ndice volver a reflejar solamente uno:

Para poder visualizar los ficheros de registro binarios, existe una utilidad
MYSQLBINLOG en la carpeta \bin\:

3.1.

Opciones

Si no se especifica explcitamente, se registran los cambios de todas las bases de


datos.
Se pueden utilizar las siguientes opciones para determinar lo que se registra en
el registro binario:
binlog-do-db=db_name
Slo se registran cambios si la bdd en uso es db_name. Todas las bdd que no se
mencionen explcitamente no registran los cambios, pero se pueden agregar
tantas lneas como se desee:
binlog-do-db=zoologico
binlog-do-db=test
Ojo!, si un usuario tiene permisos para hacerlo, podra ocurrir:
mysql> use prices;
update zoolgico.mascotas set
Y esta sentencia no llegara a escribirse en el registro.
Slo se registran los cambios en una bdd cuando previamente se ha puesto en
uso. Es ms, si no aparece explcitamente en binlog-do-db y desde una que s se
especifica en bin-log-db se modifica bdd.tabla, esta modificacin s se almacena.
binlog-ignore-db=db_name
Le dice al maestro que las actualizaciones donde la bdd actual es db_name no
deberan ser almacenadas en el registro binario.

3.2.

Canalizacin del registro binario:

% mysqlbinlog log-file | mysql


Es decir, se lanza la salida del archivo binario a ejecutar en mysql

Ejercicio:
1.
2.
3.
4.
5.
6.
7.
8.

Para el servicio de mysql


Comprueba que en my.ini se registran las modificaciones en zoolgico
Conctate como usuario1
Inserta 3 filas en la tabla mascotas
Comprueba con select que se han guardado las filas
Para el servicio y arrncalo otra vez
Borra el contenido de mascotas
Intenta recuperarlas con mysqlbinlog (Ojo el log que escogemos es el
penltimo ya que tras parar y arrancar ya se ha creado otro fichero).

4. El registro de consultas lentas (Slow Query Log) (DATA)


Cuando se inicia mysqld con slow-query-log-file[=file_name], mysqld escribe un
archivo de registro que contiene todas las sentencias SQL que llevaron ms de
long-query-time segundos para ejecutarse completamente. El tiempo inicial para
adquirir los bloqueos de tabla iniciales no se cuenta como tiempo de ejecucin.
El valor mnimo de long-query-time es 0 y por defecto se establece a 10.

El nombre de archivo por defecto tendr el sufijo slow.log. Para probarlo,


aadimos a my.ini:

Vamos a probar el uso del fichero lanzando una consulta que dure ms de 1
segundo:

El fichero XXXX-slow.log es de texto y se puede ver (Ojo! Con el servicio parado):


C:/Program Files/MySQL/MySQL Server 5.6/bin\mysqld, Version: 5.6.13-log
(MySQL Community Server (GPL)). started with:
TCP Port: 0, Named Pipe: (null)
Time
Id Command Argument
C:/Program Files/MySQL/MySQL Server 5.6/bin\mysqld, Version: 5.6.13-log
(MySQL Community Server (GPL)). started with:
TCP Port: 0, Named Pipe: (null)
Time
Id Command Argument
# Time: 131020 1:30:34
# User@Host: root[root] @ localhost [::1] Id:
1
# Query_time: 2.048400 Lock_time: 0.000000 Rows_sent: 1 Rows_examined: 0
SET timestamp=1382225434;
select sleep(2);

En el registro de consultas lentas tambin se almacenan aquellas que no utilizan


ndices, si se desea evitar pues ya se sabe que van a ser lentas, se puede utilizar
la opcin log-short-format.

Potrebbero piacerti anche