informatique:applications:base-de-donnees:mariadb:maintenance:fixer-une-corruption-innodb

Différences

Ci-dessous, les différences entre deux révisions de la page.

Lien vers cette vue comparative

Les deux révisions précédentes Révision précédente
informatique:applications:base-de-donnees:mariadb:maintenance:fixer-une-corruption-innodb [2023/02/10 22:48] – supprimée - modification externe (Unknown date) informatique:applications:base-de-donnees:mariadb:maintenance:fixer-une-corruption-innodb [2023/02/10 22:48] (Version actuelle) – ↷ Page déplacée de informatique:linux:applications:base-de-donnees:mariadb:maintenance:fixer-une-corruption-innodb à informatique:applications:base-de-donnees:mariadb:maintenance:fixer-une-corruption-innodb Cédric ABONNEL
Ligne 1: Ligne 1:
 +====== Fixer une corruption InnoDB ======
 +{{tag>"Linux système" "Windows système"}}
  
 +La corruption de la table InnoDB est un problème fréquent qui peut affecter les bases de données MySQL ou MariaDB. Cela peut se produire lorsque la table InnoDB est endommagée en raison d'un crash du système, d'une coupure de courant ou d'une panne de disque. La corruption de la table InnoDB peut entraîner des erreurs lors de l'accès à la base de données et peut même rendre impossible l'accès à certaines données.
 +
 +Si cela devait vous arriver, voici les actions à mener :
 +
 +1/ Arrêter **mysqld** et sauvegarder les fichiers de la base de données.
 +<code bash>
 +service mysqld stop
 +mkdir /root/mysql_backup
 +cp -r /var/lib/mysql/* /root/mysql_backup/
 +</code>
 +
 +2/ Ajouter l'option **innodb_force_recovery** dans la section **[mysqld]** du fichier de configuration MySQL.
 +Cette option permettera de démarrer mysql et créer un dump des bases de données.
 +
 +Modifier le fichier **/etc/my.cnf**:
 +
 +<code bash>
 +[mysqld]
 +innodb_force_recovery = 4
 +</code>
 +
 +3/ Démarrer MySQL.
 +<code bash>
 +mysqld start
 +</code>
 +
 +4/ Effectuer un dump des bases de données.
 +
 +<code bash>
 +mysqldump -uroot -p`cat /root/.mysql.shadow` -A > dump20120915_084449.sql
 +</code>
 +
 +Si des erreurs persistent, il faut augmenter la valeur de l'option **innodb_force_recovery**.
 +
 +5/ Supprimer le contenu des fichiers de l'InnoDB
 +
 +<code bash>
 +rm -rf /var/lib/mysql/*
 +</code>
 +
 +6/ Enlever l'option **innodb_force_recovery** du fichier **/etc/my.cnf**.
 +
 +7/ Démarrer **mysqld**
 +
 +<code bash>
 +/etc/init.d/mysqld start
 +</code>
 +
 +8/ Restaurer les bases de données.
 +
 +<code bash>
 +mysql -uroot < dump20120915_084449.sql
 +</code>
 +
 +9/ Restaurer les droits des bases de données.
 +
 +<code bash>
 +mysql -uroot
 +</code>
 +
 +puis une fois dans MySQL
 +
 +<code bash>
 +FLUSH PRIVILEGES;
 +</code>
 +
 +
 +Actuelle, je le constate trop souvent avec Windows 11. Si cela vous arrive également, il est conseillé d'effectuer régulièrement des sauvegardes de vos données importantes afin de pouvoir les restaurer en cas de problème. Il est également recommandé de prévoir un arrêt propre de MySQL avant de fermer ou de redémarrer votre ordinateur, afin de minimiser les risques de corruption de données ou de perte de données.