web-dev-qa-db-fra.com

Sauvegarde MySQL de ibdata1, ib_logfile1, ib_logfile00

J'ai accidentellement supprimé mon mot presse MySQL DB. Vous trouverez ci-dessous la liste des fichiers journaux que je vois dans mon annuaire où j'espérise que je peux récupérer certaines de mes données. binary files

En fait, j'ai convertit le premier fichier (mysql-bin.000001) en SQL et a vu les instructions créées pour wordpress Tables. Cela m'a donné d'espoir du fait que je pourrais pouvoir récupérer toutes mes données. . Cependant, j'ai dirigé toutes les commandes MySQL dans les fichiers journaux binaires ci-dessous MySQL et ne pourraient élever qu'une très ancienne version du wordpress Blog.

Puis-je récupérer mes données à l'aide des fichiers ibdata1, ib_logfile1, ib_logfile0?

1
noi.m

je réaffirme les instructions SQL dans les fichiers journaux binaires sur la même instance de base de données (qui m'a donné une ancienne version de My wordpress Tables)

Aie. Combien d'espoir qu'il y avait pour la récupération dépendait de savoir si vos tables utilisaient le MyISAM ou le moteur de stockage InnoDB. Si Myisam, alors ... "Aucun," et si InnoDB, alors "certains".

Myisam, le moteur ancien, stocke ses données dans des fichiers nommés après la table, avec une extension MYD _, tandis que InnoDB stocke ses données soit dans les fichiers nommés après la table, avec une extension ibd ou dans le ibdata1 Fichier, qui abrite l'espace de table du système, en fonction du réglage de innodb_file_per_table Dans la configuration. La définition de chaque table (noms de colonne, types de données, définitions d'index), pour l'un ou l'autre moteur, est stockée dans des fichiers nommés après les tables, avec une extension frm.

La grande taille de votre ibdata1 Dossier a suggéré que vous n'aviez peut-être pas eu innodb_file_per_table Activé et que certaines variations des étapes suivantes auraient pu fonctionner, si vous utilisiez effectivement innoDB sans Innodb_File_per_Table:

  1. Faites une copie de sauvegarde de tout.
  2. Configurez un serveur MySQL séparé et séparé.
  3. Appliquez les binlogs que vous avez sur le nouveau serveur, dans l'intérêt de recréer les fichiers .frm pour les définitions de la table, puis modifiant manuellement toutes les tables pour apporter des modifications que vous rappelez qui ne sont pas comptabilisées dans les binlogs plus âgés.
  4. Arrêtez le nouveau serveur.
  5. Copier des annuaires dans votre répertoire de données et leurs fichiers .frm vers les endroits appropriés sur l'ancien serveur.
  6. Démarrez l'ancien serveur, en utilisant innodb_force_recovery Si nécessaire, pour voir à quel point InnoDB réussirait à jumeler les fichiers .frm avec les données de la table dans ibdata1, qu'elle devrait, si les définitions de la table étaient les mêmes.

Puisque vous avez déjà créé de nouvelles tables, probablement avec les mêmes noms, sur le serveur existant, tout espoir de réussir est susceptible d'être éliminé, ou de manière significative au point qu'il est peu probable que cela vaut la peine d'être essayé, car votre Meilleur espoir si vous essayiez que ce serait de voir ce que vous voyez maintenant - des données anciennes que vous avez insérées dans des tables que vous avez créées à partir des journaux binaires.

Alors, quel est le plan b? Pour emprunter une phrase appropriée de la source, je cite:

"C'est un processus fastidieux qui nécessite une compréhension du format de stockage de données interne de InnoDB, de la programmation C et de nombreuses intuitions et d'expérience."

http://www.percona.com/docs/wiki/innodb-Data-Recovery-Tool:Start

Le outil de récupération de données PERCONA INNODB La seule approche significative que je puisse penser qui pourrait vous obtenir où vous devez être ... ou tout outil comparable, en supposant qu'il existe des outils comparables. Je ne vois aucun chemin simple ... Vous allez devoir aller "niveau bas" si vous voulez sauver vos données.

Vous avez supprimé des fichiers importants et dans un effort de récupération du premier problème, vous avez modifié le fichier restant qui pourrait ont été récupérables, et je Je ne suis pas totalement sûr à quel point InnoDB aura géré ces tables abandonnées dans ses structures internes. Les données peuvent toujours se cacher.

Il y a une raison d'optimisme, cependant, et c'est dans l'utilitaire tility Strings . Le lien que j'ai fourni n'est pas à l'utilitaire authentique GNU "Strings", c'est la semi-équivalente analogue de Microsoft, mais le point de cet outil est d'afficher des chaînes intégrées dans des fichiers que l'algorithme interne pense que des cordes humaines-significatives.

Il y a deux utilisations pour cela: une fois, vous pouvez essayer d'utiliser votre fichier ibdata1 (il ne se lit que, ne doit pas modifier) ​​pour voir ce que vos yeux vous disent de ce que vous trouvez là-bas. Il offre essentiellement une fenêtre de force brute dans la teneur brute vivant dans le fichier, et si vous trouvez du texte là-bas qui est plus récent que tout ce que vous mettez en utilisant les fichiers Binlog, c'est un bon signe que le temps passé avec les outils de Percona pourrait être en vaut la peine parce que les anciennes données sont en réalité dans le fichier. Si vous ne voyez rien du tout que vous reconnaissez, il peut y avoir un problème avec la méthode (bien que j'ai vérifié cela fonctionne sur Linux avec de véritable GNU "Strings"), mais si vous voyez vieux Contenu et non neuf, le nouveau contenu est probablement parti.

Bien entendu, l'autre utilisation potentielle de "chaînes" si vous voyez le contenu et s'il s'agit principalement de contenu qui est la chose la plus précieuse que vous avez perdue - pas la configuration et la personnalisation - alors vous pouvez simplement utiliser des "chaînes" pour extraire La teneur brute, la redirige dans un autre fichier et procédez à un nouveau wordpress Installation où vous pourriez utiliser ce texte brut pour recréer les choses.

Si les données sont "qui" importantes, Percona et SkySQL (je ne suis pas affiliée à l'une ni l'autre des entreprises, mais celles-ci semblent être les deux grands acteurs de l'espace MySQL) et d'autres entreprises offrent des services de récupération rémunération.

1
Michael - sqlbot