Récupérer des tables MySql à partir de fichiers .ibd : un défi permanent
P粉848442185
P粉848442185 2023-12-30 12:03:47
0
1
588

Le serveur MySQL a soudainement cessé de fonctionner, le service était intermittent, je ne pouvais pas faire de sauvegarde car le service ne fonctionnait pas, donc le mieux que je pouvais faire était de copier l'intégralité du dossier DATA.

De plus, j'avais une sauvegarde plus ancienne, donc l'utiliser avec le fichier ibd a restauré toutes les tables sauf la dernière, qui disait :

ERROR 1808 (HY000): Schema mismatch (Clustered index 
validation failed. Because the .cfg file is missing, table 
definition of the IBD file could be different. Or the data file 
itself is already corrupted.)

Je ne sais pas quoi faire.

P粉848442185
P粉848442185

répondre à tous(1)
P粉311563823

Je pense que la seule chose que vous pouvez faire est de vous fier à la version table dans la sauvegarde. Vous ne pouvez pas restaurer les fichiers .ibd copiés.

Le message d'erreur indique que l'une des deux choses suivantes s'est produite :

  • La structure de la table a changé depuis la sauvegarde, donc le fichier .ibd ne correspond plus aux métadonnées stockées dans le dictionnaire de données. InnoDB est dans le même bateau que vous lorsque le contenu d'un fichier tablespace ne correspond pas aux métadonnées : "Je ne sais pas quoi faire

    ."
  • Même si la structure de la table n'a pas changé, les dommages physiques au fichier .ibd suffisent à le rendre illisible par InnoDB.

Quoi qu'il en soit, InnoDB ne peut pas lire le fichier tablespace.

Évidemment, cela créera des problèmes si vous réussissez à restaurer toutes les autres tables. Il y a maintenant des données plus récentes dans la plupart des tableaux, à l'exception du dernier tableau qui est périmé. S'il existe des lignes dans ces tables qui se référencent les unes aux autres, elles peuvent contenir des enregistrements orphelins (par exemple, un enregistrement indiquant qu'un utilisateur a acheté un produit, mais que cet utilisateur n'existe pas dans la table Utilisateurs).

C'est regrettable et difficile à corriger.

D'une manière générale, la copie de fichiers .ibd n'est pas un moyen fiable de sauvegarder une base de données InnoDB. Vous devez utiliser un outil de sauvegarde approprié, tel que mysqldump ou Percona XtraBackup.

Une autre solution pour récupérer les données après la dernière sauvegarde consiste à utiliser des fichiers journaux binaires pour une récupération à un moment précis. Mais pour y parvenir, vous avez besoin de tous les fichiers journaux binaires depuis la sauvegarde la plus récente, et la sauvegarde a besoin d'informations sur l'emplacement des journaux binaires au moment où la sauvegarde a été effectuée. Veuillez vous référer à https://dev.mysql.com/doc /refman/en/point-in-time-recovery.html

Derniers téléchargements
Plus>
effets Web
Code source du site Web
Matériel du site Web
Modèle frontal