Comment récupérer la base de données MySQL.myd,.myi,.les fichiers frm

comment restaurer une de mes bases de données MySQL à partir .myd , .myi , .frm des dossiers?

163
demandé sur Druzion 2009-05-18 22:43:05

11 réponses

si ce sont des tables MyISAM, puis plopping le .FRM,.MYD, and .Les fichiers MYI dans un répertoire de base de données (par exemple, /var/lib/mysql/dbname ) rendront cette table disponible. Il n'est pas nécessaire que ce soit la même base de données que celle d'où ils viennent, le même serveur, la même version MySQL, ou la même architecture. Vous pouvez également avoir besoin de changer la propriété du dossier (par exemple, chown -R mysql:mysql /var/lib/mysql/dbname )

noter que les permissions ( GRANT , etc.) font partie de la base de données mysql . Ainsi ils ne seront pas restauré avec les tables; vous pouvez avoir besoin d'exécuter les instructions GRANT appropriées pour créer des utilisateurs, donner accès, etc. (La restauration de la base de données mysql est possible, mais vous devez être prudent avec les versions MySQL et tout fonctionnement nécessaire de l'utilitaire mysql_upgrade .)

en Fait, vous avez probablement juste besoin de la .FRM (structure de la table) et .MYD (tableau de données), mais vous aurez à réparer la table à reconstruire le .MYI (index).

la seule contrainte est-ce que si vous êtes déclassement, vous feriez mieux de vérifier les notes de version (et probablement exécuter la table de réparation). Les nouvelles versions de MySQL ajoutent des fonctionnalités, bien sûr.

[bien que cela doive être évident, si vous mélangez et associez des tables, L'intégrité des relations entre ces tables est votre problème; MySQL ne s'en souciera pas, mais votre application et vos utilisateurs peuvent. De plus, cette méthode ne fonctionne pas du tout pour les tables InnoDB. Seulement MyISAM, mais compte tenu des fichiers que vous avez, vous avez MyISAM]

158
répondu derobert 2015-04-22 16:11:41

notez que si vous voulez reconstruire le fichier MYI, alors l'utilisation correcte de la table de réparation est:

table de réparation sometable USE_FRM;

sinon vous obtiendrez probablement juste une autre erreur.

23
répondu mcardellg 2010-05-21 10:47:08

je viens de découvrir la solution pour cela. J'utilise MySQL 5.1 ou 5.6 sur Windows 7.

  1. Copiez le .frm file and ibdata1 from the old file which was located on "C:\Program Data\MySQL\MSQLServer5.Données: 151980920"
  2. arrêter L'instance du serveur SQL dans L'instance SQL actuelle
  3. Go to the datafolder located at "C:\Program Data\MySQL\MSQLServer5.Données: 151980920"
  4. Coller ibdata1 et le dossier de votre base de données qui contient les .frm le fichier que vous souhaitez récupérer.
  5. Démarrer L'instance MySQL.

Pas besoin pour localiser le .MYI et .MYD fichier pour cette récupération.

21
répondu alnel 2012-10-20 11:38:06

une chose à noter:

The .Le fichier FRM a votre structure de table en lui, et est spécifique à votre version MySQL.

The .Le fichier MYD n'est pas spécifique aux versions, du moins pas aux versions mineures.

The .Le fichier MYI est spécifique, mais peut être laissé de côté et régénéré avec REPAIR TABLE comme le disent les autres réponses.

le but de cette réponse est de vous faire savoir que si vous avez un dump schema de vos tables, ensuite, vous pouvez l'utiliser pour générer la structure de la table, puis remplacez-les .MYD fichiers avec vos sauvegardes, supprimer les fichiers MYI, et de les réparer tous. De cette façon, vous pouvez restaurer vos sauvegardes dans une autre version MySQL, ou déplacer votre base de données sans utiliser mysqldump . J'ai trouvé ça super utile pour déplacer de grandes bases de données.

13
répondu UltimateBrent 2010-04-11 03:58:02

de Simples! Créer un mannequin de base de données (dites abc)

copiez tout ça .myd,.myi, .frm fichiers de mysql\data\abc dans lequel mysql\data\ est l'endroit où .myd,.myi, .frm pour toutes les bases de données sont stockés.

puis allez à phpMyadmin, allez à db abc et vous trouvez votre base de données.

11
répondu Vishal 2012-07-25 17:41:37

je pense .myi vous pouvez réparer de l'intérieur de mysql.

si vous voyez ce type de messages D'erreur de MySQL: La base de données n'a pas pu exécuter la requête (query) 1016: impossible d'ouvrir le fichier: 'sometable.MYI'. (errno: 145)) Erreur Msg: 1034: fichier clé Incorrect pour la table: "sometable". Essayer de le réparer thenb vous avez probablement une table écrasée ou corrompue.

vous pouvez vérifier et réparer la table à partir d'une invite mysql comme ceci:

check table sometable;
+------------------+-------+----------+----------------------------+
| Table | Op | Msg_type | Msg_text | 
+------------------+-------+----------+----------------------------+ 
| yourdb.sometable | check | warning | Table is marked as crashed | 
| yourdb.sometable | check | status | OK | 
+------------------+-------+----------+----------------------------+ 

repair table sometable;
+------------------+--------+----------+----------+ 
| Table | Op | Msg_type | Msg_text | 
+------------------+--------+----------+----------+ 
| yourdb.sometable | repair | status | OK | 
+------------------+--------+----------+----------+

et maintenant votre table devrait être très bien:

check table sometable;
+------------------+-------+----------+----------+ 
| Table | Op | Msg_type | Msg_text |
+------------------+-------+----------+----------+ 
| yourdb.sometable | check | status | OK |
+------------------+-------+----------+----------+
7
répondu Elzo Valugi 2009-11-08 15:50:17

vous pouvez copier les fichiers dans un sous-répertoire correctement nommé répertoire du dossier de données aussi longtemps qu'il est la version exacte de mySQL et vous avez conservé tous les fichiers associés dans ce répertoire. Si vous n'avez pas tous les fichiers, je suis sûr que vous allez avoir des problèmes.

5
répondu cgp 2009-05-18 18:49:15

j'ai trouvé une solution pour convertir les fichiers en un fichier .sql (vous pouvez ensuite importer le fichier .sql sur un serveur et récupérer la base de données), sans avoir besoin d'accéder au répertoire /var , donc vous n'avez pas besoin d'être un administrateur de serveur pour le faire non plus.

il ne nécessite XAMPP ou MAMP installé sur votre ordinateur.

  • après avoir installé XAMPP, naviguez vers le répertoire d'installation (habituellement C:\XAMPP ) et le sous-répertoire mysql\data . Le chemin complet doit être C:\XAMPP\mysql\data
  • à l'intérieur vous verrez les dossiers de toutes les autres bases de données que vous avez créées. Copiez et collez le dossier rempli de fichiers .myd , .myi et .frm . Le chemin vers ce dossier devrait être

    C:\XAMPP\mysql\data\foldername\.mydfiles

  • puis visitez localhost/phpmyadmin dans un navigateur. Sélectionner la base de données vous venez de coller dans le dossier mysql\data , et cliquez sur Exporter dans la barre de navigation. Choisit l'export it comme fichier .sql . Il apparaîtra alors demandant où le Enregistrer le fichier

Et c'est tout! Vous devez maintenant avoir un fichier .sql contenant la base de données qui était à l'origine des fichiers .myd , .myi et .frm . Vous pouvez ensuite l'importer sur un autre serveur via phpMyAdmin en créant une nouvelle base de données et en appuyant sur "Importer" dans la barre de navigation, puis en suivant les étapes pour l'importer

4
répondu Druzion 2016-01-28 09:43:43

http://forums.devshed.com/mysql-help-4/mysql-installation-problems-197509.html

il est dit de renommer les fichiers ib_*. Je l'ai fait et il m'a donné la db.

2
répondu James 2010-08-20 20:51:30

la description ci-dessus n'était pas suffisante pour que les choses fonctionnent pour moi (probablement dense ou paresseux) donc j'ai créé ce script une fois que j'ai trouvé la réponse pour m'aider dans le futur. Espérons que cela aide les autres

vim fixperms.sh 

#!/bin/sh
for D in `find . -type d`
do
        echo $D;
        chown -R mysql:mysql $D;
        chmod -R 660 $D;
        chown mysql:mysql $D;
        chmod 700 $D;
done
echo Dont forget to restart mysql: /etc/init.d/mysqld restart;
2
répondu dny238 2015-01-27 03:51:28

pour ceux qui ont Windows XP et MySQL server 5.5 installé - l'emplacement pour la base de données est C:\Documents et paramètres\All Users\Application Data\MySQL\MySQL Server 5.5\data, sauf si vous avez changé l'emplacement dans L'interface graphique D'installation MySql.

-2
répondu Demon 2012-06-01 03:54:25