Pour une raison quelconque, lorsque j'essaie d'ouvrir mes tables qui sont stockées dans .frm
et les .ibd
fichiers (que ce soit sur MySQL ou phpmyadmin) cela me donne une erreur de syntaxe, ou il dit qu'il n'existe pas.
J'ai lu l'autre article qui avait un problème similaire à celui-ci, mais je ne sais pas comment vérifier s'il innodb_file_per_table
est activé, et je suis globalement vraiment confus. J'ai également converti une copie de mon mysql-bin.000002
fichier en un fichier txt, donc je vois que les données de ma base de données ne sont pas complètement perdues.
La base de données a été créée l'année dernière. J'ai 6 de ces mysql-bin.00000
fichiers, mais pour une raison quelconque, .000002
c'est le plus grand. En ce moment, j'ai les fichiers .ibd
et .frm
pour toutes mes bases de données, mais je ne sais pas comment je peux les restaurer dans MySQL, ou du moins dans quelque chose que je peux lire.
J'utilise WampServer 2.4 et MySQL 5.6.12 sur Windows 2003 Server. De plus, suis-je censé télécharger un plugin dans InnoDB?
Réponses:
J'ai finalement compris et résolu mon problème à travers de nombreux essais et erreurs. Pour ceux qui n'ont pas leur fichier ibdata1 d'origine et qui n'ont que leurs fichiers .frm et .ibd, voici comment j'ai restauré mes données.
J'espère que cela vous a aidé et faites-moi savoir si vous avez des questions ou des commentaires! Consultez également http://www.chriscalender.com/?tag=innodb-error-tablespace-id-in-file pour plus de détails.
la source
Got error -1 from storage engine
lorsque vous exécutezIMPORT TABLESPACE
. Mais pour moi, MySQL 5.6 a fonctionné pour les tables qui ont été créées à l'aide de MySQL 5.5, donc tout va bien;). Si vous êtes bloqué avec 5.5, vous devez suivre les instructions du lien chriscalender que vous avez posé.innodb_file_per_table
activé.Le fichier de données principal InnoDB - généralement nommé
ibdata
- est essentiel pour que MySQL puisse comprendre vos fichiers .ibd.Si vous devez déplacer des données entre des serveurs à l'aide des fichiers binaires, vous devez arrêter MySQL proprement, puis déplacer tous les fichiers de données, y compris le (s) fichier (s) ibdata , entre les répertoires.
Un mécanisme plus fiable pour déplacer des données entre des serveurs sous Windows serait d'utiliser (
mysqldump
) ou une exportation de base de données depuis PHPMyAdmin (ou un outil similaire).Si la journalisation binaire a été activée pendant toute la durée d'exécution de votre serveur (sur la base des commentaires, cela peut ne pas être le cas), vous pouvez également utiliser
mysqlbinlog
pour récupérer chaque instruction SQL que vous avez exécutée sur le serveur à partir des fichiers mysql-bin et recréez la base de données de cette façon. Il devrait y avoir des horodatages Unix dans les fichiers mysql-bin qui vous aident à déterminer jusqu'où ils remontent.Si vous avez perdu vos fichiers de base de données d'origine et qu'il ne vous reste que les fichiers .ibd individuels, vous devrez peut-être recourir à la récupération des données selon les suggestions d'Akuzminsky dans les commentaires.
MySQL 5.6 a quelques nouvelles fonctionnalités pour déplacer les fichiers de données InnoDB .ibd (espaces de table transportables ), mais ceux-ci nécessitent un certain effort et, pour une base de données suffisamment petite, il sera beaucoup plus facile de transférer des données à l'aide
mysqldump
.la source
Réponse wiki générée à partir des commentaires de questions par akuzminsky
Si vous voyez des
*.ibd
fichiers, alorsinnodb_file_per_table
c'est leON
cas, sinon toutes les tables seraient dedansibdata1
.S'il indique qu'une table n'existe pas, alors la table est manquante dans le dictionnaire InnoDB. Essayez de vider toutes les tables dans des vidages SQL séparés (une table - un fichier). Ces tables que vous ne pouvez pas vider, vous pouvez les restaurer avec TwinDB recovery toolkit .
Il n'y a pas encore de paquets binaires. Vous devez obtenir le code source de GitHub et le compiler. Voir les instructions dans le dictionnaire Recover InnoDB . C'est assez simple:
et alors
la source