Externaliser votre configuration MySQL

Depuis MySQL 5.0.4, il est possible de surcharger la configuration de MySQL en incluant le fichier de configuration de son choix.

Au niveau des distributions Linux, on se retrouve face à plusieurs situations (je ne sais pas ce qu’il en est pour Solaris / Windows) :

  1. Soit le fichier my.cnf n’est pas installé dans /etc/ ou /etc/mysql et dans ce cas, MySQL tourne avec des options par défaut (cas de RHEL par ex)
  2. Soit le fichier my.cnf existe et est pris en compte avec les options précisées dans ce fichier (cas de Debian par ex)

Note

Des fichiers exemples de configuration sont disponibles en général dans /usr/share/mysql/

Dans le cas 1, en créant son propre fichier my.cnf dans /etc/, on surcharge donc la configuration par défaut. Lors des montées de version de MySQL il y a a priori peu de risque que votre fichier soit effacé (sauf si la distribution se met à en fournir un par défaut, ce qui n’est jamais improbable).

Dans le cas 2, lors d’une montée de version, si vous avez modifié le fichier fourni initialement par la distribution et suivant la subtilité du gestionnaire de paquet, vos modifications peuvent potentiellement être perdues.

La solution consiste donc à externaliser vos modifications dans une zone qui ne sera jamais impactée par le package standard de MySQL.

MySQL vous offre 2 options (à ajouter en fin de fichier /etc/my.cnf) :

  • include permet de ne charger qu’un fichier de configuration donné :
!include /home/mysql/conf/myopt.cnf
  • !includedir permet de charger tous les fichiers de configuration d’un répertoire :
!includedir /home/mysql/conf

Il n’est pas précisé de règle pour l’ordre de chargement, je présuppose que cela se fait par ordre alphabétique (comme Apache)

Quelques règles :

  • Les fichiers doivent avoir une extension en .cnf pour être pris en compte.
  • Dans votre fichier, il vous faut rappeler à quelle section de la configuration vos variables s’appliquent

Ex :

[client]
port            = 3306
socket          = /var/lib/mysql/mysql.sock

[mysqld]
key_buffer = 100M
myisam_sort_buffer_size = 64M

On peut donc imaginer utiliser !includedir /home/mysql/conf et que ce répertoire contienne n fichiers :

  • cache.cnf qui contient les paramètres pour les mécanismes de cache
  • replication.cnf qui contient les paramètres pour la réplication
  • etc.

Ref : http://dev.mysql.com/doc/refman/5.0/en/option-files.html

Sujet précédent

Monitorer MySQL

Sujet suivant

Réinitialiser le mot de passe root de votre serveur MySQL

Cette page