-==<XTBA>==-

Windows ne demande jamais à Chuck Norris d'envoyer le rapport d'erreur. Bill Gates vient le chercher lui même, avec toutes ses excuses.
Nous sommes le ven. 29 mars 2024, 18:47

Heures au format UTC+03:00




Poster un nouveau sujet  Répondre au sujet  [ 1 message ] 
Auteur Message
MessagePosté : mer. 16 déc. 2009, 04:21 
Hors ligne
Administrateur
Administrateur
Avatar de l’utilisateur

Enregistré le : ven. 3 oct. 2008, 20:21
Messages : 17419
Pseudo Boinc : [XTBA>TSA] IvanleFou
Localisation : Grenoble (38)
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.

_________________
Image
V8 farmer [benou_miam.gif]


Haut
   
Afficher les messages postés depuis :  Trier par  
Poster un nouveau sujet  Répondre au sujet  [ 1 message ] 

Heures au format UTC+03:00


Qui est en ligne

Utilisateurs parcourant ce forum : Aucun utilisateur enregistré et 1 invité


Vous ne pouvez pas poster de nouveaux sujets
Vous ne pouvez pas répondre aux sujets
Vous ne pouvez pas modifier vos messages
Vous ne pouvez pas supprimer vos messages
Vous ne pouvez pas joindre des fichiers

Rechercher :
Aller à :  
cron
Développé par phpBB® Forum Software © phpBB Limited
Traduit par phpBB-fr.com