Contenu | Rechercher | Menus

Annonce

Si vous avez des soucis pour rester connecté, déconnectez-vous puis reconnectez-vous depuis ce lien en cochant la case
Me connecter automatiquement lors de mes prochaines visites.

À propos de l'équipe du forum.

#1 Le 22/09/2018, à 12: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. neutral (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 big_smile


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, à 12: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, à 12: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. tongue


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, à 14: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, à 15: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).

Hors ligne