Bonjour,

Après un soucis machine, j'ai une sauvegarde "physique" des bases de données : j'ai un backup du repertoire mysql/data", donc des fichiers .FRM et .IBD

J'ai bêtement copié les fichiers dans le nouveau repertoire data. Lorsque j'utilise phpmyadmin par exemple, je vois bien les bases de données et les tables, mais lorsque je clique sur une table, celui-ci m'indique que la table xxxx n'existe pas. Pour info j'étais sur mysql 5.6.17 et dorénavant je suis sur 5.7.9

Pareil si je vais dans mysql. Lorsque je fais show tables, j'ai bien la liste des tables mais si je fais pas exemple select * from users; il me renvoie ERROR 1146 (42S02): La table 'photos.users' n'existe pas

Merci de votre aide

1 réponse


Bonjour,

Ca sent l'oublie de la restauration du/des fichier(s) ibdata

Une partie des informations des bases innodb se trouvent dans le(s) fichier(s) ibdata, que vous ayez choisi l'option innodb_file_per_table ou non.
Que dit ton fichier my.cnf ou my.ini concernant cette variable : innodb_data_file_path ? Par défaut les fichiers se situent dans le dossier de données mysql (verifiez avec innodb_data_home_dir).

Donc si vous trouvez ce(s) fichier(s) ibdata, il suffit de les remettre et hop ça repart... enfin, normalement. Car je ne connais pas votre méthode de sauvegarde (snapshot ou autre). Si vous n'avez pas arreter le serveur de base de données avant de les copier, il se peut qu'un décalage se soit opérer entre la sauvegarde des .frm & .idb et le(s) fichier(s) ibdata.

Pour ma part, je ne sauvegarde jamais les fichiers tels quels. J'exporte avec mysqldump mes données des bases/tables après un "flush tables with read lock". Et je ne sauvegarde que ces exports (que je compresse au préalable). Du coup même si les fichiers .frm & .idb ou autre sont mort, je peux reinitialiser le serveur et réinjecter les requetes SQL de créations de tables et de données.
Bon ok je n'ai que 5 Giga de sauvegarde. Ca ne casse pas 3 pattes à un canard.