Este es un tema súper importante y realmente tenerlo en cuenta.
Si tienes un sitio con moodle, Wordpress, Jumla, phpNuke, magento y etc... te recomiendo realizar lo que comenta este texto.
En los servidores dedicados o con acceso al SSH / SHELL es importante utilizar esta herramienta, mi sugerencia es utilizarlo después de 8 horas de estar activo el sitio después a las 48 horas de haber corrido la herramienta y haber reiniciado el servicio mysql y por ultimo utilizarlo de nuevo después de 48 horas.
Esta herramienta es compatible con:
- MySQL 3.23, 4.0, 4.1, 5.0, 5.1, 5.5, 5.6 (full support)
- MariaDB 10.1, 11.0 (full support)
- Perl 5.6 or later (with perl-doc package)
- Sistemas operativos basados en: Unix/Linux (tested on Linux, BSD variants, and Solaris variants)
- En este momento no es compatible con Windows
- Unrestricted read access to the MySQL server (OS root access recommended for MySQL < 5.0)
Comenzamos:
Para instalarlo hay que estar conectados en la consola (SSH / SHELL)
y colocar estos comandos:
wget mysqltuner.pl
wget https://raw.githubusercontent.com/major/MySQLTuner-perl/master/basic_passwords.txt -O basic_passwords.txt
wget https://raw.githubusercontent.com/major/MySQLTuner-perl/master/mysqltuner.pl
Para ejecutarlo es con el siguiente comando
perl mysqltuner.pl
Pero se puede ejecutar el siguiente comando para solo ejecutarlo por el nombre del archivo.
chmod +x mysqltuner.pl
A base de lo que de resultado la herramienta vamos a editar el archivo de configuración de mysql con el siguiente comando:
nano /etc/my.cnf
Aquí pongo un ejemplo ya optimizado de un sitio con bastante trafico promedio 170 on line by google analytics.
[client]
socket="/tmp/mysql.sock"
[mysqld]
local-infile=0
query_cache_type=1
query_cache_size=256M
tmp_table_size=2G
max_heap_table_size=2G
thread_cache_size=8
table_open_cache=1600
table_definition_cache=1950
join_buffer_size=4M
sort_buffer_size=4M
innodb_buffer_pool_size=564M
max_allowed_packet=268435456
key_buffer_size=125M
max_connections=450
open_files_limit=10000
default-storage-engine=MyISAM
innodb_file_per_table=1
[mysqldump]
quick
Este codigo es de una configuración normal:
[mysqld]
bind-address=127.0.0.1
local-infile=0
innodb_file_per_table=1
default-storage-engine=MyISAM
performance-schema=0
max_allowed_packet=268435456
open_files_limit=10000