-==<XTBA>==-
https://forum.setiaddicted.com/

[Linux] Restaurer ses BDDs après un crash de MySQL
https://forum.setiaddicted.com/viewtopic.php?f=4&t=1002
Page 1 sur 1

Auteur :  IvanleFou [ mer. 16 déc. 2009, 04:21 ]
Sujet du message :  [Linux] Restaurer ses BDDs après un crash de MySQL

Restaurer ses BDDs après un crash de MySQL alors que l'on a pas de sauvegarde

Description Blog // affichée sur la liste tutos:
Voici le solution que j'ai utilisé pour récupérer mes bases de données après un crash de MySQL. Je n'ai pas pu déterminer ce qui s'est passé mais MySQL n'a plus du tout voulu démarrer et j'ai trouvé cette méthode pour restaurer les tables alors que je n'avais pas de sauvegarde (ce qui est une grosse erreur!!).


MySQL a soudainement céssé de fonctionner. En fait il refusait de démarrer et le daemon passer son temps a essayer de le faire repartir mais sans succès. J'ai voulu fouiller les logs mais le temps que je m'en apercoive ils etaient remplis d'erreur de démarrage de MySQL et la partie qui aurait peut être pu me donner des indices avait disparue. J'ai passé deux jours a chercher sur internet des témoignages et éventuellement une solution pour mon problème mais je n'ai rien vu de similaire :/
Finalement je me suis résigné à désinstaller MySQL completement et à repartir sur une installation neuve en espérant que ca règle mon problème. Chose que j'ai fait en conservant mes bases de données. Et au démarrage de la nouvelle installation... toujours le même problème. J'en ai conclu que soit linux un fichier de configuration avait été conservé de l'ancienne configuration soit le problème venait de mes tables. J'ai mis de coté directement la première hypothèse car vu mes faibles connaissances en Linux j'aurais passé des jours a traquer un hypothétique fichier, peut-être sans même le trouver. Je me suis concentré sur la deuxieme hypothese qui consistait à refaire une nouvelle installation cette fois en supprimant, à regret, mes BDDs. Et effectivement MySQL est reparti, le problème venait donc bien des tables. Heureusement que j'avais pris la précaution de les sauvegarder auparavant juste au cas où. Et après quelques heures de bidouillage je suis arrivé à les ré-importer sans problème.


La procédure consiste donc à sauvegarder les tables avant de réinstaller MySQL:
Code :
sudo mv -Rf /var/lib/mysql /repertoire_de_votre_choix


Ensuite on supprime MySQL:
Code :
sudo apt-get --remove purge mysql-server


On re-install MySQL:
Code :
sudo apt-get install mysql-server


Les tables de base n'était pas crées, il a donc fallu le faire
Code :
sudo mysql_install_db --user=mysql --ldata=/var/lib/mysql


Il faut ensuite spécifier le mot de passe de l'utilisateur root
Code :
sudo mysqladmin -u root password 'mon_mot_de_passe'


A ce stade on ne peut pas redémarrer MySQL sans rebooter, et cela même en étant root car l'utilisateur 'debian-sys-maint' n'existe pas dans la BDD des users. Pour cela il faut regarder dans le fichier 'debian.cnf' qui contient le mot de passe
Code :
sudo cat /etc/mysql/debian.cnf

et on peut voir
Citation :
password = mot_de_passe_de_debian-sys-maint


Ensuite pour ajouter l'utilisateur dà la base de données le plus simple c'est de se logger avec phpMyAdmin grâce à l'utilisateur root que l'on vient de restaurer. Et il faut entrer les commandes MySQL suivantes:
Code :
GRANT ALL PRIVILEGES ON *.* TO 'debian-sys-maint'@'localhost' IDENTIFIED BY 'mot_de_passe_de_debian-sys-maint' WITH GRANT OPTION;
FLUSH PRIVILEGES;

où 'mot_de_passe_de_debian-sys-maint' est bien entendu le mot de passe que l'on vient de trouver précédemment

Vous pouvez maintenant vérifier que vous pouvez désormais redémarrer MySQL
Code :
sudo /etc/init.d/mysql restart


Voilà à ce stade MySQL remarche normalement, passons à la restauration des tables.

Pour cela il faut recopier les tables que vous avez sauvegardé. J'ai fait la procédure une table à la fois en vérifiant que tout fonctionnait bien. Au paravant on prend soin d'arreter MySQL.
Code :
sudo /etc/init.d/mysql stop
sudo cp -Rf /repertoire_de_votre_choix/une_de_vos_bases /var/lib/mysql/


Si vous faites un 'ls- l' sur le répertoire '/var/lib/mysql/' vous verrez qu'il n'appartient pas au bon user:groupe et n'a pas les bons droits. Il faut donc restaurer ca
Code :
sudo chown -Rf mysql:mysql /var/lib/mysql/une_de_vos_bases/
sudo chmod 755 -Rf /var/lib/mysql/une_de_vos_bases/


Enfin on redémarre MySQL et si la table n'est pas corrompue ca doit repartir et votre base doit etre visible dans phpMyAdmin
Code :
sudo /etc/init.d/mysql start


Voila il vous reste à refaire la même chose pour les autres BDDs.

Page 1 sur 1 Heures au format UTC+03:00
Powered by phpBB® Forum Software © phpBB Limited
https://www.phpbb.com/