Comment réparer des clés étrangères endommagées dans MariaDB ?

Summary: Il y a plusieurs facteurs qui peuvent conduire à la corruption des clés étrangères dans MariaDB. Cet article traite des causes possibles de corruption des clés étrangères et des solutions pour les réparer et les récupérer. Il mentionne également un outil avancé de réparation de base de données MariaDB que vous pouvez utiliser pour récupérer rapidement les clés étrangères et d'autres données d'une base de données corrompue.

La clé étrangère est l’un des composants de la base de données MariaDB. Elle est également connue sous le nom de clé de référencement et correspond au champ de clé primaire d’une autre table afin de maintenir l’intégrité référentielle. La table avec une clé étrangère est appelée la table enfant et la table avec la clé primaire est appelée la table parent. Si la clé étrangère est endommagée, cela peut affecter le respect des règles d’intégrité des données et la cohérence de la base de données. Dans un tel cas, vous pouvez rencontrer des problèmes lors de l’ajout ou de la modification de tables contenant des clés étrangères. Mais comment une clé étrangère peut-elle être endommagée et comment pouvez-vous la réparer ? C’est ce que nous allons voir dans ce billet.

Quelles sont les causes de corruption des clés étrangères (foreign keys) dans MariaDB ?

Il y a plusieurs raisons qui peuvent conduire à la corruption des clés étrangères et d’autres composants de MariaDB. Certaines d’entre elles sont

Comment reconnaître une corruption de la base de données MariaDB ?

Avant de trouver des solutions, vous devez vérifier que la base de données MariaDB n’est pas corrompue. Voici quelques moyens de vérifier si la base de données MariaDB est corrompue.

Méthode 1 : Utilisez l’instruction SHOW ENGINE INNODB STATUS

L’instruction SHOW ENGINE INNODB STATUS fournit des informations sur les clés étrangères qui peuvent être utilisées pour diagnostiquer les problèmes. Les restrictions de clés étrangères sont principalement à l’origine de problèmes de blocage ou de verrouillage. Vous pouvez consulter la section LATEST FOREIGN KEY ERROR et la section LATEST DETECTED DEADLOCK pour identifier les erreurs de clé étrangère et les problèmes de verrouillage.

Méthode 2 : Vérifier les journaux d’erreurs

Les journaux d’erreurs contiennent des informations sur tous les problèmes rencontrés dans les tables MariaDB. S’il y a un problème avec les clés étrangères, des messages d’erreur sont enregistrés dans les journaux d’erreurs qui indiquent des problèmes avec les contraintes de clés étrangères. Vous pouvez vérifier le fichier journal des erreurs pour trouver des preuves de violations ou de corruptions de clés étrangères.

Méthode 3 : Utilisez la commande CHECK TABLE

La commande CHECK TABLE vérifie que les tables MariaDB ne contiennent pas d’erreurs ou de problèmes. Cette commande soutient les tables stockées dans Archive, Aria, CSV, InnoDBet MyISAM et MyISAM. Voici la syntaxe de la commande CHECK TABLE :

CHECK TABLE nom_de_la_table [, nom_de_la_table] ... [option] ...

option = {Pour la mise à jour | RAPIDE | RAPIDE | MOYEN | ÉTENDU | MODIFIÉ}

Si la commande CHECK TABLE trouve un problème dans les tables, le moteur InnoDB plantera intentionnellement MariaDB pour éviter d’autres dommages.

Comment réparer des clés étrangères endommagées (corrupted foreign keys) dans MariaDB

Voici les méthodes que vous pouvez utiliser pour réparer et récupérer les clés étrangères corrompues dans MariaDB.

Méthode 1 : Remettre la sauvegarde avec l’utilitaire Mariabackup

Si vous disposez d’un fichier de sauvegarde mis à jour, vous pouvez remettre la base de données MariaDB à partir de la sauvegarde en utilisant Mariabackup – un outil intégré à MariaDB. Vous pouvez utiliser l’option -copy-back ou l’option -move-backup. Ci-dessous, vous apprendrez à utiliser l’option -copy-back de l’utilitaire Mariabackup pour remettre la sauvegarde en état :

Etape n°1 : Vider le répertoire de données

La commande -copy-back remet la sauvegarde dans le répertoire de données, qui est étiqueté -datadir. Avant d’exécuter la commande, vous devez donc vider le répertoire de données. Pour vérifier et vider le répertoire de données, allez dans le fichier de configuration, qui est normalement situé dans /etc/mysql/my.cnf.

Étape 2 : Désactiver le service du serveur MariaDB

Exécutez la commande suivante pour désactiver le service MariaDB Server :

Arrêtez mysql.server

Étape 3 : Exécutez Mariabackup avec l’option -copy-back.

Exécutez maintenant Mariabackup avec l’option -copy-back :

$ mariabackup --copy-back \N- $ mariabackup --copy-back \N- $ mariabackup --copy-back

--target-dir=/var/mariadb/backup/

Étape 4 : Modifier les autorisations d’accès aux fichiers

Ensuite, modifiez les autorisations de fichier du répertoire de données pour changer le propriétaire du fichier dans le répertoire de données. Exécutez la commande suivante :

$ chown -R mysql:mysql /var/lib/mysql/

Étape 5 : Redémarrer le service MariaDB

Redémarrez ensuite le service MariaDB à l’aide de la commande ci-dessous :

Arrêtez mysql.server

Méthode 2 : Utiliser la méthode dump-and-reload

Si la sauvegarde est obsolète ou si vous devez remettre certaines tables de la base de données MariaDB, vous pouvez utiliser la méthode Dump and Reload. Cette méthode vous permet de remettre les tables de la base de données MariaDB ainsi que les clés étrangères de ces tables. Voyons comment vous pouvez utiliser cette méthode.

Vous devez d’abord redémarrer MariaDB avec l’option -innodb-force-recovery=#. Si MariaDB ne démarre pas, essayez à nouveau de définir une valeur plus élevée jusqu’à ce qu’il démarre. Une fois que le mode de récupération des données est activé après un crash, essayez de récupérer les données de la table. Voici les étapes à suivre :

SHOW CREATE TABLE nom_de_table

Démarrez mysqld

DROP [TEMPORARY] TABLE [IF EXISTS] [/*COMMENT TO SAVE*/]

nom_de_table [, nom_de_table] ...

[WAIT n|NOWAIT]

[RESTREINDRE | CASCADE]

La commande DROP TABLE supprime toutes les données de la table, y compris les définitions de table et les déclencheurs.

Remarque : Vous pouvez remettre les données d’une table à la fois en utilisant la méthode Dump and Reload (vidage et rechargement).

Méthode 3 : Utilisez un programme professionnel de réparation de MariaDB

Pour réparer la base de données MariaDB rapidement et facilement, vous pouvez utiliser un outil professionnel de réparation de base de données MariaDB comme Stellar Repair for MySQL. Il s’agit d’un outil convivial qui peut récupérer toutes les données telles que les clés étrangères, les clés primaires, les vues, les déclencheurs, etc. d’une base de données MariaDB corrompue. L’outil dispose d’une interface utilisateur interactive qui vous aide à effectuer la réparation et la récupération des données en quelques étapes faciles.

Voici quelques-unes des principales caractéristiques de Stellar Repair for MySQL :

Conclusion

Les clés étrangères dans MariaDB peuvent être corrompues pour diverses raisons. Vous pouvez utiliser les méthodes mentionnées ci-dessus pour réparer une base de données MariaDB dont les clés étrangères sont corrompues. Cependant, la meilleure façon de réparer la base de données corrompue est d’utiliser un outil de réparation MariaDB spécialisé, tel que Stellar Repair for MySQL. Cet outil de réparation de base de données peut réparer la base de données endommagée et récupérer toutes les données, y compris les clés primaires et étrangères, avec une précision absolue. Pour tester les fonctionnalités de Stellar Repair for MySQL, téléchargez la version de démonstration gratuite. L’outil est soutenu par toutes les versions du serveur MariaDB.

Related Post

Exit mobile version