Foro de elhacker.net

Programación => Bases de Datos => Mensaje iniciado por: Azielito en 3 Noviembre 2009, 21:20 pm



Título: Como recuperar tablas MySQL teniendo archivos frm ?
Publicado por: Azielito en 3 Noviembre 2009, 21:20 pm
Pues en la carpeta "data" de mysql tengo la carpeta de la base de datos, dentro tengo los archivos FRM y un archivo opt, el problema es que cuando entro com PHPMyAdmin me dice que no existen tablas en la base de datos [ésta si la muestra]

Intente hacer
Código
  1. REPAIR TABLE `tabla1`, `tabla2`, `...`

Y me dice
Cita de: mysql
db.tabla1    repair    error    Table 'db.tabla1' doesn't exist
db.tabla2    repair    error    Table 'db.tabla2' doesn't exist
db. ...    repair    error    Table 'db. ...  ' doesn't exist


Buscando en internet encuentro que hay una herramienta para reparar [http://kopernix.com/?q=myisamchk]... pero con archivos MYI :xD





Alguna [sugerencia|idea] ?

:D


Título: Re: Como recuerar tablas MySQL teniendo archivos frm ?
Publicado por: ^Tifa^ en 4 Noviembre 2009, 03:11 am
Hola.

1 - REPAIR TABLE
2 - Myisamchk
3 -Mysqlcheck

Solo funcionan sobre tablas almacenadas en motores Myisam. Si solo tienes los archivitos *.frm me temo que no hay forma de restaurar ninguna data de ninguna tabla. Los archivos *.frm guardan las definiciones (nombres de tablas y campos) de una tabla sin embargo, la data que compone (o sea los registros, indices, etc) de esas tablas estan repartidas en los archivos logicos de cada motor de almacenamiento, sino tienes estos archivos No puedes restaurar datos de ninguna tablas:

Para Myisam: necesitas ademas los archivos MYI y MYD (el primero de indices y el segundo data)

Para InnoDB: necesitas ademas los archivos ibdata y los ib logs.

La unica forma de recuperar datos (registros) de archivos *.frm es si estamos hablando de Vistas y no de Tablas, pero me temo que haz mencionado Tablas y no Vistas.



Título: Re: Como recuerar tablas MySQL teniendo archivos frm ?
Publicado por: Azielito en 4 Noviembre 2009, 16:51 pm
Pero la estructura si la puedo recuperar? los datos deberian estar en algun otro lado "fisico", el sistema que maneja esas tablas tambien lo tengo, pero queria ahorrar un poco de tiempo al recordar/ver fuente/hacer las tablas nuevamente :')


Título: Re: Como recuerar tablas MySQL teniendo archivos frm ?
Publicado por: ^Tifa^ en 4 Noviembre 2009, 17:34 pm
Ok

No se como llegaste a la condicion de perder los indices y la data  :¬¬   :¬¬  no quiero imaginarme que estes jugando a eliminar a proposito archivos de MySQL con una mala intencion  :¬¬   :¬¬   :¬¬ 

Si tanto te preocupan tus tablas perdidas, sencillamente vete a la carpeta data de MySQL, y elimina la carpeta con todos sus archivos referente a la base de datos de la cual estas teniendo el problema. (SI Borra la carpeta con todo).

Hecho esto, cuando ingreses al motor y hagas un show databases no veras dicha base de datos, bien sal del motor, y en la misma carpeta Data de MySQL crea una carpeta nueva (Con el mismo nombre de la DB eliminada) entra a dicha carpeta y crea manualmente (aunque sean archivos vacios) y bajo el mismito nombre, todos los archivos extension *.frm que tenias mas un extra *.opt 

A esa carpeta especificale que su owner y grupo es el usuario mysql, y nada cuando entres al motor, veras tu base de datos ahi y dentro las tablas.... y posiblemente la data

PD: Si estas esperando que te diga en que archivo fisico el motor guarda esto, no lo hare  :P  no veo buenas intenciones en lo que estas realizando es todo.


Título: Re: Como recuerar tablas MySQL teniendo archivos frm ?
Publicado por: Azielito en 4 Noviembre 2009, 19:48 pm
oka! ahora mismo lo voy a probar ...



Ya esta, aparece la base de datos, el nombre de las tablas, pero no la estructura :xD

Código
  1. SHOW FULL FIELDS FROM `inspectores` ;
  2. #1033 - Incorrect information IN file: '.\db\tabla1.frm'

Voy a probar a poner el contenido de los archivos antigüos en los nuevos, o los archivos asi como estan :xD




Copiando los archivos no funciono, de nuevo me dice que no hay tablas... ahora voy a ver si vaciando el contenido





No, fue el mismo resultado [algo asi me temia =\ ]














no tengo malas intensiones jehehehe, es un sistema que estaba haciendo y de un dia al otro no reconocio la base de datos... quien me conoce sabe que no me gusta eso de destruir cosillas y menos entrar a lugares sin permiso :') pero ese es otro tema ...


Título: Re: Como recuerar tablas MySQL teniendo archivos frm ?
Publicado por: el-brujo en 4 Noviembre 2009, 19:59 pm
Los archivos .frm son sólo las definiciones de tabla, y tienes uno por cada tabla (tenga el motor que tenga). Para restaurar físicamente la base de datos, necesitas:

- Tablas MyISAM: Un archivo .MYD y otro .MYI para cada tabla

fuente:
http://forums.mysql.com/read.php?71,117096,117096#msg-117096


Título: Re: Como recuerar tablas MySQL teniendo archivos frm ?
Publicado por: ^Tifa^ en 4 Noviembre 2009, 20:29 pm
Perdona, se me olvido aclararte mi sugerencia para recuperar tablas y sus registros con archivos *.frm solo aplica siempre y cuando no se haya reiniciado o hecho flush a la metadata del motor MySQL  ;)  si por X o Y razon, reiniciaron el servidor o el motor de la DB despues que te ocurrio ese problemon que llevas... me temo que se perdio toda la data de la cache en memoria por ende, no podras recuperar nisiquiera la estructura de las tablas que se guardan en los *.frm   :-(   :-(  

Lo que te pego el-brujo y lo que te especifique mas arriba involucra el mismo tema (No hay forma de recuperar nisiquiera la estructura de una tabla en base solo a archivos *.frm),  la sugerencia que te di aplica porque llama toda la info de la cache de memoria, pero si reiniciaste el motor de base de datos o el servidor Linux... me temo que no hay nada que puedas hacer. Ya te lo expuse mas arriba y mira que han vuelto a postearte la notificacion.


Título: Re: Como recuerar tablas MySQL teniendo archivos frm ?
Publicado por: Azielito en 4 Noviembre 2009, 21:07 pm
ups =S si, el server se reinicio, es un server de donde desarrollo antes de subirlos a un server "dedicado" =\

Seguire buscando, pero creo que seria mejor ir a ver el codigo del sistema para ver los querys que hay para hacer la base de datos de nuevo =S



@el-brujo, tifa tiene razon [ :xD no, no estaba dudando de ti :xD ] mira:
http://forums.mysql.com/read.php?71,117096,220790#msg-220790

Pues voy a ver si con algun programa de recuperacion de archivos encuentro esos .MYD y otro .MYI :¬¬

:¬¬




Gracias por la ayuda a los dos !! :D


Título: Re: Como recuerar tablas MySQL teniendo archivos frm ?
Publicado por: ^Tifa^ en 4 Noviembre 2009, 21:13 pm
Lo siento mucho la verdad  :-(   :-( 

Te habia dicho que no se podia (porque realmente no se puede con lo que dispones) pero luego pense que si tu servidor era un hosting compartido o asi, posiblemente no habias o no se habia reiniciado el motor, por lo que si, existia la posibilidad de recuperar todo con los archivitos *.frm nada mas.... (Ya que la info el motor lo hubiese llamado desde la memoria cache  ;) ) Pero si tu mismo me confirmas que reiniciaste el motor, lo siento ya si que no hay en absoluto nada que puedas hacer  :-(   :-(   :-(  me hubiese gustado ayudarte, pero no te dire mentira no es posible solo con los archivitos *.frm y un motor reiniciado   :-(  Si al menos hubieras tenido un backup logico de esas tablas algo hubieras podido recuperar.


Título: Re: Como recuerar tablas MySQL teniendo archivos frm ?
Publicado por: Azielito en 4 Noviembre 2009, 21:24 pm
see, jahahaha, es la mala costumbre de no hacer respaldos :xD!!! por cierto, ahora me voy al dedicado a respaldar todas las bases de datos y los sistemas :xD!!!




gracias por la ayuda de nuevo :D


Título: Re: Como recuerar tablas MySQL teniendo archivos frm ?
Publicado por: дٳŦ٭ en 5 Noviembre 2009, 19:21 pm
Qué pasó we?, si pudiste? o le llamo al portero xD?

Pasale un recuperador de archivos pero con el disco en exclavo y ojalá tengas suerte.

Saludos


Título: Re: Como recuerar tablas MySQL teniendo archivos frm ?
Publicado por: ^Tifa^ en 5 Noviembre 2009, 19:27 pm
No se si serviria дٳŦ٭    :-(  MySQL guarda sus datos en la cache de memoria en tiempo real (digase intenta aprovechar la cache al maximo) en vez de ir guardando todo en disco duro. Aunque al finalizar la sección al tener el AUTOCOMMIT por defecto habilitado se guarda la data he indices en el correspondiente tablespace. 

Si el no hubiese reiniciado el motor, hubiese podido recuperar la estructura de las tablas junto a la data he indices (Aun solo con los archivos *.frm disponibles) hubiera hecho lo que le sugeri, hubiera recuperado todo desde la cache de memoria y hubiera podido aprovechar y hacer un dumpeo de esa data completa antes de reiniciar el motor (Ya que al reiniciarlo todo se hubiera limpiado de la cache como le sucedio) pero ya con un dumpeo logico de la DB restaurarlo era lo mas sencillo.

Ojala encuentres un recuperador de archivos efectivo, pero no se hasta que nivel podria servirte en recuperacion, ojala puedas resolver tu problema sin mucho esfuerzo.


Título: Re: Como recuerar tablas MySQL teniendo archivos frm ?
Publicado por: javy3001 en 20 Junio 2012, 17:18 pm
Estimados amigos, pues a mi me sucedio lo siguiente...
En un sistema que desarrolle para una empresa, el servidor se les murio por culpa de un virus... y me dijeron recuperanos el sistema, por lo que luego de leer muchos foros y la documentacion de MySQL llegue a la conlusion de que no se puede recuperar la base de datos desde archivos fisicos .frm, y que necesariamente tiene que tener archivos fisicos MYD y MYI para tal efecto (pero estos solo se generan para los tipo myISAM y no para los innoDB) por lo que luego de mucho rodeo hice lo siguiente.
Fui hasta la ubicacion donde estan todos los archivos fisicos de MySQL es decir me fui hasta "C:\Documents and Settings\All Users\Datos de programa\MySQL" y de ahi copie y me lo comprimi toda la carpeta "MySQL Server 5.5", entonces esa informacion me lo lleve al nuevo servidor que exactamente tiene la misma instalacion y la misma version de MySQL y entonces me fui a servicios de Windows y detuve el servicio de MySQL5.5 (en el nuevo servidor) y borre la carpeta "MySQL Server 5.5" y descomprimi o copie lo que traje del servidor muerto, luego fui de nuevo a servicios de Windows y reinicie el servicio de MySQL5.5 y listo ya me lo recupero toda la B.D. asi de simple.
Espero les sea de utilidad esta mi experiencia...
Solo aclararles nuevamente que las versiones de MySQL deben ser las mismas... y que no funciona con archivos (o tablas) parciales pues los indices y demas se guardan en otros archivos disceminados por toda esa carpeta "MySQL Server 5.5".


Título: Re: Como recuerar tablas MySQL teniendo archivos frm ?
Publicado por: demonstrator en 9 Julio 2013, 09:40 am
Estimados amigos, pues a mi me sucedio lo siguiente...
En un sistema que desarrolle para una empresa, el servidor se les murio por culpa de un virus... y me dijeron recuperanos el sistema, por lo que luego de leer muchos foros y la documentacion de MySQL llegue a la conlusion de que no se puede recuperar la base de datos desde archivos fisicos .frm, y que necesariamente tiene que tener archivos fisicos MYD y MYI para tal efecto (pero estos solo se generan para los tipo myISAM y no para los innoDB) por lo que luego de mucho rodeo hice lo siguiente.
Fui hasta la ubicacion donde estan todos los archivos fisicos de MySQL es decir me fui hasta "C:\Documents and Settings\All Users\Datos de programa\MySQL" y de ahi copie y me lo comprimi toda la carpeta "MySQL Server 5.5", entonces esa informacion me lo lleve al nuevo servidor que exactamente tiene la misma instalacion y la misma version de MySQL y entonces me fui a servicios de Windows y detuve el servicio de MySQL5.5 (en el nuevo servidor) y borre la carpeta "MySQL Server 5.5" y descomprimi o copie lo que traje del servidor muerto, luego fui de nuevo a servicios de Windows y reinicie el servicio de MySQL5.5 y listo ya me lo recupero toda la B.D. asi de simple.
Espero les sea de utilidad esta mi experiencia...
Solo aclararles nuevamente que las versiones de MySQL deben ser las mismas... y que no funciona con archivos (o tablas) parciales pues los indices y demas se guardan en otros archivos disceminados por toda esa carpeta "MySQL Server 5.5".
;-) ;-) ;-) ;-) ;-) ;-) gracias compadre muy buena su solucion me salvo la vida  ;-) ;-)  para todos les comento queesta solucion si funciona al menos a mi si me funciono y eso que utilizo un sistema operativo en windows 7 a 64 bits funciono perfecto pude recuperar los datos de manera integra.


Título: Re: Como recuerar tablas MySQL teniendo archivos frm ?
Publicado por: sebastuning en 12 Noviembre 2014, 20:09 pm
Hola estaba revisando la situacion y encontre una solucion, copien las tablas que no les detecta al entrar al phpmyadmin, las pegan en otro lado y las borran de la ubicacion, posteriormente reinicien todos los servicios de la base de datos, creen las tablas con los nombres iguales y solamente metan una columna, algo sencillo, despues copien y peguen las tablas nuevamente en la carpeta que habian sacado y reemplacen los archivos y reinicien los servicios al volver a entrar encontraran todo como si nada hubiese sucedido !!!!