Meilleures façons de réparer une table InnoDB corrompue dans MySQL

Summary: Vous pouvez être confronté à une corruption de la table InnoDB en raison d'un crash du serveur MySQL, d'une défaillance matérielle ou de bogues, etc. Ce blog traite des tables de base de données corrompues dans MySQL et de leurs causes. Il présentera également les meilleures façons de réparer une table InnoDB corrompue dans MySQL et quelques bonnes pratiques à suivre pour éviter qu'InnoDB ne soit corrompue.

IMPORTANT ! La réparation manuelle d’une table corrompue peut fonctionner, mais elle comporte un risque de perte de données. Si vous ne pouvez pas prendre le risque de perdre des données, essayez de restaurer la base de données à partir d’une sauvegarde récente. Toutefois, si la sauvegarde n’est pas la plus récente, vous risquez de perdre encore plus de données. Vous pouvez éviter le risque de perte de données lorsque vous réparez des tables InnoDB (ou MyISAM) corrompues en utilisant le logiciel Stellar Repair for MySQL. Il permet de récupérer les données des tables corrompues ou endommagées dans leur format d’origine en quelques clics seulement.

InnoDB est le  MySQL storage engine utilisé par défaut dans MySQL 5.5 et les versions ultérieures. Il est également connu comme un moteur de stockage sûr en cas de crash (par opposition à MyISAM), en raison de sa capacité à récupérer les données après un crash. Cependant, dans certaines circonstances, il semble que la table InnoDB puisse être corrompue. Dans ce cas, les données contenues dans la table deviennent illisibles. De plus, une table corrompue peut entraîner une corruption du fichier InnoDB.

Quelles sont les causes de la corruption des tables InnoDB dans MySQL ?

Voici quelques raisons qui peuvent entraîner la corruption de la table :

Vous pouvez rencontrer le problème de corruption de la table InnoDB plus fréquemment sous Windows OS lorsque la base de données fonctionne dans un environnement virtualisé. Voyons maintenant comment diagnostiquer et réparer la table InnoDB dans MySQL.

Avant de commencer

Essayez d’identifier précisément ce à quoi vous avez affaire. Cela vous aidera à résoudre le problème InnoDB de manière plus efficace, sans perdre de temps à chercher d’autres méthodes.

Pour diagnostiquer les problèmes liés à InnoDB, procédez comme suit :

1. Analyser le journal du serveur MySQL

Si vous soupçonnez ou constatez une corruption dans les tables InnoDB, examinez le journal des erreurs du serveur MySQL pour trouver des informations pertinentes sur des erreurs InnoDB spécifiques. Le journal des erreurs vous aidera à comprendre :

2. Vérifier l’absence d’erreurs dans le tableau

Bien que la consultation du journal des erreurs MySQL puisse vous aider à identifier une corruption, il se peut que vous ayez des difficultés à déterminer quelle table a été affectée par cette corruption. Vous pouvez vérifier les erreurs de la table InnoDB en utilisant deux méthodes. Cependant, la méthode à utiliser dépend du fait que le serveur MySQL est en cours d’exécution ou qu’il est hors ligne ou en panne.

mysql> CHECK TABLE nom_table ;

shell> innochecksum [options] nom_de_fichier

Comment réparer une table InnoDB corrompue dans MySQL ?

InnoDB est doté d’un mécanisme de récupération en cas de panne qui permet de réparer et de récupérer automatiquement les tables de la base de données en cas de panne. Vous pouvez également utiliser la méthode “Dump and Reload” pour reconstruire une ou plusieurs tables corrompues. Toutefois, en cas de corruption grave, il peut être difficile de redémarrer le serveur MySQL. Vous devrez donc réparer manuellement le fichier InnoDB dans MySQL qui contient la table corrompue.

Remarque : avant de tenter de réparer une corruption de fichier InnoDB causée par une table corrompue, effectuez une restauration à partir d’une sauvegarde récente. Si la copie de sauvegarde est corrompue ou s’il ne s’agit pas de la copie la plus récente, suivez les étapes décrites ci-dessous.

Suivez la procédure étape par étape pour réparer une table InnoDB corrompue.

Remarque : veillez à sauvegarder le fichier InnoDB avant d’exécuter la procédure de réparation afin d’éviter d’endommager davantage les données de la table.

Étape 1 : Essayez de redémarrer le service MySQL et vérifiez si vous pouvez accéder au serveur. Pour ce faire, procédez comme suit :

Si vous ne pouvez pas accéder au serveur, il peut être utile de  forcing InnoDB recovery. Pour cela, activez l’option ‘innodb_force_recovery‘ dans le fichier de configuration MySQL my.cnf en procédant comme suit :

[mysqld]

innodb_force_recovery=1

mysqldump -u user -p nom_base nom_table > single_dbtable_dump.sql

Vous pouvez extraire plusieurs tables séparées par des espaces dans la commande ci-dessus.

mysql -u user -p -execute=”DROP TABLE nom_de_la_base.nom_de_la_table”

mysql -u user -p < single_dbtable_dump.sql

Étape 2 : Arrêtez le service MySQL, puis désactivez le mode de récupération InnoDB. Pour cela, entrez la ligne suivante dans la section [mysqld] :

#innodb_force_recovery=…

Étape 3 : Enregistrez les modifications apportées au fichier my.cnf et redémarrez le service MySQL à l’aide de la commande suivante :

service mysqld start

Restaurez la table de la base de données à partir du dump (c’est-à-dire du fichier de sauvegarde) que vous venez de créer.

Que faire lorsque les conseils manuels de dépannage InnoDB ne parviennent pas à récupérer les données ?

Si vous rencontrez des difficultés lors de la réparation manuelle des tables InnoDB de la base de données MySQL ou si l’un des composants de la base de données semble manquant, vous pouvez essayer le  MySQL repair software pour réparer et restaurer les tables InnoDB corrompues.

Principales caractéristiques de Stellar Repair for MySQL

Conclusion

La réparation manuelle d’une table InnoDB corrompue peut entraîner la perte de données. Par conséquent, si vous ne pouvez pas risquer de perdre des données, utilisez le logiciel Stellar Repair for MySQL pour réparer la table InnoDB corrompue dans MySQL. Le logiciel aide à réparer la table de base de données corrompue et récupère les propriétés de la table, les contraintes de relation et les clés.

Une fois que vous avez corrigé la corruption du fichier InnoDB, suivez les meilleures pratiques suivantes pour prévenir la corruption d’InnoDB.

Related Post

Exit mobile version