MySQL : quelques rappels et astuces en cas de problèmes.
Comment faire un backup de toutes les bases MySQL d’un serveur ?
Pour effectuer une sauvegarder locale il vous suffit de taper :
mysqldump -u utilisateur_autorisé –password=mot_de_passe –all-databases > backup.sql
Vous pouvez également compresser votre sauvegarde à la volée :
mysqldump -u utilisateur_autorisé –password=mot_de_passe –all-databases | gzip>backup.sql.gz
Enfin si vous avez plusieurs machines, vous pouvez également sauvegarder votre base à distance :
Depuis le serveur de sauvegarde :
mysqldump -u utilisateur_autorisé –password=mot_de_passe –all-databases –host=serveur_sql > backup.sql | gzip>backup.sql.gz
Depuis le serveur MySQL :
mysqldump -u utlisateur_autorisé –password=mot_de_passe –all-databases | gzip | ssh root@serveur_backup « cat > /home/backup/backup.sql.gz »
Il est également possible d’effectuer un backup « binaire » de vos bases de données. Si ces dernières ont une taille très importante, ce type de backup peut représenter certains avantages, comme la rapidité de la sauvegarde :
Il faut tout d’abord mettre les requêtes en cours en attente.
mysql -u root -p
>FLUSH TABLES WITH READ LOCK ;
Dans un autre term, vous pouvez alors faire une sauvegarde binaire de vos bases de données :
tar cvfz /home/backup/backup_sql.tar.gz /var/lib/mysql
Vous pouvez également comme dans les cas cités plus haut, l’envoyer directement sur un serveur distant :
tar cvfz /home/backup/backup_sql.tar.gz /var/lib/mysql | ssh root@serveur_backup « cat > /home/backup/backup_sql.tar.gz »
Revenez ensuite au premier term et libérez les requêtes :
>UNLOCK TABLES;
Vous pouvez également effectuer la même opération en arrêtant la base, puis en la redémarrant une fois l’opération effectuée :
/etc/rc.d/init.d/mysql stop
/etc/rc.d/init.d/mysql start
Comment vérifier et réparer une base MySQL ?
Il existe 2 grandes méthodes pour vérifier et réparer une base de données MySQL. La première consiste à utiliser la commande « mysqlcheck » :
mysqlcheck tbase -p : va vérifier la base « tbase »
mysqlcheck –all-databases -p : va vérifier toutes les bases installées
mysqlcheck –auto-repair –all-databases -p : va vérifier puis réparer automatiquement les erreurs détectées sur les différentes bases
Pour plus d’informations : mysqlcheck –help
La seconde methode est d’utiliser « myisamchk ». Contrairement à mysqlcheck, myisamchk n’a pas besoin que MySQL tourne pour fonctionner : il va directement analyser les tables depuis leur forme binaire dans le répertoire /var/lib/mysql/toto/bla.MYI. Exemple :
myisamchk -i -o /var/lib/mysql/toto/bla.MYI -> va vérifier et réparer la table « bla » de la base « toto ».
Pour plus d’informations : myisamchk –help
Comment réinjecter un dump MySQL en ligne de commande ?
Pour réinjecter un fichier .sql, il existe 2 méthodes possibles :
1) Utiliser phpMyAdmin
2) Utiliser la commande mysql
Si le fichier s’appelle sauvegarde.sql, vous pouvez la réinjecter directement en ligne de commande, sans passer par phpMyAdmin avec la commande suivante :
mysql -u utilisateur -p –database=nom_de_la_base
Comment transférer une base MySQL d’un serveur à l’autre sans passer par un fichier ?
Pour cela le plus simple est de combiner les deux méthodes vues plus haut à savoir effectuer un dump et injecter un dump mais sans passer par un fichier, c’est à dire en utilisant un tube (pipe) à la place : démonstration :
mysqldump -u utilisateur_autorisé –password=mot_de_passe –all-databases –host=serveur_sql |mysql -u utilisateur –host=serveur_sql -pmot_de_passe –database=nom_de_la_base
–
Christophe Casalegno
http://twitter.com/Brain_0verride
http://www.facebook.com/brain.override
1 Commentaire