sql >> Base de Datos >  >> RDS >> Mysql

Tutorial de MySQL:administración de registros del servidor MySQL:rotar, comprimir, retener y eliminar

MySQL Server genera varios registros que pueden ayudarlo a monitorear las actividades del servidor. Sin embargo, una vez que estos registros están habilitados, pueden aumentar de tamaño y comenzar a ocupar demasiado espacio en el disco. Por eso es importante tener una forma automatizada de archivar y conservar los archivos de registro de MySQL durante un tiempo determinado, así como eliminar los antiguos. En esta publicación de blog, describimos algunas de las mejores prácticas para configurar y administrar registros de errores, registros generales y registros de consultas lentas de MySQL para sus implementaciones de MySQL.

Configuración del registro del servidor MySQL

Veamos cómo configurar los siguientes 3 tipos de registros:

Registro de errores

Registra todos los problemas encontrados durante el inicio, ejecución o detención de mysqld. Este registro se puede habilitar al tener la siguiente opción en el archivo /etc/my.cnf:

  • log_error=/var/log/mysql/mysqld.log

Registro general de consultas

Registra las conexiones de clientes establecidas y las declaraciones recibidas de los clientes. Este registro se puede habilitar al tener la siguiente opción en el archivo /etc/my.cnf:

  • general_log=ON
  • general_log_file=/var/log/mysql/general.log

Registro de consultas lentas

Registra las consultas que tardaron más de long_query_time segundos en ejecutarse. Este registro se puede habilitar con la siguiente opción en el archivo /etc/my.cnf:

  • slow_query_log=ON
  • slow_query_log_file=/var/log/mysql/mysql-slowquery.log

Configuración de criterios para la rotación de registros

Como ejemplo, tengamos algunos criterios para administrar los registros generales de consultas de MySQL. Podemos llegar a un conjunto adecuado de criterios para la gestión de registros haciendo las siguientes preguntas:

P:¿Cuál es el tamaño máximo que puede crecer el archivo de registro?

R:Digamos que puede crecer hasta 300 MB, después de lo cual debe rotarse y comprimirse.

P:¿Con qué frecuencia desea que se rote el archivo de registro?

R:Podemos decir que queremos que los registros se roten diariamente.

P:¿Cuántos archivos de registro antiguos desea conservar?

R:Nos gustaría conservar los últimos 30 archivos de registro.

Según los criterios anteriores, el espacio total en disco necesario para la gestión general del registro de consultas es de aproximadamente 1,2 GB. Suponiendo una tasa de compresión del 90 %, tendremos 30 archivos de registro comprimidos de 30 MB cada uno y un archivo de registro en vivo de unos 300 MB.

Gestión de registros del servidor MySQL:rotar, comprimir, conservar y eliminarHaga clic para twittear

Gestión de los registros mediante la utilidad logrotate de Linux

logrotate es una utilidad de Linux que ayuda con la administración eficiente de los archivos de registro y proporciona opciones para la rotación, compresión y eliminación automáticas de los archivos de registro. Los criterios establecidos anteriormente se pueden configurar para la utilidad logrotate creando un archivo de configuración en la carpeta /etc/logrotate.d.

Llamemos a este archivo de configuración mysqlgeneral y el contenido del archivo será:

/var/log/mysql/general.log{
        compress
        dateext
        maxsize 300M
        copytruncate
        maxage 365
        dateformat -%Y%m%d%s
        daily
        rotate 30
        notifempty
}

Con las opciones anteriores para logrotate, los registros de consultas generales se rotan diariamente o cuando el tamaño del archivo de registro supera los 300 MB. Los registros antiguos están comprimidos y se conservarán 30 de estos archivos. La rotación de registros se omitirá si el archivo de registro está vacío debido a la configuración 'notifempty'.

La opción 'copytruncate' es para garantizar que el archivo de registro actual nunca se elimine durante la rotación y solo se trunque su contenido. Esto es importante ya que algunas aplicaciones esperan que el archivo de registro esté siempre disponible y no es posible eliminar el registro sin detener primero la aplicación.

Ahora que la configuración de rotación de registros está configurada para el registro de consultas generales, se debe ejecutar la utilidad logrotate para que se ejecute la configuración anterior. Esto normalmente se hace a través de un trabajo cron. Podemos configurarlo para que se ejecute cada hora colocando el script logrotate en el directorio /etc/cron.hourly:

#!/bin/sh

/usr/sbin/logrotate /etc/logrotate.conf
EXITVALUE=$?
if [ $EXITVALUE != 0 ]; then
    /usr/bin/logger -t logrotate "ALERT exited abnormally with [$EXITVALUE]"
fi
exit 0

Entonces, con unos simples pasos, hemos configurado la rotación de registros para los registros generales de MySQL según nuestros criterios. Se puede seguir el mismo enfoque para los registros de errores de MySQL y los registros de consultas lentas. Consulte estas otras publicaciones para obtener más información sobre cómo optimizar sus implementaciones de MySQL:

  • Cálculo del tamaño del grupo de búfer de InnoDB para su servidor MySQL
  • Tutorial de MySQL:configuración y administración de SSL en su servidor MySQL
  • Explicación del marco de alta disponibilidad de MySQL - Parte I:Introducción