Administration de grosses bases de données sur mySQL

J’ai eu récemment à traiter le cas de bases de données de grande taille sur mySQL. Bizarrement, il est souvent question de la capacité de mySQL à traiter un gros volume de requêtes, plusieurs débats sur le web sur le moteur le plus efficace pour faire des lectures, des écritures, les deux à la fois, etc., mais très peu d’articles ou de contenu sur les bases de données de gros volumes.

Commençons par la définition de ce que j’appelle “gros volume” : une base de données dont la taille totale est supérieure à 10 Go ou une base de données comprenant des tables dont le nombre de lignes excède 1 million. Ces nombres sont arbitraires, peuvent paraitre élevés ou non, ce sont ceux à partir desquels, de mon expérience, le mode de gestion “classique” de mySQL devient insuffisant (et aussi la doc officielle !).

Qu’est ce que le mode de gestion classique (d’autres diront “basique”) ?

  • comme mySQL fonctionne “out of the box” et est souvent pré-installé sur un serveur Linux, on ne se soucie par trop du my.conf et on se dit qu’on ira plus tard “fine-tuner”
  • on utilise une commande mysqldump copiée d’un blog pour faire la sauvegarde quotidienne
  • on n’a JAMAIS testé qu’on est capable de restaurer la base de données avec le script généré ci-dessus
  • on n’a ENCORE MOINS mesuré le temps qu’il fallait pour redémarrer un serveur mySQL avec le script ci-dessus

Je me propose sur plusieurs articles de discuter de la problématique particulière des gros volumes dans ce contexte, je n’ai pas trouvé (encore) les réponses à tous mes problèmes et suis bien sur preneur de retours d’expérience !