Récupération de MySQL cassé

Tags:: mysql :: linux

Je viens d'exploser, sans trop savoir pourquoi, ma base de données MySQL et toutes mes tentatives de redémarrage se terminent par un échec. Une goutte de sueur froide commence à me couler le long de la colonne vertébrale quand je lance "mysqld" manuellement et que je vois passer des "stack trace" incompréhensibles. Suivant le message d'erreur, je me rend sur les adresses de site que me balance le serveur pour "réparer" ma base... mais rien n'a été fructueux. Alors voici l'opération de la dernière chance si un jour vous êtes dans mon cas.

Il ne faudra faire cela que dans un cas de force majeure, c'est à dire que le serveur refuse catégoriquement de démarrer. Si votre base démarre mais que seule quelques bases, ou tables, fonctionnent, vous pouvez tenter de réparer autrement. Ici, je ne vais vous parler que du cas du désespoir: le serveur plante au démarrage sans avoir de solution.

Cela étant dit, nous pouvons commencer. Les définitions de tables se trouvent en général dans "/var/lib/mysql". C'est ici que les fragments binaires correspondants à vos tables sont enregistrés. Nous allons simplement déplacer ce répertoire ailleurs, par exemple /tmp/dbsave.


#si vous êtes sur ubuntu, précédez toutes les commandes par sudo
#sinon, loguez vous en root avec la commande su - (n'oubliez pas le tiret)
mkdir /tmp/dbsave
mv /var/lib/mysql /tmp/dbsave/
 

Supprimez mysql server de votre machine,


#pour ubuntu
sudo apt-get remove mysql-server-5.0
#pour fedora
yum remove mysql-server
 

Réinstallez mysql



#pour ubuntu
sudo apt-get install mysql-server-5.0
#pour fedora
yum install mysql-server
 

La base doit démarrer:


#ubuntu:
sudo /etc/init.d/mysql restart
#fedora:
service mysqld restart
 

Maintenant que nous sommes sur une installation propre, nous allons réinjecter une à une nos bases de données. Dans notre répertoire /tmp/dbsave/mysql se trouve des répertoires qui sont en fait les points d'entrée des bases. Vous pouvez commencer à copier les répertoires dans /var/lib/mysql. A chaque base, vous relancerez mysql. Ne copiez pas les bases test et mysql déjà présentes, ces bases sont installées par Mysql lui même.


#ubuntu:
sudo cp -r /tmp/dbsave/mysql/db1 /var/lib/mysql/db1
/etc/init.d/mysql restart

#fedora, en tant que root
cp -r /tmp/dbsave/mysql/db1 /var/lib/mysql/db1
service mysqld restart
 

Et ainsi de suite

Si une des bases fait planter MySQL au redémarrage, alors vous n'avez plus qu'à dire adieu à cette dernière. Recommencez l'opération en outre passant la base qui pose problème... et je vous souhaite d'avoir une sauvegarde... sinon, vous allez voir que la totalité de vos bases sont récupéré et que tout se passe correctement.

Attention les utilisateurs ont été supprimé, et théoriquement l'utilisateur "root" de votre base de donnée n'a plus de mot de passe, je vous conseille de vite en remettre un:


mysqladmin password le_mot_de_passe
 

Pour ma part, j'ai put récupérer toutes mes données... c'est un peu "violent" comme méthode, mais ça marche.

Utilisez le code barre pour ouvrir le ticket dans votre mobile:
This ticket on you mobile

Pas de commentaire pour le moment

Ajouter un commentaire
Veuillez répondre à la question suivante : Pim pam et tapez "poom" sans les guillemets

Trackbacks

Pour ajouter un trackback (retrolien) sur ce ticket, utilisez cette adresse: http://www.metal3d.org/index.php/trackback/default/tb?id=blog%2F111

Tags

Blog Copix Communication PC Config Fedora Vidéo Humour Autre Web Materiel Informatique PHP Développement Mootools HTML Linux WEB IE CSS Vista Microsoft Sympa XHTML Quizz Widget Klik CWE Voeux Bonne année Musique CCRMA Son Audio MAO Reconnaissance vocale Windows Mac Compiz MacOS Mysql Sun Base de données BD Screenlets Screenlet RPM compiz Ubuntu Live FireFox Derambarsh Facebook media informations Sécurité javascript SSH Commande Marketing concours ipod wii QT Trooltech Nokia Libre Logiciels GPL Attali Gnome Dock Compiler Bench undelete reiserfs recovery recover Thread Serveur Optimisation Server Apache Album RSS Flash Air XML Firefox Blender Opensource Orange Internet LiveBox Animaux Droits Logiciels Libres Google Loi RBS netcat Bash Téléphone Spam 3D NIDIA Standards Widgets Merise UML Streaming Developpement Perl MySQL Firewall Parfeu Bayes Novell Réseau Python LVS Salon FTP Dedibox Chrome Administration IRC Gentoo troll video Nouveauté Finance Etudiant spéctacle OpenOffice Javascript Java Info Eclpise ATI design mootools KDE Bureau Design GNU C Pages Jaunes Fun Bijoux Art mail Admin vmware fedora linux VirtualBox VMWare Qemu KVM vim Grep Fglrx Webkit GTK google web JQuery Coup de gueule coup de gueule Lois SVG Raycaster Canvas Hadopi Desktop Jeux Les Sims développement astuces Screen firefox Mobile Safaru Wine bash commande astuce Wave ooc C++ C# Netbook Hercules Bureautique Twitter Safari W3C chrome kazehakaze midori navigateur gecko webkit Links Liens Pyhon Nouvelles Metal Perso Conférence JDLL PCC Roadsend OOC News Acteur Cinéma Chanteur Seven windows orthographe pcc php jdll Slide Application mysql Html twitter python screen curses SVN Android Gphone iPhone OpenGL MindMap Projet Javascrtip Ajax Guitare Tab Tablature JSON firebug Chromium Iphone Titanium music sound android ogg ogv streaming

  • twitter entries...
follow me on Twitter

Valid XHTML 1.0 Strict