J'ai la délicate tâche de restaurer des tables innodb utilisées par un
serveur MySQL qui n'existe plus et donc seuls sont restés les répertoires
et fichiers contenus sous /var/lib/mysql, c'est-à-dire des répertoires ne
contenant pas les données mais seulement la structure des tables et les
options de la base (type bla.frm et db.opt). Toutes les données utiles sont
dans ibdata1, ib_logfile0 et ib_logfile1. Il y a là-dedans plusieurs tables
mêlées.
Je n'ai bien sûr aucun dump des tables.
Malgré mes recherches, je ne parviens pas à trouver comment je peux recréer
les tables sur un autre serveur MySQL : recréer leur structure n'est pas
compliqué, mais je ne sais pas comment importer les données d'ibdata1,
ib_logfile0 et ib_logfile1 dans les fichiers homonymes de ce second
serveur.
Il me faudrait fusionner ces données, mais je ne trouve aucun moyen de le
faire à partir des fichiers eux-mêmes.
Cette action est irreversible, confirmez la suppression du commentaire ?
Signaler le commentaire
Veuillez sélectionner un problème
Nudité
Violence
Harcèlement
Fraude
Vente illégale
Discours haineux
Terrorisme
Autre
Vincent Ramos
Vincent Ramos wrote:
Il me faudrait fusionner ces données, mais je ne trouve aucun moyen de le faire à partir des fichiers eux-mêmes.
Si j'avais lu cette page <http://dev.mysql.com/doc/refman/5.0/en/innodb-backup.html> correctement plutôt que de la survoler, je n'aurais sans doute pas eu besoin de publier ma question.
Vincent Ramos wrote:
Il me faudrait fusionner ces données, mais je ne trouve aucun moyen de le
faire à partir des fichiers eux-mêmes.
Si j'avais lu cette page
<http://dev.mysql.com/doc/refman/5.0/en/innodb-backup.html> correctement
plutôt que de la survoler, je n'aurais sans doute pas eu besoin de publier
ma question.
Il me faudrait fusionner ces données, mais je ne trouve aucun moyen de le faire à partir des fichiers eux-mêmes.
Si j'avais lu cette page <http://dev.mysql.com/doc/refman/5.0/en/innodb-backup.html> correctement plutôt que de la survoler, je n'aurais sans doute pas eu besoin de publier ma question.
Vincent Ramos
Vincent Ramos wrote:
Si j'avais lu cette page <http://dev.mysql.com/doc/refman/5.0/en/innodb-backup.html> correctement plutôt que de la survoler, je n'aurais sans doute pas eu besoin de publier ma question.
En fait, si car la doc n'est pas très claire sur les possibilités de restauration si l'on n'a pas les logs binaires (ce qui était aussi mon cas).
Voici comment j'ai fait, si cela peut en aider d'autres : -- utiliser un serveur MySQL propre et sans données importantes en InnoDB qui servira de tampon ; -- arrêter mysqld ; -- sauvegarder ibdata1 et les fichiers ib_logfile (en les renommant, par exemple) ; -- placer dans le répertoire de mysql (/usr/lib/mysql, par exemple, selon la distribution) les répertoires contenant les fichiers *.frm et *.opt des tables à restaurer ; -- placer dans le même répertoire les fichiers ibdata1 et ib_logfile contenant les anciennes tables ; -- vérifier que les différents fichiers et répertoires ont les bonnes permissions ; -- lancer mysqld avec l'option --innodb_force_recovery=6 ; -- les données sont récupérées. On peut utiliser mysqldump pour générer des dump qu'on pourra réinjecter dans un autre serveur MySQL sans passer par toutes ces étapes.
Voilà.
Vincent Ramos wrote:
Si j'avais lu cette page
<http://dev.mysql.com/doc/refman/5.0/en/innodb-backup.html> correctement
plutôt que de la survoler, je n'aurais sans doute pas eu besoin de publier
ma question.
En fait, si car la doc n'est pas très claire sur les possibilités de
restauration si l'on n'a pas les logs binaires (ce qui était aussi mon
cas).
Voici comment j'ai fait, si cela peut en aider d'autres :
-- utiliser un serveur MySQL propre et sans données importantes en InnoDB
qui servira de tampon ;
-- arrêter mysqld ;
-- sauvegarder ibdata1 et les fichiers ib_logfile (en les renommant, par
exemple) ;
-- placer dans le répertoire de mysql (/usr/lib/mysql, par exemple, selon la
distribution) les répertoires contenant les fichiers *.frm et *.opt des
tables à restaurer ;
-- placer dans le même répertoire les fichiers ibdata1 et ib_logfile
contenant les anciennes tables ;
-- vérifier que les différents fichiers et répertoires ont les bonnes
permissions ;
-- lancer mysqld avec l'option --innodb_force_recovery=6 ;
-- les données sont récupérées. On peut utiliser mysqldump pour générer des
dump qu'on pourra réinjecter dans un autre serveur MySQL sans passer par
toutes ces étapes.
Si j'avais lu cette page <http://dev.mysql.com/doc/refman/5.0/en/innodb-backup.html> correctement plutôt que de la survoler, je n'aurais sans doute pas eu besoin de publier ma question.
En fait, si car la doc n'est pas très claire sur les possibilités de restauration si l'on n'a pas les logs binaires (ce qui était aussi mon cas).
Voici comment j'ai fait, si cela peut en aider d'autres : -- utiliser un serveur MySQL propre et sans données importantes en InnoDB qui servira de tampon ; -- arrêter mysqld ; -- sauvegarder ibdata1 et les fichiers ib_logfile (en les renommant, par exemple) ; -- placer dans le répertoire de mysql (/usr/lib/mysql, par exemple, selon la distribution) les répertoires contenant les fichiers *.frm et *.opt des tables à restaurer ; -- placer dans le même répertoire les fichiers ibdata1 et ib_logfile contenant les anciennes tables ; -- vérifier que les différents fichiers et répertoires ont les bonnes permissions ; -- lancer mysqld avec l'option --innodb_force_recovery=6 ; -- les données sont récupérées. On peut utiliser mysqldump pour générer des dump qu'on pourra réinjecter dans un autre serveur MySQL sans passer par toutes ces étapes.
Voilà.
Gilles RONSIN
Vincent Ramos , le mer. 18 juin 2008 18:39:05, écrivait ceci:
Salut,
Merci pour ce retour, que j'archive. Ca servira sûrement un jour.
;-)
Vincent Ramos <siva_no_spam@kailaasa.fr.invalid>, le mer. 18 juin
2008 18:39:05, écrivait ceci:
Salut,
Merci pour ce retour, que j'archive. Ca servira sûrement un jour.