iTank ideas

Cómo activar MySQL LOAD DATA INFILE para acelerar Piwik

mysqlmysql-and-piwik-speed Piwik-logo

MySQL posee una potente característica que permite leer registros desde un fichero de texto en bloque a una velocidad muy superior a la habitual. Esta característica se llama LOAD DATA INFILE.

Utilizando MySQL LOAD DATA INFILE se puede acelerar el rendimiento de Piwik a la hora de procesar a los visitantes web en sitios con más de 100.000 visitantes mensuales. Os explico cómo configurarlo en tres pasos:

Entorno Ubuntu 12.04 LTS x64 Precise Pangolin con MySQL Server version 5.5.31

1. Proporcionar privilegios FILE al usuario de la base de datos
# mysql
GRANT FILE ON piwik_database.* to piwik_user@localhost;

2. Activar la característica LOAD DATA INFILE editando el fichero

# nano /etc/mysql/my.cnf

y añadiendo una línea en dos secciones:

[mysqld]
local-infile = 1

[mysql]
local-infile = 1

es necesario reiniciar los servicios MySQL y Apache


# service mysql restart
# service apache2 restart

3. Conceder privilegios de RW (lectura/escritura) en el firewall AppArmor, editando

# nano /etc/apparmor.d/usr.sbin.mysqld

y añadir

/...idhun_dir/tmp/assets/ r,
/...idhun_dir/public_html/www.idhun.org/analytics/tmp/assets/* rw,

reniciar el servicio de AppArmor y voila
/etc/init.d/apparmor reload