154 votes

Restauration d'une base de données MySQL à partir de fichiers physiques

Est-il possible de restaurer une base de données MySQL à partir des fichiers physiques de la base de données. J'ai un répertoire qui contient les types de fichiers suivants :

client.frm
client.MYD
client.MYI

mais pour environ 20 tables de plus.

J'utilise habituellement mysqldump ou un outil similaire pour obtenir tout dans un fichier SQL. Quelle est la façon de traiter ces types de fichiers ?

0 votes

J'ai le même problème : plusieurs fichiers avec les extensions FRM, MYD et MYI. J'ai également des fichiers ib_logfile0, ib_logfile1 et ibdata1. Je ne peux pas accéder à un serveur en cours d'exécution ou créer un dump. J'ai essayé de lancer un nouveau serveur MySQL et d'utiliser les fichiers, mais je n'ai pas réussi... Quelqu'un a-t-il un mode d'emploi clair ?

142voto

Vincent Points 5027

Une table MySQL MyISAM est la combinaison de trois fichiers :

  • Le fichier FRM est la définition de la table.
  • Le fichier MYD est l'endroit où les données réelles sont stockées.
  • Le fichier MYI est l'endroit où sont stockés les index créés sur la table.

Vous devriez pouvoir les restaurer en les copiant dans le dossier de votre base de données (sous Linux, l'emplacement par défaut est le suivant /var/lib/mysql/ )

Vous devez le faire pendant que le serveur ne fonctionne pas.

67 votes

Ceci est vrai uniquement pour les tables MyISAM. InnoDB stocke ses tables et index dans un seul tablespace *, qui par défaut est constitué des 3 fichiers ibdata1, ib_logfile0, et ib_logfile1. pour restaurer une base de données, vous aurez également besoin de ces fichiers. * les tablespaces par table sont possibles, mais pas par défaut

23 votes

Il dit avoir des fichiers .frm, .myi et .myd. J'ai alors supposé qu'il s'agissait de tables MyISAM.

0 votes

@ax est-il possible d'obtenir des données d'InnoDB sans l'ibdata ? J'ai une sauvegarde vieille de plusieurs mois, et seulement les fichiers ib_logfile* et .frm actuels.

10voto

Joel Davey Points 38

Si vous restaurez le dossier, n'oubliez pas de donner le nom de domaine mysql:mysql aux fichiers.

chown -R mysql:mysql /var/lib/mysql-data

sinon vous obtiendrez des erreurs lorsque vous essayez de déposer une base de données ou d'ajouter une nouvelle colonne, etc.

et redémarrez MySQL

service mysql restart

2 votes

Ce n'est pas vraiment une réponse à la question mais c'était très utile.

0 votes

En fait, vous ne devez pas tout donner en chown à mysql, le dossier de la base de données mysql doit conserver le groupe Root.

2voto

Avec MySql 5.1 (Win7). Pour recréer les bases de données (InnoDbs), j'ai remplacé tout le contenu des répertoires suivants (paramètres my.ini) :

datadir="C:/ProgramData/MySQL/MySQL Server 5.1/Data/"
innodb_data_home_dir="C:/MySQL Datafiles/"

Après cela, j'ai démarré le service MySql et tout fonctionne bien.

1voto

Filip Ekberg Points 22189

Oui, c'est possible ! Il suffit de les ajouter à votre dossier de base de données (selon le système d'exploitation) et d'exécuter une commande telle que "MySQL Fix Permissions". Cette commande permet de réenregistrer la base de données. Vérifiez également que les permissions correctes sont définies sur les fichiers.

0 votes

Je l'ai fait, mais je ne reconnais pas les tables. Comme je l'ai dit dans mon commentaire sur la réponse précédente.

0voto

Spikolynn Points 1757

Une fois, j'ai copié ces fichiers dans le dossier de stockage d'une base de données mysql qui fonctionnait, j'ai démarré la base de données et j'ai attendu qu'elle "répare" les fichiers, puis je les ai extraits avec mysqldump.

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X