Pages : 1
#1 Le 22/09/2018, à 11:03
- Shanx
Rétablir accès à une BDD mysql corrompue
Salut,
J'ai eu un problème disque sur mon serveur. Avant de remplacer le disque, j'ai fait une copie à l'arrache de la BDD (myqsl même pas coupé, mais je ne pense pas qu'il y avait beaucoup d'activité sur la base).
Du coup, vous vous en doutez, impossible de rétablir la base. J'aimerais bien la faire fonctionner pour remonter un wordpress juste le temps de faire un export des données pour pouvoir les réintégrer sur un nouveau site, mais ça ne marche pas.
Le problème :
guillaume@guillaume-VirtualBox:~$ mysql
Welcome to the MariaDB monitor. Commands end with ; or \g.
Your MariaDB connection id is 5
Server version: 10.0.36-MariaDB-0ubuntu0.16.04.1 Ubuntu 16.04
Copyright (c) 2000, 2018, Oracle, MariaDB Corporation Ab and others.
Type 'help;' or '\h' for help. Type '\c' to clear the current input statement.
MariaDB [(none)]> use wpdatabase;
Reading table information for completion of table and column names
You can turn off this feature to get a quicker startup with -A
Database changed
MariaDB [wpdatabase]> show tables;
ERROR 2006 (HY000): MySQL server has gone away
No connection. Trying to reconnect...
Connection id: 2
Current database: wpdatabase
ERROR 2006 (HY000): MySQL server has gone away
No connection. Trying to reconnect...
ERROR 2013 (HY000): Lost connection to MySQL server at 'reading initial communication packet', system error: 104 "Connection reset by peer"
ERROR: Can't connect to the server
L'erreur log de mysql ne donne aucune info supplémentaire.
Idée n°1 : ce n'est pas la même version de mysql (et c'était un serveur Debian 8). Du coup je tente un update :
guillaume@guillaume-VirtualBox:~$ mysql_upgrade
MySQL upgrade detected
Phase 1/6: Checking and upgrading mysql database
Processing databases
mysql
mysql.columns_priv OK
mysql.db OK
mysql.event OK
mysql.func OK
mysql.help_category OK
mysql.help_keyword OK
mysql.help_relation OK
mysql.help_topic OK
mysql.host OK
mysql.ndb_binlog_index OK
mysql.plugin OK
mysql.proc OK
mysql.procs_priv OK
mysql.proxies_priv OK
mysql.servers OK
mysql.tables_priv OK
mysql.time_zone OK
mysql.time_zone_leap_second OK
mysql.time_zone_name OK
mysql.time_zone_transition OK
mysql.time_zone_transition_type OK
mysql.user OK
Phase 2/6: Fixing views from mysql
Phase 3/6: Running 'mysql_fix_privilege_tables'
Phase 4/6: Fixing table and database names
Phase 5/6: Checking and upgrading tables
Processing databases
information_schema
performance_schema
wpdatabase
wpdatabase.wp_commentmeta OK
wpdatabase.wp_comments OK
wpdatabase.wp_errors_404_logs OK
wpdatabase.wp_links OK
wpdatabase.wp_options OK
wpdatabase.wp_postmeta OK
mysqlcheck: Got error: 2013: Lost connection to MySQL server during query when executing 'CHECK TABLE ... FOR UPGRADE'
FATAL ERROR: Upgrade failed
(Note : j'ai aussi essayé de faire ça sur une VM Debian 8. Aucune différence.)
Idée n°2 : d'après la bible StackOverflow, on peut essayer d'augmenter les timeout. Allons-y :
[mysqld]
max_allowed_packet = 64M
wait_timeout = 6000
Comme vous vous en doutez, rien ne change. D'ailleurs, l'erreur est immédiate, donc je ne pense pas que ce soit un problème de timeout. Concernant la taille des paquets, c'est une BDD Wordpress ultra-classique, donc je ne pense pas que ce soit lié.
Du coup l'idée n°1 m'a donné une indication : ce n'est pas toute la BDD qui est pourrie, mais seulement au moins une table. Laquelle ? Facile :
guillaume@guillaume-VirtualBox:~$ mysqldump wpdatabase wp_postmeta > /dev/null
guillaume@guillaume-VirtualBox:~$ mysqldump wpdatabase wp_posts > /dev/null
mysqldump: Got error: 2013: "Lost connection to MySQL server during query" when doing LOCK TABLES
Donc forcément c'est la table la plus importante qui est corrompue. (Liste des tables Wordpress dans la doc WP)
Du coup je continue à chercher dans mon coin, mais si quiconque a une idée (et du temps à perdre), je suis preneur
Mes randos : grande traversées des Alpes, de l'Islande, de la Corse, du Japon (en vélo), etc.
Traversée des États-Unis à pied
Hors ligne
#2 Le 22/09/2018, à 11:38
- Mornagest
Re : Rétablir accès à une BDD mysql corrompue
Yo,
Je suis pas vraiment très bon dans la gestion des bdd, mais est-ce que tu ne peux pas carrément supprimer cette table (ou la remplacer par une table vierge) histoire de feinter l'import ?
N'oubliez pas de consulter la documentation pour vous donner un coup de main !
Merci de modifier le premier message de votre sujet pour ajouter [Résolu] lorsque votre problème l'est :)
Xubuntu 20.04 sur deux ordinateurs, zéro souci. Passez à Xubuntu ;)
Hors ligne
#3 Le 22/09/2018, à 11:41
- Shanx
Re : Rétablir accès à une BDD mysql corrompue
Bah c'est la table contenant les articles. Si je devais ne récupérer qu'une seule table, je choisirais celle-ci.
Mes randos : grande traversées des Alpes, de l'Islande, de la Corse, du Japon (en vélo), etc.
Traversée des États-Unis à pied
Hors ligne
#4 Le 22/09/2018, à 13:38
- Mornagest
Re : Rétablir accès à une BDD mysql corrompue
OK, j'avais pas fait gaffe mais évidemment, wp_post...
Du coup, tu es sûr qu'en important juste une autre table, ça fonctionne ?
N'oubliez pas de consulter la documentation pour vous donner un coup de main !
Merci de modifier le premier message de votre sujet pour ajouter [Résolu] lorsque votre problème l'est :)
Xubuntu 20.04 sur deux ordinateurs, zéro souci. Passez à Xubuntu ;)
Hors ligne
#5 Le 22/09/2018, à 14:39
- bruno
Re : Rétablir accès à une BDD mysql corrompue
Bonjour,
Je ne comprends pas bien ce que tu essaies de faire…
Visiblement le simple fait d’essayer d'afficher les tables de la base wpdatabase fait planter mysql. Tu trvailles donc très probablement avec des fichiers corrompus sous /var/lib/mysql/wpdatabase
Dans ce cas il n'y pas d'autre solution que de vider/supprimer les tables corrompues, voire toute la base et de restaurer à partir de la dernière sauvegarde (En principe on fait des sauvegardes quotidiennes des ses bases de données).
Maintenant si tu as négligé de faire des sauvegardes il ne te reste plus qu'à tenter avec le paramètre innodb_force_recovery = 1 de faire un dump de la base corrompue 'sans aucune garantie).
Pages : 1