Mysql
 sql >> Base de données >  >> RDS >> Mysql

Méthodes gratuites pour réparer une base de données MySQL corrompue

Lorsqu'une base de données MySQL devient corrompue, vous pouvez vous demander pourquoi la base de données a été corrompue en premier lieu. Cet article décrira les raisons possibles de la corruption de la base de données avant de répondre à la question :comment réparer une base de données MySQL corrompue ?

Les raisons de la corruption de la base de données MySQL

Une base de données MySQL peut être corrompue pour l'une de ces raisons :

  • Arrêt soudain du serveur
  • Défaut dans le matériel utilisé pour stocker et récupérer des données telles que le sous-système de disque, les contrôleurs de disque, les pilotes, etc.
  • Le processus 'mysqld' est tué alors qu'une mise à jour en cours est en cours
  • Bug logiciel

Il peut être difficile d'identifier la cause d'une base de données corrompue. Quelle que soit la cause, la préoccupation que vous devriez avoir est de savoir comment réparer la base de données MySQL corrompue.

Comment réparer une base de données MySQL corrompue ?

La première chose que vous devez regarder est le message d'erreur que vous obtenez. Voici quelques messages d'erreur que vous pouvez rencontrer lorsque la base de données MySQL est corrompue :

Erreur 144 : La table est bloquée et la dernière réparation a échoué

Erreur 141 : Dupliquer la clé unique ou la contrainte d'écriture ou de mise à jour

Erreur 136 : Plus de place dans le fichier d'index

Erreur 134 : L'enregistrement a déjà été supprimé

Erreur 126 : Le fichier d'index est planté/format de fichier incorrect

Erreur : Impossible de trouver le fichier 'wtlicensemanager.dll'

Si vous souhaitez effectuer la réparation gratuitement, vous avez deux options :

  1. Faites-le manuellement.
  2. Faites-le à l'aide d'un logiciel en utilisant la période d'essai.

Un logiciel de récupération de base de données peut faire un travail meilleur et plus rapide pour réparer la base de données corrompue.

Voici une application logicielle que vous pouvez utiliser pour réparer la base de données MySQL corrompue :

Cet outil de réparation de base de données MySQL répare la base de données créée à l'aide des moteurs de base de données InnoDB et MyISAM de MySQL. Vous pouvez télécharger la version de démonstration de l'outil de réparation SQL pour prévisualiser la base de données récupérable avant de les enregistrer.

Fonctionnalités clés :

  • Peut récupérer la base de données MySQL sur les systèmes Windows et Linux.
  • Récupère les fichiers InnoDB (.ibdata, .ibd et .frm) et les fichiers MyISAM (myd, .myi et .frm)
  • Restaurer les objets de la base de données tels que les tables, les propriétés des tables, les types de données, les vues, les déclencheurs, etc.
  • Permet la récupération sélective des composants de la base de données

Comment réparer manuellement une base de données MySQL corrompue ?

Il existe deux types de moteurs de stockage dans MySQL :InnoDB et MyISAM. La table InnoDB contient les fichiers FRM, IBDATA et IDB, tandis que la table MyISAM contient les fichiers FRM, MYD et MYI.

Avant de continuer

Voici quelques éléments à prendre en compte avant de tenter une récupération manuelle :

  • Ne redémarrez pas le serveur

Lorsque vous redémarrez le serveur, le serveur peut mettre la base de données corrompue en mode suspect. Cela désactivera la base de données. Il peut également créer des erreurs lors de la connexion à la base de données. Vous devez tenter une récupération sans redémarrer le serveur.

  • Utiliser le mode mono-utilisateur

Assurez-vous que vous êtes le seul utilisateur connecté à la base de données. Le mode mono-utilisateur vous donne le contrôle total, éliminant les interférences des autres utilisateurs.

  • Ne pas mettre à jour MySQL

Vous pouvez penser à mettre à jour la base de données MySQL pour réparer les fichiers corrompus. Mais ce n'est pas le cas. La mise à niveau peut entraîner une perte permanente de données.

  • Effectuer une sauvegarde de la base de données MySQL corrompue

Il est important d'avoir une sauvegarde du fichier corrompu car il peut y avoir des erreurs qui peuvent vous faire perdre des données. Il n'y a aucune garantie que vos étapes manuelles n'affecteront pas les fichiers sains. Il est donc prudent d'avoir une sauvegarde avant de tenter une récupération manuelle.

Pour sauvegarder, utilisez la commande suivante :

mysqldump db_name> database_name.sql

Entrez simplement le nom de votre base de données à la place de database_name.

Si ce qui précède ne fonctionne pas, essayez ce qui suit :

mysqldump –u[username] –p[password] [database_name]> [dump_file].sql 

Il existe un autre moyen de sauvegarder la base de données :

service mysqld stop

cp -r /var/lib/mysql /var/lib/mysql_bkp

Maintenant que nous avons la sauvegarde, nous pouvons tenter de réparer la base de données MySQL corrompue.

Comment récupérer manuellement la base de données MySQL ?

Réparation de la base de données MyISAM

Si vous utilisez le moteur de stockage de base de données MyISAM pour votre table de base de données, vous pouvez utiliser les commandes suivantes pour réparer la table :

Mysqlcheck

Si votre serveur MySQL est en cours d'exécution, exécutez la commande mysqlcheck suivante pour réparer votre table :

mysqlcheck -r [database_name]

Assurez-vous de remplacer ‘database_name’ par le nom de votre base de données.

Myisamchk

Si le serveur n'est pas en cours d'exécution, essayez de réparer la table de la base de données à l'aide de la commande myisamchk :

Remarque : Avant d'exécuter cette commande, assurez-vous qu'aucune table n'est ouverte sur le serveur.

myisamchk table_name

Réparez le nom de la table avec le nom de la table dans votre cas. Cette commande corrige automatiquement votre table.

Pour redémarrer le serveur, tapez ce qui suit :

service mysqld start

Forcer la récupération InnoDB

Vous devrez effectuer une récupération forcée InnoDB pour extraire les données d'une table de base de données InnoDB corrompue.

Étape 1 : Tout d'abord, vous devez ouvrir le fichier my.cnf.

Dans ce fichier, localisez la section [mysqld].

Ajoutez la ligne suivante à cette section :

innodb_force_recovery=1

Enregistrez maintenant le fichier de configuration et redémarrez le serveur MySQL. Vous pouvez définir la valeur de innodb_force_recovery de 1 à 6. Cependant, une valeur supérieure à 4 n'est pas recommandée, car elle peut corrompre les données.

Étape 2 : Videz les données de la table dans un nouveau fichier.

Pour ce faire, utilisez la commande suivante :

mysqldump –u utilisateur –p nom_bd nom_table> single_dbtable_dump.sql

Étape 3 : Supprimez la table corrompue de la base de données.

mysql –u user –p –execute=”DROP TABLE db_name.table_name”

Étape 4 : Restaurez la table à partir du fichier de vidage.

mysql –u utilisateur –p

Étape 5 : Une fois les fichiers réparés, désactivez le mode de récupération forcée avec la commande suivante :

#innodb_force_recovery=…

Vous pouvez maintenant redémarrer le service MySQL en mode normal.

Nous espérons que les méthodes ci-dessus vous aideront à réparer la base de données MySQL corrompue.