Por defecto los registros como el general del MySQL o MariaDB suelen estar desactivados y no es recomendable usarlos salvo por debug. Puede almacenar mucha información dependiendo del uso de la base de datos.
Por ejemplo, podemos utilizar MySQLTuner para que analice automáticamente y optimizar más fácilmente MySQL.
El registro de errores esta activado por defecto ya que no requiere de tanto uso y es importante tener el log para poder comprobar si ha habido el servicio ha reportado algún error.
Hay varios tipos de log que podemos activar:
Tipo | Información del Log |
---|---|
Error log | Problemas encontrados al iniciar, ejecutar o detener mysqld |
General query log | Establecimiento de conexiones con los clientes y declaraciones recibidas de los clientes. |
Binary log | Declaraciones que cambian los datos (también se utilizan para la replicación) |
Relay log | Cambios de datos recibidos de un servidor de origen de replicación |
Slow query log | Consultas que tardaron más de 'long_query_time' segundos en ejecutarse |
DDL log (metadata log) | Operaciones de metadatos realizadas por declaraciones DDL |
Activación hasta reinicio del servicio
Para activar de forma temporal el log general hasta el reinicio del servicio debemos seguir estos pasos (Hay opciones adicionales).
Iniciar sesión en MySQL:
# sudo mysql -u root
Una vez dentro podemos revisar las variables log mediante (Adicional):
show variables like '%log%';
Podemos revisar la ubicación del Error log mediante (Adicional):
show variables like 'log_error';
+---------------+--------------------------+
| Variable_name | Value |
+---------------+--------------------------+
| log_error | /var/log/mysql/error.log |
+---------------+--------------------------+
1 row in set (0.001 sec)
Primero de activar el log general o otro tipo deberemos asegurarnos que esta configurado en archivo y no en tabla:
show variables like 'log_out%';
+---------------+-------+
| Variable_name | Value |
+---------------+-------+
| log_output | FILE |
+---------------+-------+
1 row in set (0.002 sec)
Para modificar este valor a fichero se realiza el siguiente comando:
SET GLOBAL log_output = 'FILE';
Indicarle la ubicación del fichero:
SET GLOBAL general_log_file='/var/log/mysql/general.log';
Para consultar el estado del log:
show global variables like 'general_log';
+---------------+-------+
| Variable_name | Value |
+---------------+-------+
| general_log | OFF |
+---------------+-------+
1 row in set (0.002 sec)
Por ultimo, para activar el log deberemos ponerlo en estado "ON" en este caso el general:
SET GLOBAL general_log = 'ON';
Para desactivar el log simplemente realizar un apagado (Adicional):
SET GLOBAL general_log = 'OFF';
Activación permanente
Un reinicio del servicio supondría la desactivación de la configuración realizada realizada dentro de la base de datos del método anterior.
Para hacerlo permanente deberemos configurarlo en el fichero de configuración del servicio.
Únicamente deberemos añadir en el fichero my.cnf de la ruta /etc/mysql/ lo siguiente:
general-log=1
general-log-file=/var/log/mysql/general.log
Realizar un reload para que los cambios se han efectivos:
# systemctl reload mysql.service
Nota importante:
Recordar que es importante realizar una rotación de log para no llenar el espacio en disco. En caso del HestiaCP entre otros ya esta configurado esta acción y también con este log en particular. Podéis revisarlo en la ruta /etc/logrotate.d/mysql-server.
En el caso de utilizar mediante table el uso de los registros programar un truncado de la tabla.
Documentación oficial de MySQL