Optimizar MariaDB y MySQL con MySQLTuner.
Ejecutar MariaDB o MySQL en servidores con una alta carga de trabajo, requiere de una configuración óptima si no quieres tener problemas en el servidor. Para evitar estos posibles problemas e incluso poder manejar aun más carga, debes modificar la configuración predeterminada, ya sea de MarioDB, o de MySQL.
La tarea no es sencilla para profanos en el manejo de servidores, pero no te preocupes… existe una herramienta llamada «MySQLTuner«, que tras realizar un análisis del servidor de base de datos te ofrecerá una serie de recomendaciones con las que podrás mejorar ostensiblemente el rendimiento. Debes tener en cuenta que la aplicación no realizara ninguna modificación, eso lo debes hacer tu de forma manual.
Vemos como proceder.
Optimizar MariaDB y MySQL con MySQLTuner
Antes de lanzarte a la aventura, te recomiendo que te asegures de que realmente necesitas re-configurar el servidor de bases de datos; puedes ver los consumos de cpu y de memoria con estos comandos.
Memoria RAM:
echo [PID] [MEM] [PATH] && ps aux | awk '{print $2, $4, $11}' | sort -k2rn | head -n 20
CPU:
ps -eo pcpu,pid,user,args | sort -k 1 -r | head -20
Si notas que tu sistema consume demasiado… procedemos a instalar MySQLTuner.
Descargamos el script.
wget http://mysqltuner.com/mysqltuner.pl
Le concedemos permisos.
chmod +x mysqltuner.pl
Ejecutamos MySQLTuner.
./mysqltuner.pl
MySQLTuner te ofrecerá unas sugerencias al final de la impresión, sobre cómo mejorar el rendimiento de la base de datos sin ningún riesgo para el sistema.
ejemplo de salida…
Análisis de MySQLTuner
Ajustes de MariaDB o MySQL
Puedes editar el archivo de configuración ejecutando lo siguiente (la localización del archivo puede variar dependiendo de la distribución linux, o si instalaste el servidor con algún panel de control integrado):
nano /etc/mysql/my.cnf
Antes de modificar nada, hacemos una copia de seguridad del archivo.
cp /etc/mysql/my.cnf ~/my.cnf.backup
Una vez modificado el archivo, lo guardas y cierras el editor.
Reiniciamos.
systemctl restart mysqld o service mysql restart
Explicamos algunas de las opciones que seguro deberás configurar.
key_buffer
Esta opción asigna más memoria a MySQL, lo que puede acelerar bases de datos. El key_buffer
no debe tener más del 25 por ciento de la memoria total del sistema cuando si usas MyISAM, en InnoDB puedes aplicar hasta el 70%. No asignes más memoria de la necesaria.
max_allowed_packet
Este parámetro nos permite establecer el tamaño máximo del paquete a enviar. Un paquete es una sola fila que se envía a un cliente o un registro desde un server maestro a un esclavo. Si tu servidor va a procesar paquetes muy grandes, aumenta el valor hasta al tamaño del paquete más grande posible a enviar.
thread_stack
Este valor contiene el tamaño de la pila para cada hilo. MySQL considera que el valor de la variable thread_stack variable
es suficiente para un uso normal. Si tienes errores puedes aumentarlo un poco.
thread_cache_size
Si thread_cache_size
está configurado a 0
, todas las nuevas conexiones que se realicen requerirán de la creación de un nuevo hilo para ellas, y al desconectar se auto-destruirán. Este valor establece el número de hilos sin uso que se pueden almacenar en caché a la espera de ser utilizados por una nueva conexión. A no ser que tengas cientos de conexiones por minuto, no debes modificar este valor.
max_connections
Con este parámetro establecemos la cantidad máxima de conexiones concurrentes . Es mejor tener en cuenta la cantidad máxima de conexiones que hemos tenido en el pasado antes de configurar este valor. Esto no indica la cantidad máxima de usuarios del sitio web al mismo tiempo, sino la cantidad máxima de usuarios que lanzan solicitudes de manera simultánea.
table_cache
Este valor debe ser siempre mayor que el que tengas establecido en open_tables
. Puedes especificarlo con:
SHOW STATUS LIKE 'open%';
Y con las opciones damos por finalizado este articulo.
Espero que este articulo sea de utilidad, puedes ayudarnos a mantener el servidor con una donación (paypal), o también colaborar con el simple gesto de compartir nuestros artículos en tu sitio web, blog, foro o redes sociales.