Question

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 tables supplémentaires.

J'utilise habituellement mysqldump ou un outil similaire pour tout classer dans un fichier SQL. Quel est le moyen de gérer ces types de fichiers?

Était-ce utile?

La solution

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

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

Vous devez le faire lorsque le serveur n'est pas en cours d'exécution.

Autres conseils

D'après la réponse de @Vicent, j'ai déjà restauré la base de données MySQL comme suit:

Étape 1. Arrêtez le 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). Conservez le même nom de la base de données et le même nom de la base de données en mode mysql.

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

Étape 3: changez votre propre mode et changez 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: copiez 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 que vous devez changer et changer la 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): la configuration de mon site permet de stocker les fichiers dans un emplacement spécifique, puis de les copier exactement à l'emplacement correspondant.

Étape 7: démarrez votre serveur Mysql. Tout revient et en profite.

C'est ça.

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

J'ai le même problème mais la base de données n'a pas été récupérée avec succès en fonction des 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 repasse sous Win7 OS pour l’environnement de développement.

* NOTE J'ai un serveur de base de données existant sous Win7 et je n'ai besoin que de peu de fichiers de base de données pour récupérer des fichiers récupérés. Pour récupérer les fichiers de base de données à partir du système d’exploitation Ubuntu, j’ai besoin de mettre à jour le serveur de base de données mysql installé dans la même version que le système d’exploitation Ubuntu dans mon système d’exploitation win7 pour tout récupérer dans cet ancien serveur de base de données.

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

  2. Arrêtez le serveur mysql

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

  4. copiez le fichier ibdata1 situé dans le dossier linux mysql installé et collez-le dans (C: \ ProgramData \ MySQL \ MySQL Server 5.5 \ data). Juste au-dessus redressez l'existant ou effectuez 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 sur mon serveur mysql utilisé il suffit d'exporter la base de données récupérée et de l'importer avec mon mysql existant serveur.

J'espère que cela vous aidera car je n'ai pas trouvé de solution à mon problème.

Si vous restaurez le dossier, n'oubliez pas de chowner les fichiers dans mysql: mysql

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

sinon vous obtiendrez des erreurs en essayant de supprimer une base de données ou d'en ajouter de nouvelles. colonne etc ..

et redémarrez MySQL

service mysql restart

Avec MySql 5.1 (Win7). Pour recréer des 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 lancé le service MySql et tout fonctionne correctement.

Oui c'est ça! Ajoutez-les simplement à votre dossier de base de données (selon le système d'exploitation) et exécutez une commande telle que & "Autorisations de correction MySQL &"; Cela re-stocké la base de données. Vérifiez également que les autorisations appropriées sont également définies pour les fichiers.

Une fois, j'ai copié ces fichiers dans le dossier de stockage de la base de données mysql qui fonctionnait, démarré la base de données et l’attendu & "; réparer; &"; les fichiers, puis les extrait avec mysqldump.

Dans mon cas, il suffisait de supprimer le fichier tc.log dans / var / lib / mysql pour redémarrer mariadb / mysql.

Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top