Optimiser MySQL sur Debian
Les performances d'un serveur MySQL dépendent énormément du matériel sur lequel il est mis en place. La latence des disques dur, la quantité de mémoire disponible, et la puissance du processeur sont autant de paramètres à prendre en compte. Ce guide vous aide à ajuster la configuration d'un serveur MySQL au matériel sur lequel il est installé.
Ce guide est testé sur:
- Debian 6.0 Squeeze
À savoir
L'optimisation d'un serveur MySQL pour le matériel sur lequel il est installé est la cerise sur le gâteau du travail d'optimisation. Le nerf de la guerre est l'optimisation des requêtes SQL et de la structure des bases de données.
Ces articles décrivent les bonnes pratiques de développement MySQL:
- Optimiser MySQL (fr)
- 10 Tips for Optimizing MySQL Queries (That don't suck) (en)
- MySQL Optimization Hints (en)
- The MySQL Query Cache (en)
- MySQL Performance Blog (en)
L'optimisation de la configuration du serveur ne remplace pas l'utilisation de requêtes bien conçues !
Prérequis
Ce guide nécessite l'installation du serveur MySQL, comme présenté dans le guide Installer et configurer MySQL sur Debian.
Ce guide recommande de disposer d'une importante quantité de RAM. Suivant la charge du serveur MySQL, la quantité recommandée peut varier de 1 Go à 8 Go de mémoire vive attribués à MySQL.
Ce guide recommande la maintenance régulière décrite dans l'article Configurer l'analyse et l'optimisation / défragmentation régulière des tables MySQL.
Diagnostic
MySQLTuner
MySQLTuner est un script Perl proposant des recommandations pour la configuration d'un serveur MySQL. Il fournit certaines informations intéressantes, mais me semble moins intéressant que l'outil Tuning Primer présenté dans la suite de cet article.
Important: Patientez au moins 48h après le démarrage du serveur MySQL pour utiliser cet outil, ceci afin que les données d'utilisation accumulées soient pertinentes.
Installez MySQLTuner:
command wget 'https://raw.github.com/rackerhacker/MySQLTuner-perl/master/mysqltuner.pl' \
--quiet --no-check-certificate --output-document='/usr/bin/mysqltuner'
command chmod +x '/usr/bin/mysqltuner'
Lancez MySQLTuner:
command mysqltuner
L'outil analyse la configuration du serveur MySQL et affiche les points pouvant être améliorés.
Tuning Primer
Tuning Primer est un script diagnostiquant la configuration du serveur MySQL et proposant des améliorations adaptées à l'utilisation qui en est faite.
Important: Patientez au moins 48h après le démarrage du serveur MySQL pour utiliser cet outil, ceci afin que les données d'utilisation accumulées soient pertinentes. Vérifiez toutefois immédiatement la consommation mémoire maximale du serveur après un redémarrage.
Installez les outils nécessaires à Tuning Primer:
command apt-get install bc
Installez Tuning Primer:
command wget 'http://www.day32.com/MySQL/tuning-primer.sh' \
--output-document='/usr/bin/tuning-primer'
command chmod +x '/usr/bin/tuning-primer'
Lancez Tuning Primer et répondez aux questions:
command tuning-primer
L'outil analyse la configuration du serveur MySQL et affiche les points pouvant être améliorés.
PHPMyAdmin
PHPMyAdmin est une application Web d'administration d'un serveur MySQL.
Vous pouvez trouver de précieuses recommandations sur la configuration du serveur MySQL dans l'onglet "État" disponible dans la page d'accueil de l'outil.
Optimisations
Ajustement de la configuration
Créez le fichier modèle des optimisations possibles (à compléter selon les résultats de TUNING Primer):
command wget 'https://raw.github.com/biapy/howto.biapy.com/master/mysql/tuning.cnf' \
--quiet --no-check-certificate --output-document='/etc/mysql/conf.d/tuning.cnf'
Modifiez le fichier conformément aux options recommandées par Tuning Primer et MySQL Tuner:
command vim '/etc/mysql/conf.d/tuning.cnf'
Redémarrez MySQL:
/etc/init.d/mysql reload
Patientez 48h, et utilisez à nouveau Tuning Primer et MySQLTuner pour vérifier que les réglages sont bon. Vérifiez toutefois immédiatement à l'aide de Tuning Primer que la mémoire maximale utilisée par le serveur MySQL ne dépasse pas les limites du système.
Références
Ces livres peuvent vous aider:
Remerciements
- Merci aux développeurs de TUNING Primer (en).
- Merci aux développeurs de MySQLTuner (en).
- Merci à Ludovic de Serveur Linux (fr) pour MySQL 5.0 (fr).
