Recuperar bases de datos MySQL desde ficheros

El motor de almacenamiento utilizado por MySQL/MariaDB hasta su versión 5.5 es MyISAM, en versiones posteriores se incorpora InnoDB.

A modo de resumen breve, dada la popularidad en entornos web en los que las consultas de lectura (SELECT) predominan sobre las de escritura (INSERT/UPDATE) sigue siendo una de las opciones más utilizadas en entornos en los que prima: velocidad, sin bloqueo de registros o tablas, sin características ACID (Atomicity, Consistency, Isolation, Durability) internas, recursos hardware limitados…

Cada una de las bases de datos generadas en su directorio contiene 3 ficheros por cada tabla con extensiones:

  • FRM: definición de la esctructura de la tabla
  • MYD: datos almacenados
  • MYI: índices

Podemos copiar desde entornos linux a windows y viceversa, con la consideración de dar los permisos suficientes de acceso sobre los ficheros.

  • En Windows: C:\ProgramData\MySQL\MySQL Server 5.X\data
  • En Linux: /var/lib/mysql/

Puedes conocer el directorio de datos realizando consulta en las variables globales:

mysql -s -N -uUSER -p information_schema -e 'SELECT Variable_Value FROM GLOBAL_VARIABLES WHERE Variable_Name = "datadir"'

O realizando la consulta sobre la variable directamente:

select @@datadir;

Una vez localizado los directorios, debemos parar el servicio MySQL, copiar la carpeta completa de nuestra base de datos en el directorio y asignar los permisos de acceso.

Los índices puedes ser regenerados o reparados mediante sentencias posteriormente:

check table nombreTabla;

repair table nombreTabla