Astuces mysql

Juin 2012

Dans la vie d'un ingénieur ou technicien informatique, il n'est pas rare de devoir effectuer quelques opérations sur un serveur MySQL. Si la plupart des gens utilisent une interface du genre PHPMyAdmin pour faire les opérations courantes, il est aussi intéressant de connaître quelques commandes utiles.

Voici donc une liste d'opérations que j'utilise au quotidien pour effectuer la maintenance de certains serveurs MySQL. N'hésitez pas à partager en commentaire vos astuces et commandes utiles.

Faire une sauvegarde d'une base MySQL

Cette commande est à exécuter sur le serveur, elle va sauvegarder dans le répertoire courant une copie d'une base de données (structures des tables et leurs contenus) :

mysqldump --password=MOT_DE_PASSE -u UTILISATEUR base > /var/www/sauvegarde.sql

N'oubliez pas de bien remplacer votre mot de passe MySQL, nom d'utilisateur et base à sauvegarder pour utiliser cette commande.

Evidemment, on peut réaliser cette opération depuis PHPMyAdmin, mais si vous avez une base de plusieurs centaines de Mo cela va rapidement poser problème et quasi-paraliser le serveur.

Vous pouvez récupérer ensuite le fichier en local avec un bon vieux "scp".

Opérations courantes

Se connecter à MySQL :

mysql -u UTILISATEUR -p

Utiliser une base de données particulière (après connexion) :

USE nom_base_données;

Voici comment créer une base de données (après connexion) :

create database nom_nouvelle_table;

Voici comment charger un fichier .sql de sauvegarde :

SOURCE chemin_vers_fichier_sql;

Voir les tables de la base de données :

show tables;

Voir les logs

Dans certains cas le fonctionnement du serveur MySQL peut vous sembler étrange. Il faut donc vérifier ce qui se passe en consultant les logs. Les logs contiennent la trace de tout ce qui est étrange, anormal ou qui ne fonctionne pas. En cas de problème il faut donc commencer par regarder ce fichier.

Généralement le fichier est situé à cette adresse sur un serveur Linux ou BSD :

/var/log/mysql/error.log

Si vous ne le trouvez pas il faudra fouiller dans /var/log/.

Visualiser le fichier :

more /var/log/mysql/error.log

Avec cette commande, vous visualiser l'intégralité du fichier (pour passer de page il faut appuyer sur la touche "espace" et la touche "echap" est utilisée pour quitter "more"), vous pouvez donc avoir seulement besoin de consulter les dernières lignes :

tail /var/log/mysql/error.log

Opération de réparation

Si votre serveur a crashé (rare) ou que vous avez du le redémarrer (un peu moins rare), vous serez peut être amené à réparer les tables de MySQL. Pour ce faire, le plus simple consiste surement à utiliser l'outil prévu à cet effet :

myisamchk

Voir quelles requêtes sont longues

Votre MySQL est lent ? Il y a sans doute quelques requêtes pas super optimisées, il faut donc les identifier et (ensuite) reprogrammer celles-ci.

Pour identifier les requêtes ouvrez le fichier de configuration de MySQL avec votre éditeur de texte favori. Généralement le fichier ce trouve à cette adresse :

/etc/mysql/my.cnf

ensuite, trouvez les lignes qui correspondent au logs des requêtes lentes ("slow queries" en anglais) :

#log_slow_queries        = /var/log/mysql/mysql-slow.log
#long_query_time = 2
#log-queries-not-using-indexes

Le caractère # indique que ces lignes sont commentées, donc que la recherche de requêtes lentes n'est pas activé pour MySQL (si ces lignes sont décommentées, passez à l'tape suivante). Pour décommenter, il suffit de supprimer le caractère # devant ces lignes. Une fois que c'est fait, vous devrez redémarrer MySQL à l'aide d'une commande dans le genre de celle-ci (ça dépend beaucoup de votre système) :

/etc/init.d/mysql restart

Voici une petite explication de ces trois lignes :

  • log_slow_queries : va enregistrer toutes les requêtes trop longues dans le fichier /var/log/mysql/mysql-slow.log que vous pourrez consulter comme error.log
  • long_query_time = 2 : fixe à 2 secondes une requête longue (vous pouvez changer ce chiffre)
  • log-queries-not-using-indexes : enregistre les requêtes qui n'utilisent pas d'index (si vous ne savez pas de quoi il est question ne décommenter pas cette ligne, elle peut remplir votre fichier (et donc votre espace disque) très rapidement

J'espère qu'avec ces quelques astuces vous serez parrés pour mieux comprendre, analyser et réparer votre serveur utilisant MySQL. N'hésitez pas à partager vos commandes les plus utiles sur MySQL en commentaire.

Pour d'autres articles, cliquez ICI.