Restauration de la base de données MySQL à partir de fichiers physiques

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

Client.frm
client.MYD
client.MYI

Mais pour environ 20 autres tables.

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

107
demandé sur Vincent 2009-01-27 22:04:06

7 réponses

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ù les index créés sur la table sont stockés.

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

Vous devriez le faire pendant que le serveur n'est pas en cours d'exécution.

111
répondu Vincent 2015-07-25 20:24:03

À partir de la réponse de @ Vicent, je restaure déjà la base de données MySQL comme ci-dessous:

Étape 1. Arrêt du serveur Mysql

Étape 2. Copiez la base de données dans votre dossier de base de données (sous linux, l'emplacement par défaut est / var / lib / mysql). Gardez le même nom de la base de données et le même nom de base de données en mode mysql.

sudo cp -rf   /mnt/ubuntu_426/var/lib/mysql/database1 /var/lib/mysql/

Étape 3: Changer propre et changer de mode le dossier:

sudo chown -R mysql:mysql /var/lib/mysql/database1
sudo chmod -R 660 /var/lib/mysql/database1
sudo chown  mysql:mysql /var/lib/mysql/database1 
sudo chmod 700 /var/lib/mysql/database1

Étape 4: Copiez ibdata1 dans votre dossier de base de données

sudo cp /mnt/ubuntu_426/var/lib/mysql/ibdata1 /var/lib/mysql/

sudo chown mysql:mysql /var/lib/mysql/ibdata1

Étape 5: copier les fichiers ib_logfile0 et ib_logfile1 dans votre dossier de base de données.

sudo cp /mnt/ubuntu_426/var/lib/mysql/ib_logfile0 /var/lib/mysql/

sudo cp /mnt/ubuntu_426/var/lib/mysql/ib_logfile1 /var/lib/mysql/

Rappelez-vous le changement propre et le changement racine de ces fichiers:

sudo chown -R mysql:mysql /var/lib/mysql/ib_logfile0

sudo chown -R mysql:mysql /var/lib/mysql/ib_logfile1

Ou

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

Étape 6 (facultatif): mon site a la configuration pour stocker des fichiers dans un emplacement spécifique, puis je les copie à l'emplacement correspondant, exactement.

Étape 7: démarrez votre serveur Mysql. Tout revenir et en profiter.

Voilà.

Voir plus d'informations à: https://biolinh.wordpress.com/2017/04/01/restoring-mysql-database-from-physical-files-debianubuntu/

14
répondu biolinh 2018-04-19 08:43:47

J'ai le MÊME PROBLÈME MAIS n'a pas été récupéré avec succès la base de données basée sur les instructions ci-dessus.

Je n'ai récupéré que les dossiers de base de données mysql de mon système D'exploitation Ubuntu. Mon problème est de savoir comment récupérer ma base de données avec ces dossiers de données MySQL illisibles. Maintenant, je reviens à win7 OS pour l'environnement de développement.

*Remarque J'ai un serveur de base de données existant en cours d'exécution dans win7 et je n'ai besoin que de quelques fichiers de base de données à récupérer à partir des fichiers récupérés. Pour récupérer avec succès le fichiers de base de données D'Ubuntu OS j'ai besoin de nouveau serveur de base de données mysql installé la même version d'Ubuntu OS dans mon système d'exploitation win7 pour récupérer tout dans cet ancien serveur de base de données.

  1. Faire un autre nouveau serveur de base de données mysql même version de la les fichiers récupérés.

  2. Arrêter le serveur mysql

  3. Copiez le dossier récupéré et collez-le dans le (C:\ProgramData\MySQL\MySQL serveur 5.5 \ data) La base de données mysql est stocker.

  4. Copier le fichier ibdata1 situé dans linux mysql dossier installé et collez le dedans (C:\ProgramData\MySQL\MySQL serveur 5.5 \ données). Un peu plus de droit l'existant ou faire une sauvegarde avant de remplacer.

  5. Démarrez le serveur mysql et vérifiez si vous avez récupéré avec succès les fichiers de base de données.

  6. Pour utiliser la base de données récupérée dans mon serveur mysql actuellement utilisé il suffit d'exporter la base de données récupérée et l'importer mon mysql existante serveur.

J'espère que cela aidera parce que je ne l'ai pas fait trouver une solution à mon problème.

7
répondu Ivan Igniter 2015-02-27 10:08:17

Si vous restaurez le dossier n'oubliez pas de chown les fichiers de mysql:mysql

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

sinon vous aurez des erreurs lorsque vous essayez de supprimer une base de données ou ajouter une nouvelle colonne, etc..

Et redémarrez MySQL

service mysql restart
5
répondu Joel Davey 2017-01-24 23:00:23

Avec MySql 5.1 (Win7). Pour recréer DBs (InnoDbs) j'ai remplacé tout le contenu des dirs suivants (mon.ini params):

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

Après cela, j'ai commencé le Service MySql et tout fonctionne bien.

2
répondu sergey.olifirenko 2012-10-29 03:37:20

Oui! Ajoutez-les simplement à votre dossier de base de données (en fonction du système d'exploitation ) et exécutez une commande telle que "MySQL Fix Permissions". Cela a ré-stocké la base de données. Voir aussi que les autorisations correctes sont définies sur les fichiers aswell.

1
répondu Filip Ekberg 2009-01-27 19:05:58

J'ai une fois copié ces fichiers dans le dossier de stockage de base de données pour 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.

0
répondu Spikolynn 2009-01-27 19:07:52