Question

Je dois restaurer une base de données abandonnée par inadvertance dans MySQL 5.0. Après vérification des fichiers de sauvegarde, il me semble que seuls les fichiers .FRM contiennent les données de la base de données.

Quelqu'un peut-il indiquer si c'est tout ce dont j'ai besoin pour effectuer une restauration / une importation de base de données à partir de la sauvegarde, ou existe-t-il d'autres fichiers que je devrais avoir à portée de la main pour le faire?

Était-ce utile?

La solution

Les fichiers

.frm ne sont pas les fichiers de données, ils stockent simplement les " informations du dictionnaire de données " (voir Manuel de MySQL ). InnoDB stocke ses données dans des fichiers ib_logfile *. C'est ce dont vous avez besoin pour faire une sauvegarde / restauration. Pour plus de détails, consultez ici .

Autres conseils

Restauration de innodb: (en supposant que votre dossier de données est C: \ ProgramData \ MySQL \ MySQL Server 5.5 \ data)

  1. Copiez les dossiers des bases de données (nommées d'après le nom de la base de données) que vous souhaitez restaurer sur C: \ ProgramData \ MySQL \ Serveur MySQL 5.5 \ data
  2. Copiez les 3 fichiers ibdata dans le dossier de données ex. (C: \ ProgramData \ MySQL \ MySQL Server 5.5 \ data)

    _ib_logfile0
    _ib_logfile1
    _ibdata1
    
  3. Obtenir la taille de _ib_logfile0 en Mo (elle devrait être identique à _ib_logfile1) par fichier. Cliquez avec le bouton droit de la souris sur - > Propriétés

  4. Modifiez le fichier de configuration mysql (mysql \ bin \ my.ini) pour que innodb_log_file_size = 343M soit exactement la taille du fichier ibdata

  5. Exécuter

      

    mysqld --defaults-file = mysql \ bin \ my.ini --standalone --console   --innodb_force_recovery = 6

  6. Maintenant, vos données devraient être de nouveau dans votre base de données. Exportez-les à l'aide de phpmysql ou de tout autre outil

Oh mon… tu as un problème. Arrêtez la base de données. Sauvegardez le fichier innodb. Priez que vous ne fassiez rien après avoir abandonné la base de données.

Les gars de Percona (y compris les auteurs de MySQL Performance Blog) devraient pouvoir vous aider: Assistance d'urgence Percona .

Si vous vous aventurez par vous-même, prenez ceci avec vous: boîte à outils de récupération de données pour Innodb .

La logistique de celui-ci? Vous devez lire chaque page (le bloc de la page du terme de l'ordinateur ... 16k dans le cas d'Innodb) et reconstruire vos données de cette façon. C’est un travail de très bas niveau (ouvrez votre éditeur hexadécimal et commencez à compter les octets si la boîte à outils ne le fait pas pour vous), et si vous n’êtes pas un programmeur expérimenté, vous allez avoir mal .

La solution détaillée que vous pouvez trouver ici:

http://www.unilogica.com/mysql-innodb-recovery/ (Article en portugais)

Outre le drapeau de innodb_force_recovery , j'ai trouvé une autre solution: innodb_file_per_table , qui divise les tables InnoDB dans chaque fichier, comme les tables MyISAM.

Lors d'une reprise après incident, vous pouvez perdre moins de données que dans un seul fichier ibdata1 .

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