Optimizar MySQL en Linux

optimizar-mysql-en-inux

Mysqltuner:

Instalar y ejecutar MySQLTuner:

cd /usr/local/src
wget https://raw.githubusercontent.com/major/MySQLTuner-perl/master/mysqltuner.pl
chmod 755 mysqltuner.pl
./mysqltuner.pl

Esperar unos segundos (puede tomar un rato en función del servidor) y mostrará los resultados recomendados para cambiar el archivo de configuración my.cnf.

Se debe editar el archivo my.cnf:

nano /etc/my.cnf

Valores a colocar:

[mysqld]
set-variable = max_connections=500
safe-show-database
local-infile=0
max_connect_errors = 1000
log-slow-queries=/var/lib/mysql/slow.log
thread_cache_size = 4
table_cache = 128
query_cache_size = 48M
join_buffer_size = 1M
tmp_table_size = 64M
innodb_buffer_pool_size = 50M

Guardar el archivo

Crear el archivo para los queries lentos:

touch /var/lib/mysql/slow.log
chmod 660 /var/lib/mysql/slow.log
chown mysql:mysql /var/lib/mysql/slow.log

NOTA: También se puede crear el archivo de logs general pero puede resultar muy grande, de tal forma que sólo se debe crear cuando se justifique:

En el caso de hacerlo la variable a incluir en my.cnf es:

log=/var/lib/mysql/general.log

A su vez, si se va a manejar el log general debe crearse el archivo:

touch /var/lib/mysql/general.log
chmod 660 /var/lib/mysql/general.log
chown mysql:mysql /var/lib/mysql/general.log

Luego rearrancar mysql:

service mysql restart

LISTO

Para monitorear los procesos de MYSQL se recomiendan los siguientes comandos:

mysqladmin proc

También existen dos aplicaciones útiles:

http://mtop.sourceforge.net

http://innotop.sourceforge.net

Sin embargo, usaremos mysqladmin para lo que nos interesa.

Otras herramientas de diagnóstico útiles para sistemas con cargas altas de mysql, siempre que se haya ejecutado mysql por lo menos desde hace 2 días, son:

Mysqlidxchk:

Esta herramienta verifica las tablas de mysql para identificar índices no utilizados que puedan causar lentitud o ineficiencia en el mysql. Básicamente revisa los logs para identificar los índices innecesarios.

Para instalarla los comandos son:

cd /usr/local/src
wget hackmysql.com/scripts/mysqlidxchk-1.1
chmod 755 mysqlidxchk*
mv mysqlidxchk* mysqlidxchk

Para ejecutarlo (dependiendo si es el log general o el de queries lentos):

./mysqlidxchk --general /var/lib/mysql/general.log

ó

./mysqlidxchk --slow /var/lib/mysql/slow.log

La guia de cómo usarlo esta en:

http://hackmysql.com/mysqlidxchkguide

Mysqlsla:

Esta herramienta verifica los logs general y slow de mysql para identificar los usuarios que hacen mayor porcentaje de uso de las bases de datos que puedan causar lentitud o sobrecargas en mysql.

Para instalarla los comandos son:

cd /usr/local/src
wget hackmysql.com/scripts/mysqlsla
chmod 755 mysqlsla*
mv mysqlsla* mysqlsla

Para ejecutarlo (dependiendo si es el log general o el de queries lentos):

./mysqlsla -lt general /var/lib/mysql/general.log

ó

./mysqlidxchk -lt slow /var/lib/mysql/slow.log

La guia de cómo usarlo esta en:

http://hackmysql.com/mysqlsla_guide