viernes, 30 de mayo de 2008

Leer log binario de mysql

Me he encontrado con un error en producción de esos que eres incapaz de reproducir en local, que no deja nada en el log de rails y la única opción posible era revisar el log de base de datos. Investigando un poco he encontrado que mysql guarda un log binario con todas las queries ejecutadas. Y la forma de leer ese log binario es con mysqlbinlog.

En mi caso sabía la hora en la que ocurrió el error, y por fecha el fichero donde estaba el log era mysql-bin.000029, así que ejecutando

/usr/local/mysql/bin/mysqlbinlog --start-datetime="2008-05-28 16:41:00" --stop-datetime="2008-05-28 16:43:00" /var/log/mysql/mysql-bin.000029 >db.sql

He recuperado un fichero de texto con todas las queries ejecutadas y he podido investigar que había pasado...

5 comentarios:

  1. Amigo pura vida! Me salvaste la vida con esta info que tienes acá!

    Saludos desde Costa Rica!

    ResponderEliminar
  2. y la pregunta es, q es un log binario

    ResponderEliminar
  3. Hola.

    Échale un vistazo a esta página de la documentación de MySQL, donde lo explican con detalle

    http://dev.mysql.com/doc/refman/5.0/es/binary-log.html

    ResponderEliminar
  4. ei diego y como seria la sentencia si el mysql estuviese en windows. la version es mysql server 5.1

    ResponderEliminar
  5. No tengo ninguna instalación en windows para comprobarlo, pero mysqlbinlog en windows debería estar en el mismo directorio que el ejecutable de mysql. Además es probable que lo tengas en el path y que ejecutando la instrucción directamente "mysqlbinlog --start-datetime ...." te funcione.

    Tambien te hará falta el path donde está el log binario, lo puedes ver en el fichero de configuración my.cnf

    Suerte!

    ResponderEliminar