Retour au blog

Solutions rapides pour réparer des tables corrompues dans MySQL : un tutoriel

Solutions rapides pour réparer des tables corrompues dans MySQL : un tutoriel

MySQL est l'un des plus populaires open-source SGBDR (Systèmes de Gestion de Bases de Données Relationnelles). Il fait partie intégrante de la croissance rapide de la pile LAMP et a suscité un engouement impressionnant parmi les développeurs et les administrateurs système. Comparé aux bases de données non relationnelles, SQL offre d'excellentes fonctionnalités pour organiser, stocker et gérer efficacement les données. Les fonctionnalités distinctives d'organisation des tables et les capacités exceptionnelles de la base de données SQL en font un choix privilégié à tous les niveaux de l'organisation, qu'elle soit grande ou petite.

Les tables MySQL peuvent être endommagées en de rares occasions, ce qui indique qu'une telle erreur s'est produite et que les données qui y sont stockées sont illisibles. Lorsque vous essayez de lire des données à partir d'une table corrompue, le serveur plante et renvoie une erreur ou une liste d'erreurs.

Raisons potentielles de la corruption des tables MySQL

Voici quelques-unes des raisons les plus courantes de la corruption des tables :

  • Le service MySQL plante après le redémarrage.
  • La machine s'éteint de manière inattendue en raison d'une panne de courant.
  • Mémoire défectueuse ou défaillance matérielle.
  • Bugs logiciels dans l'système d'exploitation ou le code SQL.
  • MySQL s'arrête pendant l'écriture.
  • Le système se met HORS TENSION pendant la mise à jour de SQL.

Avant de réparer une table que vous soupçonnez d'être corrompue, créez une sauvegarde de votre répertoire de données. Cela permettra de réduire le risque de perte de données. Dans ce guide rapide, nous vous guiderons à travers les étapes de dépannage pour réparer les tables corrompues dans MySQL.

Prérequis

Pour suivre ce tutoriel, vous aurez besoin de ce qui suit :

Étape 1 : Arrêter le service MySQL et sauvegarder les données

Dans un premier temps, arrêtez le service MySQL à l'aide de la commande systemctl :

Après avoir arrêté le service SQL, l'étape suivante consiste à créer des sauvegardes de tous les fichiers existants dans un nouveau répertoire. Utilisez le répertoire de données par défaut d'Ubuntu /var/lib/mysql/ pour copier toutes les données du système :

Étape 2 : Identifier l'erreur

Ensuite, nous allons commencer notre enquête et identifier la table corrompue. Si la table utilise le moteur de stockage MyISAM, utilisez l'instruction CHECK TABLE et vérifiez l'état de la table :

Vous verrez un message en sortie confirmant la ou les tables corrompues.

Étape 3 : Réparer la table corrompue

S'il y a une erreur sur la table MyISAM et que vous l'avez identifiée, utilisez l'instruction REPAIR TABLE pour corriger l'erreur :

Si la réparation a réussi, vous devriez voir le message sans erreur suivant en sortie :

Cependant, si vous constatez que l'erreur réapparaît, suivez le document officiel de MySQL version 8.0 pour reconstruire ou réparer les tables.

Contrairement au moteur de stockage MyISAM, le processus InnoDB impliqué dans la réparation des tables est différent dans le moteur de stockage InnoDB. InnoDB est le moteur de stockage par défaut dans MySQL 8.0. Il dispose d'opérations de vérification et de réparation automatiques de la corruption. Le MySQL InnoDB vérifie les pages corrompues en effectuant des sommes de contrôle sur chaque page qu'il lit. Si une anomalie est détectée, il arrêtera automatiquement le serveur MySQL.

En fin de compte, il est rarement nécessaire de réparer les tables InnoDB. InnoDB dispose d'un mécanisme de récupération après plantage qui peut résoudre la plupart des problèmes grâce à un redémarrage.

Essayez de redémarrer le service MySQL pour voir si vous pouvez accéder au serveur :

Si vous ne parvenez pas à reconstruire une table InnoDB corrompue même après le redémarrage, essayez la méthode « Dump and Reload » suggérée dans la documentation de MySQL. Cette méthode consiste à récupérer l'accès à la table corrompue, en utilisant l'utilitaire mysqldump. Un dossier doit être créé pour stocker et conserver la sauvegarde logique de la table. Une fois l'erreur corrigée, elle recharge la table dans la base de données.

Étape 4 : Utiliser l'option innodb_force_recovery

Si le serveur reste planté ou inaccessible, essayez d'utiliser l'option force_recovery dans InnoDB. Le passage sur ON de l'option force_recovery est un excellent moyen de restaurer des bases de données MySQL. Vous pouvez activer cette option en modifiant le fichier mysqld.cnf dans l'éditeur de texte nano :

Insérez la ligne suivante sous la section [mysqld] :

innodb force recovery

Enregistrez et fermez le fichier après avoir redémarré le service MySQL.

Étape 5 : Créer un fichier mysqldump

Si vous pouvez accéder à la table corrompue, utilisez l'option mysqldump pour placer toutes les sauvegardes dans le nouveau fichier. Nommez le nouveau fichier selon vos préférences et veillez à ajouter l'extension .sql à la fin. Ici, nous nommons le fichier demo.sql:

Après cela, utilisez la requête DROP TABLE pour supprimer la table de la base de données. Vous pouvez utiliser la syntaxe suivante pour éviter d'avoir à rouvrir l'invite MySQL :

Ensuite, en utilisant le document de sauvegarde demo.sql que vous venez de préparer, restaurez la table :

Vous avez corrigé avec succès votre table MySQL corrompue et vous êtes prêt à travailler avec la base de données de manière transparente.

Conclusion

Des corruptions de tables ou des plantages système inattendus sont susceptibles de se produire si vous travaillez avec un volume important de données. Il convient de mentionner que le moteur de stockage MySQL InnoDB est plus tolérant aux pannes que le précédent moteur MyISAM. Les tables utilisant le moteur de stockage InnoDB peuvent toujours être corrompues, bien que le risque de corruption de table et de pannes soit considérablement réduit grâce à ses fonctionnalités de récupération automatique.

Enfin, il existe de nombreux sujets et tutoriels sur les bases de données que vous pouvez explorer sur notre blog:

Bonne informatique !

author

Akshay Nagpal

Auteur · CloudSigma

Preslav Dobrev est un designer créatif chez CloudSigma, axé sur une identité commerciale cohérente à travers des canaux marketing traditionnels et innovants. Il excelle à fusionner la vision artistique avec le marketing stratégique pour créer des récits de marque percutants.

Commentaires

Aucun commentaire pour l'instant. Soyez le premier.