Al igual que los sistemas de archivos, las bases de datos también se fragmentan, haciendo que todo el sistema pierda rendimiento.
En un sistema de alto rendimiento como Pandora FMS es muy importante que la salud de la base de datos no afecte al adecuado funcionamiento del sistema. En sistemas sobrecargados, la base de datos puede llegar a bloquearse, provocando una caída de todo el sistema.
Una buena configuración de MySQL podría hacer que Pandora FMS trabajase cien veces más rápido, por lo que si experimenta problemas de rendimiento, probablemente no esté correctamente configurado, o bien haya algún problema relacionado con la base de datos.
El primer paso para la optimización de MySQL es la modificación del fichero /etc/my.cnf
.
Con un sistema con 4 GB de memoria de acceso aleatorio (RAM) y un hardware de una potencia media, la configuración de my.cnf
debería ser parecida a la siguiente.
- El propio archivo contendrá algunos comentarios para ayudarle a parametrizar correctamente su base de datos.
- Compruebe que todos los parámetros estén correctamente introducidos en la sección
[mysqld]
, ya que muchas veces no se cargan correctamente los parámetros de configuración por estar fuera de esta sección:
[mysqld] datadir=/var/lib/mysql socket=/var/lib/mysql/mysql.sock user=mysql character-set-server=utf8 skip-character-set-client-handshake key_buffer = 400M max_allowed_packet = 100M thread_stack = 64K thread_cache_size = 8 max_connections = 100 skip-locking innodb_file_per_table innodb_flush_log_at_trx_commit = 0 innodb_flush_method = O_DIRECT innodb_thread_concurrency = 16 innodb_buffer_pool_size = 500M innodb_additional_mem_pool_size = 32M innodb_log_file_size = 64M innodb_log_buffer_size = 16M innodb_lock_wait_timeout = 90 # IO: 100 for 7500RPM disk, 180 for 15K RPM disk, 1500 for SSD disks innodb_io_capacity = 100 key_buffer_size = 32M read_buffer_size = 128K read_rnd_buffer_size = 128K sort_buffer_size = 128K join_buffer_size = 64M # Enable query cache query_cache_type = 1 query_cache_limit = 128M query_cache_size = 128M
- Cualquier cambio realizado en el fichero
my.cnf
requerirá de un reinicio de MySQL. - Compruebe el final del fichero
/var/log/mysqld.log
para ver si ha ocurrido algún error. - Uno de los más frecuentes se da al configurar nuevos valores para los registros de transacciones. Por lo que, si aparece el error:
InnoDB: Error: log file ./ib_logfile0 is of different size 0 5242880 bytes InnoDB: than specified in the .cnf file 0 67108864 bytes!
Deberá borrar estos registros y reiniciar MySQL:
rm /var/lib/mysql/ib_logfile* /etc/init.d/mysqld restart
Hecho esto, deberá comprobar que los cambios han sido correctamente aplicados.
Esto se comprueba con el comando SHOW VARIABLES
en la línea de comandos de MySQL.
En la documentación de Pandora FMS encontrará más y muy detallada información sobre la optimización de la base de datos, en un capítulo dedicado a este tema:
https://pandorafms.com/manual/es/documentation/05_big_environments/08_optimization