Tout comme les systèmes de fichiers, les bases de données deviennent fragmentées, ce qui entraîne une perte de performance de l’ensemble du système.
Dans un système performant tel que le Pandora FMS, il est très important que la santé de la base de données n’affecte pas le bon fonctionnement du système. Dans les systèmes surchargés, la base de données pourrait même se bloquer, provoquant une chute de l’ensemble du système.
Une bonne configuration de MySQL pourrait faire que le Pandora FMS fonctionne cent fois plus vite, donc s’il rencontre des problèmes de performance, il n’est probablement pas correctement configuré, ou il y a un problème lié à la base de données.
La première étape pour optimiser MySQL est de modifier le fichier /etc/my.cnf
.
Avec un système de 4 RAM et un matériel de puissance moyenne, la configuration de my.cnf
devrait ressembler à ce qui suit.
- Le fichier lui-même contiendra quelques commentaires pour vous aider à paramétrer correctement votre base de données.
- Vérifiez que tous les paramètres sont correctement saisis dans la section
[mysqld]
, car souvent les paramètres de configuration ne sont pas chargés correctement car ils sont en dehors de cette section :
[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
- Toute modification apportée au fichier
my.cnf
nécessitera un redémarrage de MySQL. - Vérifiez la fin du fichier
/var/log/mysqld.log
pour voir si des erreurs se sont produites. - L’une des erreurs les plus fréquentes est la définition de nouvelles valeurs pour les journaux de transactions. Ainsi, si l’erreur:
InnoDB: Error: log file ./ib_logfile0 is of different size 0 5242880 bytes InnoDB: than specified in the .cnf file 0 67108864 bytes!
Vous devrez supprimer ces journaux et redémarrer MySQL :
rm /var/lib/mysql/ib_logfile* /etc/init.d/mysqld restart
Une fois cela fait, vous devez vérifier que les changements ont été correctement appliqués.
Ceci est vérifié avec la commande SHOW VARIABLES
dans la ligne MySQL.
Dans la documentation de Pandora FMS, vous trouverez des informations plus complètes et très détaillées sur l’optimisation de la base de données, dans un chapitre consacré à ce sujet :
https://pandorafms.com/manual/fr/documentation/05_big_environments/08_optimization