J'essaie de restaurer la base de données dans PMA mais je ne peux accéder qu'aux fichiers frm et ibd - pas au fichier ib_log dont je comprends que vous avez besoin.
Je sais que je ne pourrai peut-être pas récupérer les données de la base de données, mais est-il possible de récupérer la structure de la table à partir du fichier frm ?
InnoDB nécessite le fichier ib_log pour la récupération des données, mais il nécessite également le fichier ibdata1, qui contient le dictionnaire de données et parfois les données en attente pour la table.
Le dictionnaire de données est un système répétitif qui enregistre la structure d'une table et fait correspondre l'ID de la table au fichier physique .ibd contenant les données de la table.
Vous ne pouvez pas déplacer un fichier .ibd sans un dictionnaire de données InnoDB, et le dictionnaire de données doit correspondre à l'ID de table trouvé dans le fichier .ibd. Vous pouvezrattacher le fichier .ibd et récupérer les données, mais le processus n'est pas pour les âmes sensibles. Veuillez vous référer à http://www.chriscalender.com/recover table innodb à partir du fichier ibd uniquement/
Vous pouvez restaurer les structures avec quelques astuces de fichiers en utilisant des fichiers .frm, mais vous ne pouvez pas les créer en tant que tables InnoDB en premier lieu. Voici un blog qui explique comment restaurer des fichiers .frm vers des tables MyISAM :http://www.percona.com/blog/2008/12/17/recovering-create-table-statement-from-frm-file/" percona.com/blog/2008/12/17/recovering-create- instruction-de-table-du-fichier-frm/
Vous ne pourrez pas utiliser PMA pour cela. Vous avez besoin d'un accès superutilisateur au répertoire de données sur le serveur.J'ai restauré la table à partir de
.frm
和.idb
fichiers uniquement.Récupérez la requête SQL utilisée pour créer la table
Si vous connaissez déjà le schéma du tableau, vous pouvez sauter cette étape.
Tout d'abord, installez l'Utilitaire MySQL. Vous pouvez ensuite utiliser la commande
mysqlfrm
dans l'invite de commande (cmd).Deuxièmement, utilisez la commande
mysqlfrm
命令从.frm
pour obtenir la requête SQL à partir du fichier.frm
:Vous pouvez ensuite obtenir la requête SQL pour créer la même table structurée. Comme ça :
Créer une table
Créez la table à l'aide de la requête SQL ci-dessus.
Si d'anciennes données existent toujours, vous devrez peut-être d'abord supprimer la base de données et les tables correspondantes. Assurez-vous d'avoir une sauvegarde de vos fichiers de données.
Récupérer des données
Exécutez cette requête pour supprimer les nouvelles données de la table :
Cela supprimera le nouveau fichier
.frm
文件和(新的、空的).idb
文件之间的连接。另外,删除文件夹中的.idb
.Ensuite, placez les anciens
.idb
fichiers dans le nouveau dossier, par exemple :Assurez-vous
.ibd
文件可以被mysql
用户读取,例如通过在文件夹中运行 chown -R mysql:mysql *.ibd.Exécutez cette requête pour importer d'anciennes données :
Cela importera les données du fichier
.idb
et restaurera les données.