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

Comment résoudre les problèmes courants avec la base de données MySQL ?

Résumé : Cet article répertorie certaines des erreurs courantes que vous pouvez rencontrer lorsqu'une table MySQL est corrompue. Il décrit également les raisons possibles de la corruption de la table de la base de données MySQL. L'article explique également ce que vous pouvez faire pour réparer les tables corrompues et comment un logiciel de réparation de base de données MySQL peut être utile pour récupérer les données dans la table et tous les autres objets de la base de données.

En tant qu'utilisateur de la base de données MySQL, vous pouvez rencontrer l'une de ces erreurs :

  • "La table est marquée comme plantée et doit être réparée"
  • "La table est bloquée et la dernière réparation a échoué"
  • "La table tbl_name n'existe pas"
  • "Fichier de clé incorrect pour la table :'…'. Essayez de le réparer », etc.

Ce sont des signes avant-coureurs que votre table MySQL est corrompue.

Qu'est-ce qui cause la corruption dans la table de la base de données MySQL ?

Voici les raisons possibles menant à la corruption de la table de la base de données MySQL :

  • Problèmes dans la plate-forme sous-jacente utilisée par MySQL, y compris le sous-système de disque, les pilotes, les contrôleurs, etc.
  • Arrêt brutal du système ou plantage du serveur
  • Le processus MySQL est tué au milieu de l'écriture dans la base de données
  • Bogue logiciel ou panne matérielle

La rencontre de l'une de ces erreurs de corruption MySQL peut rendre les données des tables inaccessibles. Discutons des solutions pour réparer les tables endommagées.

Comment réparer les erreurs de corruption de la base de données MySQL ?

Si vous disposez d'une sauvegarde à jour de votre base de données, restaurez la base de données à partir de la sauvegarde pour récupérer les données de table inaccessibles. Si la sauvegarde n'est pas disponible, effectuez les étapes dans l'ordre ci-dessous pour réparer les tables MySQL corrompues et récupérer les données :

Remarque : Effectuez une sauvegarde de votre base de données et de vos tables MySQL pour éviter d'autres dommages pendant le processus de réparation et de récupération.

Étape 1 :Vérifiez si le tableau contient des erreurs

Tout d'abord, vous devez vérifier la table de base de données pour les erreurs de corruption. Vous pouvez utiliser le CHECK TABLE commande pour diagnostiquer les tables InnoDB et MyISAM corrompues :

VÉRIFIER l'option TABLE tbl_name ;

Ici, remplacez 'tbl_name' par le nom de la table de base de données corrompue. Et remplacez "option" par l'une de ces options :RAPIDE, RAPIDE, MOYEN, ÉTENDU et MODIFIÉ.

Option Description
RAPIDE Effectue une réparation plus rapide des tables InnoDB et MyISAM. Ignore l'analyse des lignes pour rechercher des liens incorrects
RAPIDE Vérifiez uniquement les tables MyISAM qui n'ont pas été fermées correctement. Ne s'applique pas aux tables InnoDB.
MODIFIÉ Vérifiez uniquement les tables MyISAM qui n'ont pas été fermées depuis la dernière vérification. Ne s'applique pas aux tables InnoDB.
MOYEN Vérifiez si les liens supprimés sont valides en analysant les lignes. S'applique uniquement aux tables MyISAM.
ÉTENDU Effectue une recherche de clé complète pour toutes les clés de chaque ligne de la table MyISAM. L'exécution prend beaucoup de temps.

Pour vérifier la corruption de plusieurs tables, utilisez la commande suivante :

VÉRIFIER TABLE tbl_name1, tbl_name2, tbl_name 3 option ;

Remarque : La commande CHECK TABLE ne peut être utilisée que lorsque le processus MySQL est en cours d'exécution. Mais, si le processus/serveur n'est pas en cours d'exécution, vous pouvez utiliser la commande 'myisamchk' suivante pour vérifier que les tables MyISAM ne sont pas corrompues :

myisamchk [options] tbl_name …

Cette commande vérifie une seule table.

Exécutez la commande suivante pour vérifier si toutes les tables de la base de données MySQL sont corrompues :

myisamchk /path/to/datadir/*/*.MYI

L'utilitaire myisamchk ne fonctionne pas pour les tables InnoDB.

Étape 2 :Réparer la table corrompue

Remarque : La commande myisamchk s'applique uniquement aux tables MyISAM et ne fonctionne pas pour les tables InnoDB. Pour réparer et récupérer une table Innodb, passez à l'étape 3.

L'utilitaire myisamchk peut également aider à réparer une table MyISAM corrompue (endommagée). Pour utiliser l'utilitaire de réparation de la table endommagée, procédez comme suit :

  1. Arrêtez le service MySQL en saisissant :
arrêt du service mysqld

cd /var/lib/mysql

  1. Passez au répertoire où se trouve la base de données.
cd /var/lib/mysql/table_name

monisamchk

  1. Pour réparer une table endommagée, exécutez la commande suivante en remplaçant TABLE par le nom de la table que vous souhaitez réparer :
myisamchk –recover
  1. Redémarrez votre service MySQL.
service mysqld start

Étape 3 :Forcer la récupération InnoDB

Pour corriger la corruption dans les tables InnoDB, utilisez le 'innodb_force_recovery' option. Cette option force le moteur de base de données InnoDB à démarrer sans aucune opération en arrière-plan, ce qui vous permet de vider vos tables.

  1. Ouvrez votre fichier de configuration MySQL (my.cnf) et ajoutez ce qui suit à la section [mysqld] :
[mysqld]

innodb_force_recovery=1

service mysql redémarrage

Vous pouvez démarrer innodb_force_recovery avec une valeur de 1 et augmenter la valeur si nécessaire. Une fois que vous avez lancé la récupération innodb, redémarrez votre serveur MySQL, puis videz vos tables. Cependant, dans certaines situations, vous devrez peut-être définir la valeur sur 4 à 6, ce qui peut corrompre les données.

Attention ! Si vous êtes en mesure de vider les tables avec une valeur innodb_force_recovery=3 ou moins, vous pouvez effectuer le processus de récupération en toute sécurité. Cependant, définir innodb_force_recovery sur une valeur supérieure à 4 implique un risque de perte de données.

  1. Si vous parvenez à démarrer votre base de données, exécutez la commande mysqldump suivante pour exporter toutes les bases de données vers un fichier SQL (c'est-à-dire un fichier de sauvegarde contenant toutes les instructions pour restaurer la base de données) :
mysqldump –all-databases –add-drop-database –add-drop-table> mydump.sql
  1. Démarrez le service MySQL, puis essayez de supprimer la base de données contenant les tables concernées à l'aide de la commande DROP DATABASE. Si vous ne pouvez pas supprimer une base de données, essayez de la supprimer manuellement en effectuant les étapes ci-dessous après avoir arrêté le serveur MySQL.
cd /var/lib/mysql

rm -rf

  1. Après avoir exécuté la commande ci-dessus, commentez la ligne ci-dessous dans [mysqld] pour désactiver la récupération InnoDB :
#innodb_force_recovery=…
  1. Enregistrez toutes les modifications que vous avez apportées au fichier my.cnf, puis démarrez votre serveur.
service mysqld start
  1. Ty restaurez la base de données et la table à partir du vidage MySQL (fichier de sauvegarde) que vous avez créé à l'étape 2 :
mysql -u user -p

L'exécution de ces étapes restaurera la base de données MySQL et ses tables. Si les données sont toujours manquantes, vous devrez utiliser un logiciel de réparation de base de données MySQL professionnel, tel que Stellar Repair for MySQL pour restaurer votre base de données et récupérer ses données. Le logiciel peut réparer les tables InnoDB et MyISAM en gardant les données intactes. Il prend en charge la réparation des tables MySQL sur les systèmes Windows et Linux.

Conclusion

Les tables de base de données MySQL peuvent être corrompues en raison d'un arrêt soudain du système, d'une panne de serveur, de pannes matérielles, de bogues dans le code MySQL, etc. La corruption dans la table MySQL entraîne les erreurs répertoriées dans cet article. Vous pouvez essayer de réparer les tables MyISAM corrompues en utilisant l'utilitaire 'myisamchk' ou forcer la récupération InnoDB. Cependant, la réparation des tables MyISAM et la récupération manuelle d'InnoDB peuvent prendre un temps considérable. En outre, le processus de récupération manuelle peut entraîner une perte de données. Une meilleure alternative consiste à utiliser le logiciel Stellar Repair for MySQL. Le logiciel permet de réparer les tables de base de données MyISAM et InnoDB sans apporter de modifications aux données d'origine.