Vous êtes ici : Accueil / Debian GNU/Linux / Serveurs / Bases de données / Optimiser MySQL sur Debian

Optimiser MySQL sur Debian

Par Pierre-Yves Landuré Dernière modification 30/11/2012 18:12

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:

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