Recuperar datos a partir de ficheros ibd y frm de la base de datos de Engine Innodb
A veces puede que tengamos la necesidad de recuperar los datos de la base de datos a partir de los ficheros frm e ibd de Mysql porque las tablas están rotas o porque se nos ha olvidado la contraseña o por cualquier otro motivo.
Tener acceso a la carpeta de la ruta donde se guardan los datos de Mysql
En Linux, normalmente la ruta es /var/lib/mysql/[tu_bbdd]
. Allí estarán los ficheros donde se guardan
los datos de la base de datos. Si la base de datos es del tipo Innodb, habrá 2 ficheros para cada tabla: frm e idb.
- frm: Es la estructura de la tabla. Contiene las columnas y sus características.
- idb: Contiene datos de la tabla.
Crear una nueva bbdd
CREATE DATABASE [nombre de la base de datos]
Crear tablas con las mismas características que las originales
Para ello, podemos usar la herramienta dbsake. Lo que pretende este paso es crear una tabla igual que la original. En este tutorial usaremos el dbsake.
curl -s http://get.dbsake.net > dbsake
chmod u+x dbsake
Sacar el DDL de una tabla frm
./dbsake frmdump [nombre del fichero frm]
Crear una nueva bbdd
Crear la tabla con el DDL sacado del comando dbsake
Parar mysql
sudo service mysql stop
Recuperar datos del fichero ibd
Copiar el fichero ibd de la tabla vieja a la ruta/var/lib/mysql/[tu_bbdd]
y seguidamente ejecutamos el siguiente comando.
alter table [nombre de la tabla] import tablespace
Reiniciar el servicio mysql
sudo service mysql restart
Pensamientos finales
Es importante asegurarnos de la seguridad del dispositivo ordenador, móvil etcétera que estamos usando. Asegurarnos de la seguridad de las aplicaciones que instalamos en nuestros dispositivos. Asegurarnos de quién está utilizando nuestro dispositivo móvil. En este tutorial, podemos ver que aunque la base de datos esté con contraseña, si tienen los ficheros frm e ibd de las bases de datos, pueden saber la información que hay en esas bases de datos.