Mon répertoire WAMP est accidentellement supprimé par un autre utilisateur. Seul le dossier de données de MySQL est disponible. Et, en ce sens, seuls les dossiers de base de données (dossiers dans "\ bin\mysql\mysql5.6.12\data \" avec le nom des bases de données) sont disponibles. Tous les fichiers y compris "ibdata1" à la racine de "\ bin\mysql\mysql5.6.12\data \" sont également supprimés.
Les dossiers de base de données contiennent uniquement des fichiers avec les extensions ci-dessous.
* .frm, * .ibd
et le fichier "db.opt".
Comment récupérer les bases de données?
J'ai déjà essayé de récupérer bdata1. Mais, incapable de le récupérer. Et, certaines bases de données contiennent également MYISAM.
Pour une table MyISAM mydb.mytable, vous devez avoir trois fichiers
\bin\mysql\mysql5.6.12\data\mydb\mytable.frm
\bin\mysql\mysql5.6.12\data\mydb\mytable.MYD
\bin\mysql\mysql5.6.12\data\mydb\mytable.MYI
Ils doivent déjà être accessibles sous forme de tableau, car chaque fichier contient les données, les métadonnées et les informations d'index nécessaires. Collectivement, ils forment la table. Il n'y a aucun mécanisme de moteur de stockage externe auquel accéder.
Jetez un œil à cette représentation picturale d'InnoDB
La seule chose qui attache ibdata1 au .ibd
files est le dictionnaire de données.
Votre mission, si vous décidez de l'accepter, est de créer chaque table et de l'échanger dans le .ibd
Avant de faire quoi que ce soit, faites une copie complète de "\ bin\mysql\mysql5.6.12\data" vers un autre
Voici un exemple
Supposons que vous ayez une base de données mydb
avec la table mytable
. Ça signifie
\bin\mysql\mysql5.6.12\data\mydb
mytable.frm
mytable.ibd
Vous avez besoin du .frm
. Si vous regardez mon article Comment extraire le schéma de table à partir du fichier .frm? , vous pouvez télécharger un utilitaire MySQL qui peut générer le SQL nécessaire pour créer la table.
Vous devez maintenant faire ce qui suit
mytable.ibd
à \bin\mysql\mysql5.6.12\data
ALTER TABLE mydb.mytable DISCARD TABLESPACE;
(Cela supprimera \bin\mysql\mysql5.6.12\data\mydb\mytable.ibd
)\bin\mysql\mysql5.6.12\data\mytable.ibd
en \bin\mysql\mysql5.6.12\data\mydb
ALTER TABLE mydb.mytable IMPORT TABLESPACE;
(Cela enregistrera \bin\mysql\mysql5.6.12\data\mydb\mytable.ibd
dans le dictionnaire de données)Après cela, le tableau mydb.mytable
devrait être entièrement accessible. Vous pouvez tester cette accessibilité en exécutant simplement:
SELECT * FROM mydb.mytable LIMIT 10;
Essaie !!!